Python 如何解决LSTM中关闭返回序列后的尺寸问题?
我是Keras的初学者,希望修改此代码。但是,我得到了一个关于输出维度的错误 这是工作正常的代码的一部分:Python 如何解决LSTM中关闭返回序列后的尺寸问题?,python,keras,lstm,Python,Keras,Lstm,我是Keras的初学者,希望修改此代码。但是,我得到了一个关于输出维度的错误 这是工作正常的代码的一部分: model.add(LSTM(64,return_sequences=True,input_shape=(tr_in.shape[1],tr_in.shape[2]))) model.add(Dense(1, activation='linear')) model.compile(loss='mse', optimizer='adam') model.fit(tr_in, tr_out,
model.add(LSTM(64,return_sequences=True,input_shape=(tr_in.shape[1],tr_in.shape[2])))
model.add(Dense(1, activation='linear'))
model.compile(loss='mse', optimizer='adam')
model.fit(tr_in, tr_out,validation_data=(val_in, val_out))
培训和验证输入和输出矩阵为3D。
我想关闭“返回序列”。但我得到一个错误如下:
ValueError:检查目标时出错:预期密集_3有2个
维度,但得到了形状为(100,16,1)的数组
我相信,当您将return_序列从True更改为False时,您正在将LSTM层的输出减少为二维-尤其是在处理所有时间步结束时只有一个输出。由于“目标”数据(tr_out)是3D的,因此这与拟合所期望的结果相冲突。我相信return_sequences=True每个时间步输出一个结果,在您的示例中,每个样本有16个时间步。我认为当return\u sequences=False时,您需要使tr\u out维度匹配(变成2D)。我希望这会有所帮助。我可能有点误解,但您可能会使用常规python/numpy处理创建一个子集,如:y_train\u sub=np.squence(y_train[:,-1,:])或类似的东西,具体取决于y目标数据的含义。我希望这有帮助。