Как реализовать 1-сигмоид в Керасе? - PullRequest
0 голосов
/ 27 ноября 2018

Поскольку я хочу реализовать структуру, которая похожа на шлюз обновления GRU:

h t = (1-z t ) h t-1 + z t h t

И я пытаюсь реализовать его с помощью этого кода, но он не работает.Я уверен, что проблема в следующем коде:

one = K.ones(shape=(1, len, 128))
zt=Subtract([one,zt])
temp_conv2=multiply([reset_conv,zt])
output=Add([temp_conv1,temp_conv2])

У меня есть следующая ошибка:

AttributeError: у объекта 'Tensor' нет атрибута '_keras_history'

Я уже пробовал другой метод, например, использование слоя Lambda, но он не работает.

1 Ответ

0 голосов
/ 27 ноября 2018

one не является тензором Кераса, поэтому вы получите эту ошибку.Вы можете обернуть это в слой Lambda:

zt = Lambda(lambda x: Subtract([K.ones(shape=(1, len, 128)), x]))(zt)

Даже вам не нужно создавать этот Тензор из них.Просто используйте 1-x:

zt = Lambda(lambda x: 1-x)(zt)

Он будет транслироваться автоматически, а вычитание будет поэлементным.

...