Keras LSTM输入/输出形状

问题描述

每个循环层都需要输出,我的设置如下:

100个训练示例,每个示例3个时间步,每个元素20d特征向量。

x_train:(100,3,20)

y_train:(100,20)

LSTM体系结构:

model.add(LSTM(20,input_shape=(3,20),return_sequences=True))
model.compile(loss='mean_absolute_error',optimizer='adam',metrics=['accuracy'])
model.summary()

培训:

history = model.fit(x_train,y_train,epochs=50,validation_data=(x_test,y_test))

错误:

ValueError: Dimensions must be equal,but are 20 and 3 for '{{node Equal}} = Equal[T=DT_FLOAT,incompatible_shape_error=true](IteratorGetNext:1,Cast_1)' with input shapes: [?,20],[?,3].

请为我提供正确的输入/输出LSTM尺寸。 谢谢

解决方法

LSTM(20,input_shape=(3,20),return_sequences=True)作为输入形状(100,3,20)并返回(100,20)。但是,您的目标输出被编码为(100,20)

从维度上看,我假设您想将每个序列映射到非序列,即可以:

LSTM(20,return_sequences=False)

这将返回最终的隐藏状态,即(100,20)的形状与您的目标输出相匹配。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...