ทำการบิดเชิงปริมาณของเทนเซอร์เชิงปริมาณ `lhs` และเทนเซอร์เชิงปริมาณ `rhs` เพื่อสร้าง 'เอาต์พุต' เชิงปริมาณ
เมื่อกำหนด `lhs` เชิงปริมาณและ `rhs` เชิงปริมาณ จะดำเนินการจุดเชิงปริมาณบน 'lhs` และ 'rhs` เพื่อสร้าง 'เอาต์พุต' เชิงปริมาณ
`lhs` และ `rhs` ต้องเป็นเทนเซอร์ที่มีอันดับเดียวกัน และตรงตามเงื่อนไขรูปร่างต่อไปนี้ - `lhs_feature` % `feature_group_count` == 0 - `lhs_feature` % `rhs_input_feature` == 0 - `lhs_feature` / `feature_group_count` == `rhs_input_feature` - `rhs_output_feature` % `feature_group_count` == 0 - `lhs_batch` % `batch_group_count` == 0 - `rhs_output_feature` % `batch_group_count` == 0
`lhs` และ `rhs` จะต้องเป็น Tensor เชิงปริมาณ โดยที่ค่าข้อมูลจะถูกหาปริมาณโดยใช้สูตร:
quantized_data = clip(original_data / scale + zero_point, quantization_min_val, quantization_max_val)
"เอาต์พุต" ก็มีการวัดปริมาณเช่นกัน โดยใช้สูตรเดียวกัน หาก `rhs` ถูกวัดปริมาณต่อเทนเซอร์ `เอาต์พุต` จะต้องถูกวัดปริมาณต่อเทนเซอร์ด้วย คลาสที่ซ้อนกัน
ระดับ | ชุดควอนตัมแบบสม่ำเสมอตัวเลือก | แอ็ตทริบิวต์ทางเลือกสำหรับ UniformQuantizedConvolution |
วิธีการสาธารณะ
เอาท์พุต <U> | เป็นเอาท์พุต () ส่งกลับค่าแฮนเดิลสัญลักษณ์ของเทนเซอร์ |
คง UniformQuantizedConvolution.Options | BatchGroupCount (BatchGroupCount แบบยาว) |
คงที่ <U, T> การหมุนวนแบบสม่ำเสมอ <U> | สร้าง ( ขอบเขตขอบเขต ตัว ดำเนิน การ <T> lhs ตัว ดำเนินการ <T> rhs ตัว ดำเนินการ <Float> lhsScales ตัว ดำเนิน การ <จำนวนเต็ม> lhsZeroPoints ตัวดำเนินการ <Float> rhsScales ตัวดำเนิน การ <จำนวนเต็ม > rhsZeroPoints ตัวดำเนินการ <Float> เอา ท์พุทสเกล ตัว ดำเนินการ <จำนวนเต็ม > outputZeroPoints, Class<U> Tout, String padding, Long lhsQuantizationMinVal, Long lhsQuantizationMaxVal, Long rhsQuantizationMinVal, Long rhsQuantizationMaxVal, Long outputQuantizationMinVal, Long outputQuantizationMaxVal, Options... ตัวเลือก) วิธีการจากโรงงานเพื่อสร้างคลาสที่รวมการดำเนินการ UniformQuantizedConvolution ใหม่ |
คง UniformQuantizedConvolution.Options | DimensionNumbers (สตริงมิติตัวเลข) |
คง UniformQuantizedConvolution.Options | explarPadding (รายการ <Long> explarPadding) |
คง UniformQuantizedConvolution.Options | คุณลักษณะGroupCount (คุณลักษณะแบบยาวGroupCount) |
คง UniformQuantizedConvolution.Options | lhsDilation (รายการ <ยาว> lhsDilation) |
คง UniformQuantizedConvolution.Options | lhsQuantizationAxis (ยาว lhsQuantizationAxis) |
เอาท์พุต <U> | เอาท์พุท () เทนเซอร์วัดปริมาณเอาต์พุตของ "Tout" ซึ่งมีอันดับเดียวกับ "lhs" และ "rhs" |
คง UniformQuantizedConvolution.Options | เอาท์พุทQuantizationAxis (เอาท์พุทยาวQuantizationAxis) |
คง UniformQuantizedConvolution.Options | rhsDilation (รายการ <ยาว> rhsDilation) |
คง UniformQuantizedConvolution.Options | rhsQuantizationAxis (ยาว rhsQuantizationAxis) |
คง UniformQuantizedConvolution.Options | windowStrides (รายการ <ยาว> windowStrides) |
วิธีการสืบทอด
วิธีการสาธารณะ
เอาท์พุท สาธารณะ <U> asOutput ()
ส่งกลับค่าแฮนเดิลสัญลักษณ์ของเทนเซอร์
อินพุตสำหรับการดำเนินการ TensorFlow คือเอาต์พุตของการดำเนินการ TensorFlow อื่น วิธีการนี้ใช้เพื่อรับหมายเลขอ้างอิงสัญลักษณ์ที่แสดงถึงการคำนวณอินพุต
สาธารณะ คง UniformQuantizedConvolution.Options
พารามิเตอร์
ชุดกลุ่มนับ | จำนวนกลุ่มแบทช์ ใช้สำหรับตัวกรองแบบกลุ่ม ต้องเป็นตัวหารของ `output_feature` |
---|
สาธารณะคง UniformQuantizedConvolution <U> สร้าง (ขอบเขต ขอบเขต , ตัวดำเนินการ <T> lhs, ตัวดำเนินการ <T> rhs, ตัวดำเนิน การ <Float> lhsScales, ตัวดำเนิน การ <Integer> lhsZeroPoints, ตัวดำเนิน การ <Float> rhsScales, ตัว ดำเนินการ <Integer> rhsZeroPoints, ตัวดำเนินการ <Float > เอาต์พุตสเกล, ตัวดำเนินการ <จำนวนเต็ม> เอาต์พุตศูนย์พอยต์, คลาส<U> Tout, การขยายสตริง, ยาว lhsQuantizationMinVal, ยาว lhsQuantizationMaxVal, ยาว rhsQuantizationMinVal, ยาว rhsQuantizationMaxVal, ยาว outputQuantizationMinVal, ยาว outputQuantizationMaxVal, ตัวเลือก... ตัวเลือก)
วิธีการจากโรงงานเพื่อสร้างคลาสที่รวมการดำเนินการ UniformQuantizedConvolution ใหม่
พารามิเตอร์
ขอบเขต | ขอบเขตปัจจุบัน |
---|---|
นะ | ต้องเป็นเทนเซอร์เชิงปริมาณ อันดับ >= 3 |
Rhs | ต้องเป็นเทนเซอร์เชิงปริมาณ ซึ่งมีอันดับเดียวกับ "lhs" |
lhsScales | ค่าทศนิยมที่ใช้เป็นปัจจัยมาตราส่วนเมื่อหาปริมาณข้อมูลต้นฉบับที่ `lhs` เป็นตัวแทน ต้องเป็นสเกลาร์ `Tensor` (`lhs` รองรับเฉพาะการหาปริมาณต่อเทนเซอร์เท่านั้น) |
lhsZeroPoints | ค่า int32 ที่ใช้เป็นศูนย์เมื่อหาปริมาณข้อมูลต้นฉบับที่แสดงถึง "lhs" สภาพรูปร่างเหมือนกับ `lhs_scales` |
rhsScales | ค่าทศนิยมที่ใช้เป็นปัจจัยมาตราส่วนเมื่อหาปริมาณข้อมูลต้นฉบับที่ `rhs` เป็นตัวแทน ต้องเป็นสเกลาร์ `Tensor` สำหรับการหาปริมาณต่อเทนเซอร์ หรือ 1D `Tensor` ขนาด `rhs.dim_size(kernel_output_feature_ dimensions)` สำหรับการหาปริมาณต่อแชนเนล |
rhsZeroPoints | ค่า int32 ที่ใช้เป็นศูนย์เมื่อหาปริมาณข้อมูลต้นฉบับที่แสดงถึง "rhs" สภาพรูปร่างเหมือนกับ `rhs_scales` |
เอาท์พุทสเกล | ค่าทศนิยมที่จะใช้เป็นปัจจัยมาตราส่วนเมื่อหาปริมาณข้อมูลต้นฉบับที่ "เอาต์พุต" เป็นตัวแทน ต้องเป็นสเกลาร์ `Tensor` สำหรับการหาปริมาณต่อเทนเซอร์ หรือ 1D `Tensor` ขนาด `rhs.dim_size(kernel_output_feature_size)` - ซึ่งเท่ากับ `output.dim_size(output_feature_size)` สำหรับการหาปริมาณต่อช่องสัญญาณ หาก `rhs` เป็นการหาปริมาณต่อเทนเซอร์ เอาต์พุตจะต้องถูกวัดปริมาณต่อเทนเซอร์ด้วย ซึ่งหมายความว่าหาก `rhs_scales` และ `rhs_zero_points` เป็น `Tensor` แบบสเกลาร์ `output_scales` และ `output_zero_points` ก็ต้องเป็น `Tensor` แบบสเกลาร์เช่นกัน |
เอาท์พุตZeroPoints | ค่า int32 ที่ใช้เป็นศูนย์เมื่อหาปริมาณข้อมูลต้นฉบับที่เอาต์พุตเป็นตัวแทน สภาพรูปร่างเหมือนกับ `output_scales` |
โน้มน้าว | ประเภทของ "เอาต์พุต" "เทนเซอร์" |
ช่องว่างภายใน | สตริงจาก: `"SAME"`, `"VALID"` หรือ `"EXPLICIT"` ซึ่งระบุประเภทของอัลกอริธึมการเติมที่จะใช้ |
lhsQuantizationMinVal | ค่าต่ำสุดของข้อมูลเชิงปริมาณที่จัดเก็บไว้ใน "lhs" ตัวอย่างเช่น หาก `Tin` คือ `qint8` ค่านี้จะต้องตั้งค่าเป็น -127 หากเป็นช่วงที่แคบหรือ -128 หากไม่ใช่ |
lhsQuantizationMaxVal | ค่าสูงสุดของข้อมูลเชิงปริมาณที่จัดเก็บไว้ใน "lhs" ตัวอย่างเช่น หาก `Tin` คือ `qint8` ต้องตั้งค่าเป็น 127 |
rhsQuantizationMinVal | ค่าต่ำสุดของข้อมูลเชิงปริมาณที่จัดเก็บไว้ใน "rhs" ตัวอย่างเช่น หาก `Tin` คือ `qint8` ค่านี้จะต้องตั้งค่าเป็น -127 หากเป็นช่วงที่แคบหรือ -128 หากไม่ใช่ |
rhsQuantizationMaxVal | ค่าสูงสุดของข้อมูลเชิงปริมาณที่จัดเก็บไว้ใน `rhs` ตัวอย่างเช่น หาก `Tin` คือ `qint8` ต้องตั้งค่าเป็น 127 |
เอาท์พุทปริมาณ MinVal | ค่าต่ำสุดของข้อมูลเชิงปริมาณที่จัดเก็บไว้ใน "เอาต์พุต" ตัวอย่างเช่น หาก `Tout` คือ `qint8` ค่านี้จะต้องตั้งค่าเป็น -127 หากเป็นช่วงที่แคบหรือ -128 หากไม่ใช่ |
เอาท์พุทปริมาณMaxVal | ค่าสูงสุดของข้อมูลเชิงปริมาณที่จัดเก็บไว้ใน "เอาต์พุต" ตัวอย่างเช่น หาก `Tout` คือ `qint8` จะต้องตั้งค่าเป็น 127 |
ตัวเลือก | มีค่าแอตทริบิวต์ทางเลือก |
การส่งคืน
- อินสแตนซ์ใหม่ของ UniformQuantizedConvolution
สาธารณะคง UniformQuantizedConvolution.Options มิติตัวเลข (สตริงมิติตัวเลข)
พารามิเตอร์
มิติตัวเลข | โครงสร้างของข้อมูลมิติสำหรับปฏิบัติการบิด ต้องเป็นสตริงว่าง (ค่าเริ่มต้น) หรือสตริงต่อเนื่องของโปรโต `tensorflow.UniformQuantizedConvolutionDimensionNumbersAttr` หากสตริงว่าง ค่าเริ่มต้นคือ `("NCHW", "OIHW", "NCHW")` (สำหรับการบิด 2D) |
---|
สาธารณะคง UniformQuantizedConvolution.Options ชัดเจนแพดดิ้ง (รายการ <ยาว> ชัดเจนแพดดิ้ง)
พารามิเตอร์
ชัดเจนPadding | หาก `padding` เป็น `"EXPLICIT"` จะต้องตั้งค่าเป็นรายการที่ระบุ padding ที่ชัดเจนที่จุดเริ่มต้นและจุดสิ้นสุดของมิติเชิงพื้นที่ `lhs` แต่ละรายการ มิฉะนั้น ข้อมูลนี้จะต้องว่างเปล่า (หากใช้) จะต้องเป็นรายการขนาด `2 * (จำนวนมิติเชิงพื้นที่ lhs)` โดยที่ `(explicit_padding[2 * i], explicit_padding[2 * i + 1])` หมายถึง `(start_padding, end_padding) `ของ `มิติเชิงพื้นที่[i]` |
---|
สาธารณะคงที่ UniformQuantizedConvolution.Options คุณลักษณะGroupCount (คุณลักษณะแบบยาวGroupCount)
พารามิเตอร์
คุณลักษณะ GroupCount | จำนวนกลุ่มคุณลักษณะ ใช้สำหรับการโน้มน้าวใจแบบกลุ่ม ต้องเป็นตัวหารของทั้ง `lhs_feature` และ `output_feature` |
---|
สาธารณะคง UniformQuantizedConvolution.Options lhsDilation (รายการ <ยาว> lhsDilation)
พารามิเตอร์
lhsการขยาย | ปัจจัยการขยายที่จะใช้ในแต่ละมิติเชิงพื้นที่ของ `lhs` ต้องเป็นรายการว่าง (ค่าเริ่มต้น) หรือรายการขนาด (จำนวนมิติเชิงพื้นที่ `lhs`) หากรายการว่างเปล่า การขยายมิติเชิงพื้นที่ `lhs` แต่ละรายการจะถูกตั้งค่าเป็น 1 |
---|
สาธารณะคงที่ UniformQuantizedConvolution.Options lhsQuantizationAxis (ยาว lhsQuantizationAxis)
พารามิเตอร์
lhsQuantizationAxis | ระบุดัชนีขนาดของเทนเซอร์ที่ใช้การหาปริมาณต่อแกนสำหรับชิ้นตามขนาดนั้น หากตั้งค่าเป็น -1 (ค่าเริ่มต้น) จะบ่งชี้ถึงการหาปริมาณต่อเทนเซอร์ สำหรับ `lhs` รองรับเฉพาะการหาปริมาณต่อเทนเซอร์เท่านั้น ดังนั้นจึงต้องตั้งค่าเป็น -1 ค่าอื่นจะทำให้เกิดข้อผิดพลาดในการก่อสร้าง OpKernel |
---|
เอาท์พุท สาธารณะ <U> เอาท์พุท ()
เทนเซอร์วัดปริมาณเอาต์พุตของ "Tout" ซึ่งมีอันดับเดียวกับ "lhs" และ "rhs"
สาธารณะคงที่ UniformQuantizedConvolution.Options เอาท์พุท QuantizationAxis (เอาท์พุทยาว QuantizationAxis)
พารามิเตอร์
เอาท์พุท QuantizationAxis | ระบุดัชนีขนาดของเทนเซอร์ที่ใช้การหาปริมาณต่อแกนสำหรับชิ้นตามขนาดนั้น หากตั้งค่าเป็น -1 (ค่าเริ่มต้น) จะบ่งชี้ถึงการหาปริมาณต่อเทนเซอร์ สำหรับ `เอาต์พุต` รองรับเฉพาะการหาปริมาณต่อเทนเซอร์หรือการหาปริมาณต่อแชนเนลตาม `output_feature_daiment` เท่านั้น ดังนั้นจึงต้องตั้งค่าเป็น -1 หรือ `size_numbers.output_feature_daiment` ค่าอื่นจะทำให้เกิดข้อผิดพลาดในการก่อสร้าง OpKernel |
---|
สาธารณะคง UniformQuantizedConvolution.Options rhsDilation (รายการ <Long> rhsDilation)
พารามิเตอร์
rhsการขยาย | ปัจจัยการขยายที่จะใช้ในแต่ละมิติเชิงพื้นที่ของ `rhs` ต้องเป็นรายการว่าง (ค่าเริ่มต้น) หรือรายการขนาด (จำนวนมิติเชิงพื้นที่ `rhs`) หากรายการว่างเปล่า การขยายมิติเชิงพื้นที่ `rhs` แต่ละรายการจะถูกตั้งค่าเป็น 1 |
---|
สาธารณะคง UniformQuantizedConvolution.Options rhsQuantizationAxis (ยาว rhsQuantizationAxis)
พารามิเตอร์
rhsQuantizationAxis | ระบุดัชนีขนาดของเทนเซอร์ที่ใช้การหาปริมาณต่อแกนสำหรับชิ้นตามขนาดนั้น หากตั้งค่าเป็น -1 (ค่าเริ่มต้น) จะบ่งชี้ถึงการหาปริมาณต่อเทนเซอร์ สำหรับ `rhs` รองรับเฉพาะการหาปริมาณต่อเทนเซอร์หรือการหาปริมาณต่อช่องสัญญาณตาม `kernel_output_feature_size` เท่านั้น ดังนั้นจึงต้องตั้งค่าเป็น -1 หรือ `size_numbers.kernel_output_feature_daiment` ค่าอื่นจะทำให้เกิดข้อผิดพลาดในการก่อสร้าง OpKernel |
---|
สาธารณะคง UniformQuantizedConvolution.Options windowStrides (รายการ <Long> windowStrides)
พารามิเตอร์
windowStrides | ก้าวย่างของหน้าต่างบานเลื่อนสำหรับแต่ละมิติเชิงพื้นที่ของ `lhs` ต้องเป็นรายการว่าง (ค่าเริ่มต้น) หรือรายการขนาด (จำนวนมิติเชิงพื้นที่) หากมีรายการว่าง การก้าวกระโดดสำหรับแต่ละมิติเชิงพื้นที่จะถูกตั้งค่าเป็น 1 |
---|