DataLayouts

DataLayouts คลาสสุดท้ายสาธารณะ

แสดงอินสแตนซ์ DataLayout ของรูปแบบข้อมูลที่ใช้บ่อยในการคำนวณพีชคณิตเชิงเส้น

ตัวอย่างการใช้งาน:

// Storing boolean values in a ByteDataBuffer
 BooleanDataBuffer boolBuffer = DataLayouts.BOOL.applyTo(byteDataBuffer);

 // Allocating a new buffer of 256 half floats
 FloatDataBuffer halfBuffer = DataLayouts.FLOAT16.applyTo(DataBuffers.ofShorts(256 * DataLayouts.FLOAT16.scale());
 

เขตข้อมูล

FloatDataLayout สุดท้ายแบบคงที่สาธารณะ < ShortDataBuffer > BFLOAT16 โครงร่างข้อมูลสำหรับการแปลง bfloats 16 บิตเป็น/จากค่าแบบสั้น
BooleanDataLayout สุดท้ายแบบคงที่สาธารณะ <ByteDataBuffer> บูล เค้าโครงข้อมูลสำหรับการแปลงบูลีนเป็น/จากค่าไบต์
FloatDataLayout สุดท้ายแบบคงที่สาธารณะ < ShortDataBuffer > ลอย16 โครงร่างข้อมูลสำหรับการแปลงครึ่งโฟลต 16 บิตเป็น/จากค่าแบบสั้น

คอนสตรัคชั่นสาธารณะ

วิธีการสาธารณะ

DataLayout แบบคงที่ < DataBuffer <ไบต์ []>, สตริง>
ofStrings (ชุดอักขระชุดอักขระ)
สร้างเค้าโครงข้อมูลสำหรับการแปลงสตริงเป็น/จากลำดับไบต์

วิธีการสืบทอด

เขตข้อมูล

FloatDataLayout สุดท้ายแบบคงที่สาธารณะ < ShortDataBuffer > BFLOAT16

โครงร่างข้อมูลสำหรับการแปลง bfloats 16 บิตเป็น/จากค่าแบบสั้น

รูปแบบนี้เคยเป็นรูปแบบเฉพาะสำหรับ TensorFlow แต่ตอนนี้มีการนำไปใช้ในวงกว้างมากขึ้นในด้านแมชชีนเลิร์นนิง ได้รับการปรับให้เหมาะสมสำหรับการแปลงที่รวดเร็วด้วยจุดลอยตัว 32 บิตที่มีความแม่นยำเพียงจุดเดียว โดยเพียงแค่เปลี่ยนค่าและตัดทอนแมนทิสซาให้เหลือเพียง 7 บิต

ดังนั้น นี่จึงเป็นการสูญเสียความแม่นยำในส่วนของเศษส่วนเมื่อเปรียบเทียบกับข้อมูลจำเพาะจุดลอยตัวครึ่งความแม่นยำของ IEEE-754 (ดู FLOAT16 แต่มีค่าที่เป็นไปได้ที่มากกว่าในทั้งส่วน เนื่องจากจะรักษาเลขชี้กำลัง 8 บิตไว้และใช้ อคติเดียวกัน (เช่น ช่วงสัมบูรณ์ที่สูงกว่า 0 ประมาณ [10 -40 , 3.39 × 10 38 ]

CPU บางตัวรองรับรูปแบบ bfloat16 เพื่อประสิทธิภาพที่ดีขึ้น

BooleanDataLayout สุดท้ายแบบคงที่สาธารณะ < ByteDataBuffer > BOOL

เค้าโครงข้อมูลสำหรับการแปลงบูลีนเป็น/จากค่าไบต์

เนื่องจากไม่มีบัฟเฟอร์บูลีน Java NIO โครงร่างนี้จึงมีประโยชน์อย่างยิ่งสำหรับการจับคู่ค่าบูลีนกับบัฟเฟอร์ไบต์มาตรฐาน การแปลงระหว่างบูลีนและไบต์จำเป็นต้องมีการคัดเลือกประเภทที่ชัดเจน

FloatDataLayout สุดท้ายแบบคงที่สาธารณะ < ShortDataBuffer > FLOAT16

โครงร่างข้อมูลสำหรับการแปลงครึ่งโฟลต 16 บิตเป็น/จากค่าแบบสั้น

Half Float จะถูกจัดเก็บไว้ในหน่วยความจำตามข้อกำหนดเฉพาะจุดลอยตัวแบบ Half-Precision ของ IEEE-754 และจะถูกแปลงเป็น/จาก Float 32 บิตในพื้นที่ผู้ใช้

มีการสูญเสียความแม่นยำที่อาจเกิดขึ้นเมื่อแปลงโฟลตเดี่ยว (32 บิต) เป็นฮาล์ฟโฟลต (16 บิต) ช่วงสัมบูรณ์ของค่าที่สูงกว่า 0 สำหรับการลอยครึ่งจะอยู่ที่ประมาณ [5.96 × 10 -8 , 6.55 × 10 4 ] และส่วนทศนิยมจะถูกปัดเศษขึ้นเป็นแมนทิสซา 10 บิต

โดยทั่วไป การคำนวณแบบ half float จะทำงานได้ดีกว่าบน GPU เนื่องจากโดยทั่วไปแล้ว CPU ไม่รองรับรูปแบบนี้โดยกำเนิด

คอนสตรัคชั่นสาธารณะ

DataLayouts สาธารณะ ()

วิธีการสาธารณะ

DataLayout แบบคงที่สาธารณะ < DataBuffer <ไบต์ []>, String> ofStrings (ชุดอักขระ)

สร้างเค้าโครงข้อมูลสำหรับการแปลงสตริงเป็น/จากลำดับไบต์

เค้าโครงนี้ต้องใช้ charset ในพารามิเตอร์เพื่อระบุวิธีเข้ารหัส/ถอดรหัสสตริงเป็นลำดับไบต์ ดังนั้นอินสแตนซ์เค้าโครงใหม่จะถูกส่งกลับเสมอ

พารามิเตอร์
ชุดอักขระ ชุดอักขระที่จะใช้
การส่งคืน
  • เค้าโครงสตริงใหม่