Python Tensorflow多对多RNN(LSTM)输出形状
我有一些序列数据(大约200k个样本,每个样本有26个时间步,有三个不同的特征)。我试着运行一个LSTM训练来预测第27个时间步中的特征 到目前为止,我的模型看起来像:Python Tensorflow多对多RNN(LSTM)输出形状,python,tensorflow,deep-learning,lstm,Python,Tensorflow,Deep Learning,Lstm,我有一些序列数据(大约200k个样本,每个样本有26个时间步,有三个不同的特征)。我试着运行一个LSTM训练来预测第27个时间步中的特征 到目前为止,我的模型看起来像: input_dx1 = Input(shape=( n_steps, 1), name='input_dx1') input_dx2 = Input(shape=( n_steps,1), name='input_dx2') input_dx3 = Input(shape=( n_steps,1), name='input_dx
input_dx1 = Input(shape=( n_steps, 1), name='input_dx1')
input_dx2 = Input(shape=( n_steps,1), name='input_dx2')
input_dx3 = Input(shape=( n_steps,1), name='input_dx3')
lstm_dx1 = LSTM(32)(input_dx1)
lstm_dx2 = LSTM(32)(input_dx2)
lstm_dx3 = LSTM(32)(input_dx3)
output_dx1 = Dense(26, activation = 'softmax' )(lstm_dx1)
output_dx2 = Dense(26, activation = 'softmax')(lstm_dx2)
output_dx3 = Dense(26, activation = 'softmax')(lstm_dx3)
model = Model( [ input_dx1, input_dx2, input_dx3], [output_dx1, output_dx2, output_dx3])
Layer (type) Output Shape Param # Connected to
==================================================================================================
input_dx1 (InputLayer) [(None, 26, 1)] 0
__________________________________________________________________________________________________
input_dx2 (InputLayer) [(None, 26, 1)] 0
__________________________________________________________________________________________________
input_dx3 (InputLayer) [(None, 26, 1)] 0
__________________________________________________________________________________________________
lstm_44 (LSTM) (None, 32) 4352 input_dx1[0][0]
__________________________________________________________________________________________________
lstm_45 (LSTM) (None, 32) 4352 input_dx2[0][0]
__________________________________________________________________________________________________
lstm_46 (LSTM) (None, 32) 4352 input_dx3[0][0]
__________________________________________________________________________________________________
dense_34 (Dense) (None, 26) 858 lstm_44[0][0]
__________________________________________________________________________________________________
dense_35 (Dense) (None, 26) 858 lstm_45[0][0]
__________________________________________________________________________________________________
dense_36 (Dense) (None, 26) 858 lstm_46[0][0]
==================================================================================================
Total params: 15,630
Trainable params: 15,630
Non-trainable params: 0
________________________________________________________________________________________________
模型摘要如下所示:
input_dx1 = Input(shape=( n_steps, 1), name='input_dx1')
input_dx2 = Input(shape=( n_steps,1), name='input_dx2')
input_dx3 = Input(shape=( n_steps,1), name='input_dx3')
lstm_dx1 = LSTM(32)(input_dx1)
lstm_dx2 = LSTM(32)(input_dx2)
lstm_dx3 = LSTM(32)(input_dx3)
output_dx1 = Dense(26, activation = 'softmax' )(lstm_dx1)
output_dx2 = Dense(26, activation = 'softmax')(lstm_dx2)
output_dx3 = Dense(26, activation = 'softmax')(lstm_dx3)
model = Model( [ input_dx1, input_dx2, input_dx3], [output_dx1, output_dx2, output_dx3])
Layer (type) Output Shape Param # Connected to
==================================================================================================
input_dx1 (InputLayer) [(None, 26, 1)] 0
__________________________________________________________________________________________________
input_dx2 (InputLayer) [(None, 26, 1)] 0
__________________________________________________________________________________________________
input_dx3 (InputLayer) [(None, 26, 1)] 0
__________________________________________________________________________________________________
lstm_44 (LSTM) (None, 32) 4352 input_dx1[0][0]
__________________________________________________________________________________________________
lstm_45 (LSTM) (None, 32) 4352 input_dx2[0][0]
__________________________________________________________________________________________________
lstm_46 (LSTM) (None, 32) 4352 input_dx3[0][0]
__________________________________________________________________________________________________
dense_34 (Dense) (None, 26) 858 lstm_44[0][0]
__________________________________________________________________________________________________
dense_35 (Dense) (None, 26) 858 lstm_45[0][0]
__________________________________________________________________________________________________
dense_36 (Dense) (None, 26) 858 lstm_46[0][0]
==================================================================================================
Total params: 15,630
Trainable params: 15,630
Non-trainable params: 0
________________________________________________________________________________________________
但是当我跑的时候
from tensorflow.keras.optimizers import SGD, Adam
model.compile(optimizer=Adam(lr=0.1), loss='sparse_categorical_crossentropy',metrics='accuracy' )
model.fit([ X_tr_dx1, X_tr_dx2, X_tr_dx3], [Y_tr_dx1, Y_tr_dx2, Y_tr_dx3], epochs=1, batch_size =26)
我得到了一个错误ValueError:cannot squeeze dim[1],预期维度为1,对于输入形状为[?,26]的“{node squeeze}}}=squeeze[T=DT_FLOAT,squeeze_dims=[-1]](remove_squeezable_dimensions/squeeze)得到了26代码>
我的Y_tr_dx1.shape
返回(238219,26,1)
,这很有意义:我有大约200k个样本,每个样本有26个Y测量值,范围从t2,t3…t27
到表示我在t1,t2,…t26时提供的26个X值之后的序列中的“下一个”项。每个值本身都是一个整数编码的值,所以我使用的是sparse\u categorical\u crossentropy
为什么我的model.fit()
仍然给我一个尺寸错误