首页 > 解决方案 > 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 解决这个问题的好方法?

标签: tensorflowtensorflow-lite

解决方案


最好的方法是使用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 上执行操作。


推荐阅读