python - 对 TFLite 的强烈要求
问题描述
我有一个用 Tensorflow.Keras 编写的自定义神经网络,并将 hard-swish 函数用作激活(如 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
推荐阅读
- reactjs - 嵌套异步 axios 调用只返回一个对象
- python - Python - “gray28”颜色转换为matplotlib颜色
- javascript - 成功登录后如何将用户重定向到外部登录页面并获取响应代码
- sql - 用 case 查询 when
- python - 我的 Heroku 博客页面上没有帖子,数据库有问题(?)
- angular - 角度找不到带有路径的控件:'childrenFormArray -> [object Object] -> gender'
- python - sparse_categorical_crossentropy() 缺少 2 个必需的位置参数:“y_true”和“y_pred”
- c# - VS 代码调试器在带有 M1 芯片的 Mac 上不起作用
- microsoft-graph-api - Microsoft Graph API 是否支持 Outlook 消息订阅/通知的增量链接?
- c++ - 错误:指定的可执行文件不是此操作系统平台的有效应用程序。行:1 字符:1