首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >keras lstm nmt模型编译但不运行--维度大小?

keras lstm nmt模型编译但不运行--维度大小?
EN

Stack Overflow用户
提问于 2018-03-01 23:07:17
回答 1查看 96关注 0票数 1

我正在开发一个简单的keras的nmt翻译器。下面是keras中一些鼓舞人心的seq2seq示例的链接。

https://machinelearningmastery.com/develop-encoder-decoder-model-sequence-sequence-prediction-keras/

我想要一个模型,它接受一个300的向量作为一个单词输入,并采取其中的25个在同一时间。这个25是句子的长度。Units是300数字,tokens_per_sentence是25数字。下面的代码只包含训练模型。我省略了推理模型。我的模型可以编译,但当我用训练数据运行它时,我得到了一个尺寸错误。我曾尝试对dense_layer_b的输出进行整形,但有人反复告诉我,操作的输出需要与输入的大小相同。我使用python3和tensorflow作为后端。我的keras是v2.1.4。我的操作系统。是uubuntu。

错误消息:

代码语言:javascript
复制
ValueError: Error when checking target: expected dense_layer_b to have 2 dimensions, but got array with shape (1, 25, 300)

一些终端输出:

代码语言:javascript
复制
Tensor("lstm_1/while/Exit_2:0", shape=(?, 25), dtype=float32)
(?, 25) (?, 25) h c

下面是一些代码:

代码语言:javascript
复制
def model_lstm():
    x_shape = (None,units)
    valid_word_a = Input(shape=x_shape)
    valid_word_b = Input(shape=x_shape)
    ### encoder for training ###
    lstm_a = LSTM(units=tokens_per_sentence, return_state=True)
    recurrent_a, lstm_a_h, lstm_a_c = lstm_a(valid_word_a)
    lstm_a_states = [lstm_a_h , lstm_a_c]
    print(lstm_a_h)
    ### decoder for training ###
    lstm_b = LSTM(units=tokens_per_sentence ,return_state=True)
    recurrent_b, inner_lstmb_h, inner_lstmb_c = lstm_b(valid_word_b, initial_state=lstm_a_states)
    print(inner_lstmb_h.shape, inner_lstmb_c.shape,'h c')
    dense_b = Dense(tokens_per_sentence  , activation='softmax', name='dense_layer_b')
    decoder_b = dense_b(recurrent_b)
    model = Model([valid_word_a,valid_word_b], decoder_b) 
    return model

我希望当代码实际用于数据时,终端输出中的问号可以替换为我的向量大小。

编辑:我一直在尝试通过改变代码中的维度来解决这个问题。我已经更新了代码和错误消息。我基本上还是有同样的问题。致密层似乎不起作用。

EN

回答 1

Stack Overflow用户

发布于 2018-03-04 03:33:28

所以我认为我需要将lstm_alstm_breturn_sequences都设置为True

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49052621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档