我正在关注Keras Seq2Seq教程,并且机智很好。但是,这是一个字符级模型,我想将其应用于单词级模型。作者甚至在段落中添加了需要更改的内容,但是我目前的所有尝试都导致关于拧紧尺寸的错误。
如果按照字符级型号,输入数据是3个变暗:#sequences,#max_seq_len,#num_char因为每个字符是一个热编码。当按照教程中的说明绘制模型的摘要时,我得到:
Layer (type) Output Shape Param # Connected to
==================================================================================================
input_1 (InputLayer) (None, None, 71) 0
_____________________________________________________________________________ __________________
input_2 (InputLayer) (None, None, 94) 0
__________________________________________________________________________________________________
lstm_1 (LSTM) [(None, 256), (None, 335872 input_1[0][0]
__________________________________________________________________________________________________
lstm_2 (LSTM) [(None, None, 256), 359424 input_2[0][0]
lstm_1[0][1]
lstm_1[0][2]
__________________________________________________________________________________________________
dense_1 (Dense) (None, None, 94) 24158 lstm_2[0][0]
==================================================================================================
Run Code Online (Sandbox Code Playgroud)
这样编译和训练就可以了。
现在,本教程具有“如果我想对整数序列使用单词级模型该怎么办?”部分。而且我尝试遵循这些更改。首先,我使用单词索引对所有序列进行编码。这样,输入数据和目标数据现在为2个暗淡:#sequences,#max_seq_len因为我不再是一键编码,而是现在使用了嵌入层。
encoder_input_data_train.shape => (90000, 9)
decoder_input_data_train.shape => (90000, 16)
decoder_target_data_train.shape => (90000, 16)
Run Code Online (Sandbox Code Playgroud)
例如,一个序列可能看起来像这样: …