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