Wykonaj skwantowany splot skwantowanego tensora „lhs” i skwantowanego tensora „rhs”. aby uzyskać skwantowany „wyjście”.
Biorąc pod uwagę skwantowane „lhs” i skwantowane „rhs”, wykonuje skwantowaną kropkę na „lhs” i „rhs”, aby uzyskać skwantowany „wyjście”.
„lhs” i „rhs” muszą być tensorami tej samej rangi i spełniać następujące warunki kształtu. - `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_partia` % `batch_group_count` == 0 - `rhs_output_feature` % `batch_group_count` == 0
„lhs” i „rhs” muszą być skwantowane Tensor, gdzie wartość danych jest kwantyzowana przy użyciu wzoru:
quantized_data = clip(original_data / scale + zero_point, quantization_min_val, quantization_max_val)
„Wyjście” jest również kwantowane przy użyciu tego samego wzoru. Jeśli „rhs” jest kwantowane na tensor, „wyjście” musi być również kwantowane na tensor. Klasy zagnieżdżone
klasa | UniformQuantizedConvolution.Options | Opcjonalne atrybuty dla UniformQuantizedConvolution |
Metody publiczne
Wyjście <U> | jako wyjście () Zwraca symboliczny uchwyt tensora. |
statyczne UniformQuantizedConvolution.Options | batchGroupCount (długa partiaGroupCount) |
statyczny <U, T> UniformQuantizedConvolution <U> | utwórz ( Zakres zasięgu, Operand <T> lhs, Operand <T> rhs, Operand <Float> lhsScales, Operand <Integer> lhsZeroPoints, Operand <Float> rhsScales, Operand <Integer> rhsZeroPoints, Operand <Float> OutputScales, Operand <Integer > wyjścieZeroPoints, Class<U> Tout, dopełnienie ciągu, długie lhsQuantizationMinVal, długie lhsQuantizationMaxVal, długie rhsQuantizationMinVal, długie rhsQuantizationMaxVal, długie wyjścieQuantizationMinVal, długie wyjścieQuantizationMaxVal, opcje... opcje) Metoda fabryczna służąca do tworzenia klasy opakowującej nową operację UniformQuantizedConvolution. |
statyczne UniformQuantizedConvolution.Options | wymiarNumbers (Ciąg wymiarówNumbers) |
statyczne UniformQuantizedConvolution.Options | jawnePadding (List<Long> jawnePadding) |
statyczne UniformQuantizedConvolution.Options | featureGroupCount (długie featureGroupCount) |
statyczne UniformQuantizedConvolution.Options | lhsDilation (List<Long> lhsDilation) |
statyczne UniformQuantizedConvolution.Options | lewa oś kwantyzacji (długa oś kwantyzacji lhs) |
Wyjście <U> | wyjście () Wyjściowy skwantowany tensor „Tout”, taki sam stopień jak „lhs” i „rhs”. |
statyczne UniformQuantizedConvolution.Options | wyjścieQuantizationAxis (Długie wyjścieQuantizationAxis) |
statyczne UniformQuantizedConvolution.Options | rhsDilation (List<Long> rhsDilation) |
statyczne UniformQuantizedConvolution.Options | rhsQuantizationAxis (długa rhsQuantizationAxis) |
statyczne UniformQuantizedConvolution.Options | windowStrides (List<Long> windowStrides) |
Metody dziedziczone
Metody publiczne
publiczne wyjście <U> asOutput ()
Zwraca symboliczny uchwyt tensora.
Dane wejściowe operacji TensorFlow są wynikami innej operacji TensorFlow. Ta metoda służy do uzyskania symbolicznego uchwytu reprezentującego obliczenia danych wejściowych.
publiczny statyczny UniformQuantizedConvolution.OptionsbatchGroupCount ( długie partieGroupCount)
Parametry
liczba grup wsadowych | Liczba grup wsadowych. Używany do filtrów zgrupowanych. Musi być dzielnikiem „cechy_wyjściowej”. |
---|
public static UniformQuantizedConvolution <U> create ( Zakres zasięgu, Operand <T> lhs, Operand <T> rhs, Operand <Float> lhsScales, Operand <Integer> lhsZeroPoints, Operand <Float> rhsScales, Operand <Integer> rhsZeroPoints, Operand <Float > wyjścieScales, Operand <Integer> wyjścieZeroPoints, Klasa<U> Tout, Dopełnienie ciągu, Long lhsQuantizationMinVal, Long lhsQuantizationMaxVal, Long rhsQuantizationMinVal, Long rhsQuantizationMaxVal, Długie wyjścieQuantizationMinVal, Długie wyjścieQuantizationMaxVal, Opcje... opcje)
Metoda fabryczna służąca do tworzenia klasy opakowującej nową operację UniformQuantizedConvolution.
Parametry
zakres | aktualny zakres |
---|---|
lewy | Musi to być skwantowany tensor, stopień >= 3. |
prawa strona | Musi to być skwantowany tensor o tej samej randze co „lhs”. |
lhsSkale | Wartości zmiennoprzecinkowe używane jako współczynniki skali podczas kwantyzacji oryginalnych danych reprezentowanych przez „lhs”. Musi to być skalarny „Tensor” („lhs” obsługuje tylko kwantyzację na tensor). |
lhsZeroPunktów | Wartości int32 używane jako punkty zerowe podczas kwantyzacji oryginalnych danych reprezentowanych przez „lhs”. Taki sam warunek kształtu jak `lhs_scales`. |
rhsSkale | Wartości zmiennoprzecinkowe używane jako współczynniki skali podczas kwantyzacji oryginalnych danych reprezentowanych przez „rhs”. Musi to być skalarny „Tensor” w przypadku kwantyzacji na tensor lub 1D „Tensor” o rozmiarze „rhs.dim_size(kernel_output_feature_dimension)” w przypadku kwantyzacji na kanał. |
rhsZeroPunktów | Wartości int32 używane jako punkty zerowe podczas kwantyzacji oryginalnych danych reprezentowanych przez „rhs”. Taki sam warunek kształtu jak `rhs_scales`. |
Skale wyjściowe | Wartości zmiennoprzecinkowe używane jako współczynniki skali podczas kwantyzacji oryginalnych danych reprezentowanych przez „wyjście”. Musi to być skalarny „Tensor” w przypadku kwantyzacji na tensor lub 1D „Tensor” o rozmiarze „rhs.dim_size(kernel_output_feature_dimension)” – który jest równy „output.dim_size(output_feature_dimension)” w przypadku kwantyzacji na kanał. Jeśli „rhs” jest kwantyzowane według tensora, sygnał wyjściowy musi być również skwantowany według tensora. Oznacza to, że jeśli `rhs_scales` i `rhs_zero_points` są skalarne, `tensor`s, `output_scales` i `output_zero_points` muszą być również skalarne `tensor`. |
wyjścieZeroPoints | Wartości int32 używane jako punkty zerowe podczas kwantyzacji oryginalnych danych reprezentowanych przez dane wyjściowe. Taki sam warunek kształtu jak `output_scales`. |
Naganiacz | Typ `wyjścia` `Tensor`. |
wyściółka | ciąg znaków z: `"SAME"`, `"VALID"` lub `"EXPLICIT"`, wskazujący typ algorytmu dopełniania, który ma zostać użyty. |
lhsKwantyzacjaMinVal | Minimalna wartość skwantowanych danych przechowywanych w „lhs”. Na przykład, jeśli `Tin` to `qint8`, należy to ustawić na -127, jeśli kwantyzowany jest wąski zakres, lub -128, jeśli nie. |
lhsKwantyzacjaMaxVal | Maksymalna wartość skwantowanych danych przechowywanych w „lhs”. Na przykład, jeśli `Tin` to `qint8`, należy to ustawić na 127. |
rhsKwantyzacjaMinVal | Minimalna wartość skwantowanych danych przechowywanych w „rhs”. Na przykład, jeśli `Tin` to `qint8`, należy to ustawić na -127, jeśli kwantyzowany jest wąski zakres, lub -128, jeśli nie. |
rhsKwantyzacjaMaxVal | Maksymalna wartość skwantowanych danych przechowywanych w „rhs”. Na przykład, jeśli `Tin` to `qint8`, należy to ustawić na 127. |
wyjścieKwantyzacjaMinVal | Minimalna wartość skwantowanych danych przechowywanych w „wyjściu”. Na przykład, jeśli `Tout` to `qint8`, należy to ustawić na -127, jeśli kwantyzowany jest wąski zakres, lub -128, jeśli nie. |
wyjścieKwantyzacjaMaxVal | Maksymalna wartość skwantowanych danych przechowywanych w „wyjściu”. Na przykład, jeśli `Tout` to `qint8`, należy to ustawić na 127. |
opcje | przenosi opcjonalne wartości atrybutów |
Powroty
- nowa instancja UniformQuantizedConvolution
public static UniformQuantizedConvolution.Options DimensionNumbers (String DimensionNumbers)
Parametry
numery wymiarów | Struktura informacji o wymiarach splotu op. Musi to być pusty ciąg znaków (domyślnie) lub serializowany ciąg znaków `tensorflow.UniformQuantizedConvolutionDimensionNumbersAttr` proto. Jeśli łańcuch jest pusty, wartością domyślną jest `("NCHW", "OIHW", "NCHW")` (dla splotu 2D). |
---|
public static UniformQuantizedConvolution.Options jawnePadding (List<Long> jawnePadding)
Parametry
wyraźne dopełnienie | Jeśli „dopełnienie” to „„WYJAŚNIENIE””, musi być ustawione jako lista wskazująca wyraźne dopełnienie na początku i na końcu każdego wymiaru przestrzennego „lewej strony”. W przeciwnym razie to pole musi być puste. (Jeśli jest używany) Musi być listą rozmiarów `2 * (liczba wymiarów przestrzennych lewej strony)`, gdzie `(explicit_padding[2 * i], jawne_padding[2 * i + 1])` wskazuje `(start_padding, end_padding) ` z `wymiarów_przestrzennych[i]`. |
---|
public static UniformQuantizedConvolution.Options featureGroupCount (długie featureGroupCount)
Parametry
liczba grup funkcji | Liczba grup funkcji. Używany do zgrupowanych splotów. Musi być dzielnikiem zarówno „lhs_feature”, jak i „output_feature”. |
---|
public static UniformQuantizedConvolution.Options lhsDilation (List<Long> lhsDilation)
Parametry
lhsRozwarcie | Współczynnik dylatacji stosowany w każdym wymiarze przestrzennym „lewej oś”. Musi to być pusta lista (domyślna) lub lista rozmiarów (liczba wymiarów przestrzennych `lhs`). Jeśli lista jest pusta, dylatacja dla każdego wymiaru przestrzennego „lhs” jest ustawiona na 1. |
---|
public static UniformQuantizedConvolution.Options lhsQuantizationAxis (długa lhsQuantizationAxis)
Parametry
lhsOś kwantyzacji | Wskazuje indeks wymiaru tensora, w przypadku którego stosowana jest kwantyzacja per-osiowa dla wycinków wzdłuż tego wymiaru. Jeśli ustawione na -1 (domyślnie), oznacza to kwantyzację na tensor. W przypadku „lhs” obsługiwana jest tylko kwantyzacja na tensor. Dlatego należy to ustawić na -1. Inne wartości spowodują błąd w konstrukcji OpKernel. |
---|
publiczne wyjście <U> wyjście ()
Wyjściowy skwantowany tensor „Tout”, taki sam stopień jak „lhs” i „rhs”.
public static UniformQuantizedConvolution.Options OutputQuantizationAxis (Długie wyjścieQuantizationAxis)
Parametry
wyjścieQuantizationAxis | Wskazuje indeks wymiaru tensora, w przypadku którego stosowana jest kwantyzacja per-osiowa dla wycinków wzdłuż tego wymiaru. Jeśli ustawione na -1 (domyślnie), oznacza to kwantyzację na tensor. W przypadku „wyjścia” obsługiwana jest tylko kwantyzacja na tensor lub na kanał wzdłuż „wymiaru_cechy_wyjściowej”. Zatem musi to być ustawione na -1 lub `dimension_numbers.output_feature_dimension`. Inne wartości spowodują błąd w konstrukcji OpKernel. |
---|
public static UniformQuantizedConvolution.Options rhsDilation (List<Long> rhsDilation)
Parametry
rhsRozwarcie | Współczynnik dylatacji stosowany w każdym wymiarze przestrzennym „rhs”. Musi to być pusta lista (domyślna) lub lista rozmiarów (liczba wymiarów przestrzennych „rhs”). Jeśli lista jest pusta, dylatacja dla każdego wymiaru przestrzennego „rhs” jest ustawiona na 1. |
---|
public static UniformQuantizedConvolution.Options rhsQuantizationAxis (długi rhsQuantizationAxis)
Parametry
rhsOś kwantyzacji | Wskazuje indeks wymiaru tensora, w przypadku którego stosowana jest kwantyzacja per-osiowa dla wycinków wzdłuż tego wymiaru. Jeśli ustawione na -1 (domyślnie), oznacza to kwantyzację na tensor. W przypadku „rhs” obsługiwana jest tylko kwantyzacja na tensor lub na kanał wzdłuż „kernel_output_feature_dimension”. Zatem musi to być ustawione na -1 lub `dimension_numbers.kernel_output_feature_dimension`. Inne wartości spowodują błąd w konstrukcji OpKernel. |
---|
public static UniformQuantizedConvolution.Options windowStrides (List<Long> windowStrides)
Parametry
OknoStrides | Krok przesuwanego okna dla każdego wymiaru przestrzennego „lewej oś”. Musi to być pusta lista (domyślnie) lub lista rozmiarów (liczba wymiarów przestrzennych). Jeśli podano pustą listę, krok dla każdego wymiaru przestrzennego jest ustawiany na 1. |
---|