簡體   English   中英

TensorFlowLite中全整數量化方法中的操作類型

[英]Operation type in full integer quantization method in TensorFlowLite

我想在預訓練模型(LeNet5)上使用 TensorFlow 模型優化包應用訓練后量化(全整數)。 https://www.tensorflow.org/model_optimization/guide/quantization/post_training

model = Sequential()
model._name = 'LeNet5'
model.add(tf.keras.layers.InputLayer(input_shape=(28, 28)))
model.add(tf.keras.layers.Reshape(target_shape=(28, 28, 1)))
model.add(
    Conv2D(6, kernel_size=(5, 5), strides=(1, 1), activation='tanh', padding='same'))

model.add(AveragePooling2D(pool_size=(2, 2), strides=(2, 2), padding='valid'))

model.add(Conv2D(16, kernel_size=(5, 5), strides=(1, 1), activation='tanh', padding='valid'))

model.add(AveragePooling2D(pool_size=(2, 2), strides=(2, 2), padding='valid'))

model.add(Flatten())

model.add(Dense(120, activation='tanh'))

model.add(Dense(84, activation='tanh'))

model.add(Dense(10, activation='softmax'))

並使用此代碼,我應用了全整數訓練后量化:

     mnist_train, _ = tf.keras.datasets.mnist.load_data()
     images = tf.cast(mnist_train[0], tf.float32) / 255.0
     mnist_ds = tf.data.Dataset.from_tensor_slices((images)).batch(1)
     def representative_data_gen():
       for input_value in mnist_ds.take(100):
         yield [input_value]

    converter.optimizations = [tf.lite.Optimize.OPTIMIZE_FOR_SIZE]
    converter.representative_dataset = representative_data_gen

    converter.allow_custom_ops = True
    converter.target_spec.supported_types = [tf.int8]
    converter.inference_input_type = tf.int8
    converter.inference_output_type = tf.int8

    full_integer_quantization_model = converter.convert()
    open("tflite_model.tflite", "wb").write(full_integer_quantization_model)

它在准確性方面工作得很好,但是當我嘗試打印每一層的數據類型(操作,如 conv、activation、bias)時,我看到一些操作是 int32 而不是 int8。

我不知道為什么?

TFLite 如何決定在 int32 和 int8 中執行一些操作?

是否可以在 TFLite 中控制此功能(是否可以選擇)並將所有操作作為 int8 執行?

你看過這個https://www.tensorflow.org/lite/performance/quantization_spec了嗎?

偏置值具有 32 位寬度

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM