繁体   English   中英

keras张量整形(lstm输入形状错误)

[英]keras tensor reshaping (lstm input shape error)

我在keras上使用LSTM并事先使用了重塑层,希望我不必为LSTM层指定形状。

输入为84600 x 6

2个月内84600秒。 在整个2个月中进行6种度量/ [标签]即时测量

到目前为止,我有

model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Reshape((86400,1,6), input_shape=(84600, 6)))
model.add(tf.keras.layers.LSTM(128,  activation='relu', input_shape= 
(x_train.shape), return_sequences=True))
model.add(tf.keras.layers.Dense(10, activation='softmax'))

这会引发错误:

ValueError: Input 0 of layer lstm is incompatible with the layer: expected ndim=3, found ndim=4. Full shape received: [None, 86400, 1, 6]

这是可以理解的。 批处理大小加上3层等于4。但是,当我重塑形状时

model.add(tf.keras.layers.Reshape((86400,1,6), input_shape=(84600, 6)))
vvvvvvv
model.add(tf.keras.layers.Reshape((86400,6), input_shape=(84600, 6)))

它抛出

ValueError: Error when checking input: expected reshape_input to have 3 dimensions, but got array with shape (86400, 6)

似乎忽略了批处理大小作为数组元素。 并将其视为2个索引。 它从4维跳到2维。

问题是LSTM将3维作为输入,但我似乎无法理解。 理想情况下,我想要86400 x 1 x 6阵列/张量。 因此,它成为1x6数据的84600个示例。

非常感谢你!

问题在于,重塑输入的方式与LSTM层不兼容。 LSTM层期望输入3个维度: (batch_size, timesteps, features)要素(batch_size, timesteps, features) 但是,您正在向其输入形状为(batch_size, 84600, 1, 6)

在您的情况下,似乎时间步数为84600,每个时间步的要素数为6。 因此,省略Reshape层并为LSTM层简单使用input_shape (84600, 6) 84600,6 (84600, 6)更有意义:

model = tf.keras.models.Sequential()
model.add(tf.keras.layers.LSTM(128,  activation='relu', input_shape=(84600, 6), return_sequences=True))
model.add(tf.keras.layers.Dense(10, activation='softmax'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM