TFLite Изменение параметров HardSigmoid - PullRequest
0 голосов
/ 03 августа 2020

У меня есть нейронная сеть, которая использует функцию активации Hard 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 базовой модели, чтобы указать правильное значение для альфы.

Есть ли хороший способ решить это для TFLite?

1 Ответ

0 голосов
/ 08 августа 2020

Лучше всего использовать 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.

...