Python,Keras-ValueError:无法为张量u'提供形状(10,70,1025)的值;密集的2个目标:0';,其形状为';(?,?)&x27;

Python,Keras-ValueError:无法为张量u'提供形状(10,70,1025)的值;密集的2个目标:0';,其形状为';(?,?)&x27;,python,tensorflow,keras,recurrent-neural-network,Python,Tensorflow,Keras,Recurrent Neural Network,我正在尝试分批训练RNN。 输入大小 (10, 70, 3075), 其中10表示批量大小,70表示时间维度,3075表示频率维度 有三个输出,其大小为 (10, 70, 1025) 每个,基本上是10个光谱图,大小(701025) 我想通过回归来训练这个RNN,它的结构是 input_img = Input(shape=(70,3075 ) ) x = Bidirectional(LSTM(n_hid,return_sequences=True, dropout=0.5, recurre

我正在尝试分批训练RNN。 输入大小 (10, 70, 3075), 其中10表示批量大小,70表示时间维度,3075表示频率维度

有三个输出,其大小为 (10, 70, 1025) 每个,基本上是10个光谱图,大小(701025)

我想通过回归来训练这个RNN,它的结构是

input_img = Input(shape=(70,3075 ) )
x = Bidirectional(LSTM(n_hid,return_sequences=True, dropout=0.5,    recurrent_dropout=0.2))(input_img)
x = Dropout(0.2)(x)
x = Bidirectional(LSTM(n_hid,  dropout=0.5, recurrent_dropout=0.2))(x)
x = Dropout(0.2)(x)
o0 = ( Dense(1025, activation='sigmoid'))(x)
o1 = ( Dense(1025, activation='sigmoid'))(x)
o2 = ( Dense(1025, activation='sigmoid'))(x)
问题是输出密集层不能考虑三维,它们需要类似(None,1025)的东西,我不知道如何提供,除非我沿着时间维度连接

出现以下错误:

ValueError:无法为具有形状“(?,?)”的张量u'dense_2_target:0”馈送形状(10,701025)的值


批处理形状选项在输入层中有用吗?实际上我已经试过了,但我也有同样的错误。

要获得正确的输出形状,可以使用重塑层:

o0 = Dense(70 * 1025, activation='sigmoid')(x)
o0 = Reshape((70, 1025)))(o0)

这将输出(批次号701025)。您可以对其他两个输出执行完全相同的操作。

在本例中,第二个RNN将序列折叠为一个向量,因为默认情况下
return\u sequences=False
。要生成模型返回序列并在每个时间步上分别运行密集层,只需将
return\u sequences=True
添加到第二个RNN:

x = Bidirectional(LSTM(n_hid,  return_sequences=True, dropout=0.5, recurrent_dropout=0.2))(x)
密集层将自动应用于最后一个尺寸标注,因此以后无需重塑