定制/ Lambda层,可训练重量

时间:2018-06-07 21:08:13

标签: python keras keras-layer

我正在尝试使用Keras.backend操作来编写一个函数,我将其作为Lambda包装在我的模型中使用。

有两个张量,X和Y.X不可训练。 Y是可训练的。

包装的python函数是:

import keras.backend as K
from keras.activations import softmax

def _attention(inputs):
    X, Y = inputs
    attention_weight = K.dot(X, K.expand_dims(Y))
    attention_weight = K.squeeze(attention_weight, axis=-1)
    attention_weight = softmax(attention_weight, axis=-1)
    return attention_weight

我想包装为:

Y = K.random_normal_variable(shape=(200,), mean=0.0, scale=1.0)
attend = Lambda(_attention)
attention = attend((X,Y))

我打电话的时候:

model = Model(inputs=[input], outputs=[attention])

我收到了消息

ValueError: Output tensors to a Model must be the output of a TensorFlow {图层{1}}

我是否真的需要为expand_dims,dot product和squeeze方法创建自定义图层?我知道我总能重塑Y(dim,) - > (昏暗,1)但我仍然坚持挤压。

0 个答案:

没有答案