我试图用Python在Keras上训练递归神经网络。在图形计算LSTM层的结果后,时间步维将丢失其信息,如下所示。
代码:
print('Creating model...')
print('max_encoder_seq_length', self.max_encoder_seq_length)
print('num_encoder_tokens', self.num_encoder_tokens)
self.encoder_inputs = Input(shape=(self.max_encoder_seq_length, self.num_encoder_tokens), name='encoder_inputs')
print('encoder_inputs.shape', self.encoder_inputs.shape)
print('encoder_inputs.shape', self.encoder_inputs.shape)
self.encoder_outputs = LSTM(self.lstm_dim,
name='lstm_layer',
return_sequences=True,
)(self.encoder_inputs)
print('encoder_outputs.shape', self.encoder_outputs.shape)
输出:
Number of samples: 8000
Number of unique input tokens: 59
Max sequence length for inputs: 93
encoder_input_data.shape: (8000, 93, 59)
Creating model...
max_encoder_seq_length 93
num_encoder_tokens 59
encoder_inputs.shape (?, 93, 59)
encoder_outputs.shape (?, ?, 64)
所以我的问题是;为什么keras会失去第二维,即时间步长信息?它应该只是(?, 93, 64)
,但返回(?, ?, 64)
,为什么?
我正在使用:
python 3.6.8
Keras 2.2.4