gpt4 book ai didi

neural-network - 在 Keras 中构建带有嵌入层的 LSTM 网络

转载 作者:行者123 更新时间:2023-12-03 16:52:26 24 4
gpt4 key购买 nike

我想创建一个由嵌入层组成的 Keras 模型,然后是两个具有 dropout 0.5 的 LSTM,最后是一个具有 softmax 激活的密集层。

第一个 LSTM 应该将顺序输出传播到第二层,而在第二层中,我只对在处理整个序列后获取 LSTM 的隐藏状态感兴趣。

我尝试了以下方法:

sentence_indices = Input(input_shape, dtype = 'int32')

embedding_layer = pretrained_embedding_layer(word_to_vec_map, word_to_index)

embeddings = embedding_layer(sentence_indices)
# Propagate the embeddings through an LSTM layer with 128-dimensional hidden state
X = LSTM(128, return_sequences=True, dropout = 0.5)(embeddings)

# Propagate X trough another LSTM layer with 128-dimensional hidden state
X = LSTM(128, return_sequences=False, return_state=True, dropout = 0.5)(X)

# Propagate X through a Dense layer with softmax activation to get back a batch of 5-dimensional vectors.
X = Dense(5, activation='softmax')(X)

# Create Model instance which converts sentence_indices into X.
model = Model(inputs=[sentence_indices], outputs=[X])

但是我收到以下错误:
ValueError: Layer dense_5 expects 1 inputs, but it received 3 input tensors. Input received: [<tf.Tensor 'lstm_10/TensorArrayReadV3:0' shape=(?, 128) dtype=float32>, <tf.Tensor 'lstm_10/while/Exit_2:0' shape=(?, 128) dtype=float32>, <tf.Tensor 'lstm_10/while/Exit_3:0' shape=(?, 128) dtype=float32>]

显然 LSTM 没有返回我期望的形状的输出。我该如何解决?

最佳答案

如果您设置 return_state=True ,然后 LSTM(...)(X)返回三件事:输出、最后一个隐藏状态和最后一个单元状态。

所以,而不是 X = LSTM(128, return_sequences=False, return_state=True, dropout = 0.5)(X) , 做 X, h, c = LSTM(128, return_sequences=False, return_state=True, dropout = 0.5)(X)
here举个例子。

关于neural-network - 在 Keras 中构建带有嵌入层的 LSTM 网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48850424/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com