正如我们所知,解码器将编码器隐藏状态作为初始状态......
encoder_output , state_h, state_c = LSTM(cellsize, return_state=True)(embedded_encoder_input)
encoder_states = [state_h, state_c]
decoder_lstm = LSTM(cellsize, return_state=True, return_sequences=True)
decoder_outputs, state_dh, state_dc = decoder_lstm(embedded_decoder_inputs, initial_state=encoder_states)
假设我想将解码器的初始状态替换为 encoder_output 以及来自其他资源的我的特征
encoder_states = [encoder_output , my_state]
但我面临以下错误:
ValueError:RNN 层的初始状态或常量不能用 Keras 张量和非 Keras 张量的混合来指定(“Keras 张量”是由 Keras 层返回的张量,或由
Input
)
虽然我打印了 state_h & stat_c & encoder_output & my_state,但都具有相同的类型和形状,例如:
state_h: Tensor("lstm_57/while/Exit_2:0", shape=(?, 128), dtype=float32) my_state: Tensor("Reshape_17:0", shape=(?, 128), dtype=float32)
我理解它不会接受不是从前一层产生的输入,以及作为 Keras 张量的输入?
更新
将张量转换为 Keras 张量后,新错误:
ValueError:模型的输入张量必须来自
keras.layers.Input
. 收到:Tensor("Reshape_18:0", shape=(?, 128), dtype=float32) (缺少前一层元数据)。