tensorflow - HardSigmoid 的 TFLite 更改参数
问题描述
我有一个使用硬 Sigmoid激活函数的神经网络。
但是,没有使用 keras 版本的激活函数,而是这样计算:
def hard_sigmoid(x):
return layers.ReLU(6.)(x + 3.) * (1. / 6.)
这意味着该参数alpha
应设置为而不是上面链接中指定0.1667
的默认值。0.2
似乎在运行 TFLite 转换过程时,名称 hard_sigmoid 被识别为 keras 函数。这意味着我的模型输出废话。
coreML 转换的相同过程允许我直接编辑底层模型 protobuf 文件以指定正确的 alpha 值。
有没有为 TFLite 解决这个问题的好方法?
解决方案
最好的方法是使用keras.backend
from keras.models import Sequential
import keras.backend as K
def myCustomActivation(x):
return ...
model = Sequential()
model.add(Dense(120))
model.add(Activation(myCustomActivation))
model.add(Dense(30, activation= myCustomActivation))
...
myCustomActivation
对于您使用 Keras 后端执行的所有操作,以便在 DAG 上执行操作。
推荐阅读
- ios - iOS 类在两个框架中实现,将使用两者之一。哪个是未定义的
- ios - 未找到 UIButton 属性字体的特征变化
- javascript - 如何解析包含计算的字符串并执行它
- odoo - 当我给出打印命令时出现 wkhtmltopdf 错误
- node.js - Zurb Foundation 6 (v6.4.3) 支持的最新版本的 NodeJS?
- java - 在 Tomcat 中使用 RemoteIpValve 时如何防止 Request-IP 替换?
- db2 - 当我执行 DB2 Java 类时,我收到 db2 错误
- database - 在我的 oracle DB 表中有 21 个索引,是好是坏
- postgresql - 删除重复项的最有效方法 - Postgres
- laravel - Laravel 模型属性返回 0