我有一个用Tensorflow.Keras编写的自定义神经网络,并将硬切换功能用作激活(如MobileNetV3论文中所使用):
实现方式:
def swish(x):
return x * tf.nn.relu6(x+3) / 6
我正在运行量化意识培训,并在最后编写一个protobuf文件。然后,我使用以下代码转换为tflite(并将其最终部署在EdgeTPU上):
tflite_convert --output_file test.tflite --graph_def_file=test.pb --inference_type=QUANTIZED_UINT8 --input_arrays=input_1 --output_arrays=conv2d_3/Sigmoid --mean_values=0 --std_dev_values=255 --default_ranges_min=0 --default_ranges_max=6
这很完美,当我不除以6时,但是当我除以6时,我收到此错误:
Unimplemented: this graph contains an operator of type Div for which the quantized form is not yet implemented.
我昨晚使用TF 1.14进行训练,并使用TF 1.15进行了转换,以转换为TFLITE;我正在努力使TF 2.x能够解决某些奇怪的HDF5不兼容问题,但是如果有人知道如何规避此问题,那就太好了……谢谢!
最佳答案
由于它是一个常数除法,因此可以乘以(近似)逆。
def swish(x):
return x * tf.nn.relu6(x+3) * 0.16666667