如何使密集层的RNN输出平坦化?

时间:2018-07-21 03:38:48

标签: tensorflow keras lstm recurrent-neural-network keras-layer

我想对包含以下内容的信号进行分类

X = (n_samples, n_timesteps, n_features),其中n_samples=476n_timesteps=400n_features=16是信号的样本数量,时间步长和特征(或通道)。

y = (n_samples, n_timesteps, 1)。每个时间步标记为0或1(二进制分类)。

我的图形模型如下图所示。

enter image description here

输入被馈入32个单元的LSTM。 LSTM输出进入一个1单位的密集层,以生成400x1向量,其中400是时间步长。然后,我想将此400x1向量放入400个单位的Dense层中。我试图展平1单位的Dense,但是最终输出的形状与标签400x1向量不匹配。

代码段和模型如下所示。

input_layer = Input(shape=(n_timestep, n_feature))
lstm1 = LSTM(32, return_sequences=True)(input_layer)
dense1 = Dense(1, activation='sigmoid')(lstm1)
flat1 = TimeDistributed(Flatten())(dense1)        
dense2 = TimeDistributed(Dense(400, activation='sigmoid'))(flat1)
model = Model(inputs=input_layer, outputs=dense2)
model.summary()

enter image description here

以下显示错误。

ValueError: Error when checking target: expected time_distributed_4 to have shape (400, 400) but got array with shape (400, 1)

请让我知道如何解决它。谢谢。

0 个答案:

没有答案