如何编写接受多个输入的keras LAYER ?例如,我想引起人们注意LSTM层的缩放,以使LSTM层得到关注并以先前的时间特征“(batch_size,step_dim,feature_dim)成形”作为参数?并且必须在内部图层上完成,而不是在外部。
例如,我想要类似'the_layer'的东西:
x = Input(shape=(max_sentence_length))
word_embeddings = Embedding(...)(x)
attention = attention()(previous_feature)
lstm_scaled_with_attention = the_layer(return_sequence=True)(word_embeddings, attention)
到目前为止,我尝试将参数添加到LSTM层的call()函数中,但是LSTM源自Layer类,该类表示它仅需要一个输入。这可能不是这样做的方法。
我也尝试过串联([word_embeddings,注意]),然后进给,但是张量必须在形状上或某种程度上对齐。我不能让他们同时进入。任何想法如何做到这一点?
---------------------------- ANOTHER-ATTEMPT-01 -------------- ---------------------------
要弄清楚如果您将其用作_Merge的图层,会发生什么情况,我也尝试过
x = Input(shape=(max_sentence_length))
word_embeddings = Embedding(...)(x)
attention = attention()(previous_feature)
lstm_scaled_with_attention = Bidirectional(LSTM(hidden_units, return_sequence=True))([word_embeddings, attention])
在这种情况下,“注意”被解释为LSTM()的第二个参数,它是LSTM。 call 函数的初始状态。这是声明:
def __call__(self, inputs, initial_state=None, constants=None, **kwargs):
错误
ValueError: When passing `initial_state` to a Bidirectional RNN, the state should be a list containing the states of the underlying RNNs. Found: [<tf.Tensor 'input_2:0' shape=(None, 72) dtype=float32>]
实际上,我认为可以在此处添加参数,因为我想传递列表有点意思是传递多个参数。