使用不是符号张量keras

时间:2017-06-30 17:38:55

标签: python neural-network keras recurrent-neural-network

我正在尝试将一个图层的输出传递到两个不同的图层,然后将它们连接在一起。但是,我被这个错误所阻止,这个错误告诉我输入不是符号张量。

Received type: <class 'keras.layers.recurrent.LSTM'>. All inputs to the layers should be tensors.

但是,我相信我非常密切地关注文档: https://keras.io/getting-started/functional-api-guide/#multi-input-and-multi-output-models

并不完全确定为什么这是错的?

net_input = Input(shape=(maxlen, len(chars)), name='net_input')
lstm_out = LSTM(128, input_shape=(maxlen, len(chars)))

book_out = Dense(len(books), activation='softmax', name='book_output')(lstm_out)
char_out = Dense(len(chars-4), activation='softmax', name='char_output')(lstm_out)

x = keras.layers.concatenate([book_out, char_out])
net_output = Dense(len(chars)+len(books), activation='sigmoid', name='net_output')

model = Model(inputs=[net_input], outputs=[net_output])

由于

3 个答案:

答案 0 :(得分:19)

看起来您实际上并未向LSTM图层提供输入。您可以指定输入的循环神经元数和形状,但不提供输入。尝试:

lstm_out = LSTM(128, input_shape=(maxlen, len(chars)))(net_input)

答案 1 :(得分:4)

我知道,文档可能会造成混淆,但是在您传递图层时,串联实际上只需要“轴”作为参数。图层需要作为参数传递给结果,如下所示:

  

要修改的行:

     

x = keras.layers.concatenate([book_out,char_out])

     

应该如何:

     

x = keras.layers.Concatenate()([book_out,char_out])

答案 2 :(得分:0)

我认为您需要添加axis = 1进行连接,请尝试:

close()