Tensorflow tf.keras.layers.Reshape RNN/LSTM



我有一个包含多变量的数据集,我试图在LSTM神经网络中进行整形,但我在整形层方面举步维艰,但没有成功。

我的数据集具有形状(1921535,6(,每341个时间步长对应一个样本。我想在(23441,6(中进行整形,并将其输入到模型中。在我的代码下面。

def df_to_dataset(dataframe, batch_size):
dataframe = dataframe.copy()
labels = dataframe.pop('target')
ds = tf.data.Dataset.from_tensor_slices((dict(dataframe), labels))
ds = ds.batch(batch_size)
return ds
max_length = 341
batch_size = 23
train_ds = df_to_dataset(data, batch_size * max_length)
model = tf.keras.Sequential([
tf.keras.layers.Reshape((batch_size, max_length, 6), input_shape=(batch_size * max_length, 6)),
tf.keras.layers.LSTM(40, return_sequences=True),
tf.keras.layers.LSTM(40),
tf.keras.layers.Dense(1)
])

当我运行代码时,我收到以下错误:

InvalidArgumentError: Input to reshape is a tensor with 54901 values, but the requested shape has 369075894 [Op:Reshape]

提前感谢

我无法重现您的错误:

max_length = 341
batch_size = 23
model = tf.keras.Sequential([
tf.keras.layers.Reshape((batch_size, max_length, 6), input_shape=(batch_size * max_length, 6)),
tf.keras.layers.LSTM(40, return_sequences=True),
tf.keras.layers.LSTM(40),
tf.keras.layers.Dense(1)
])

你的代码不正确:你的重塑层的输出有4个维度(你的3个维度加上批次维度(,但LSTM需要3个维度。

我已经用tf.reshape解决了使用Lambda层的问题,我不知道为什么,但我不能使用reshape层。

model = tf.keras.Sequential([
tf.keras.layers.Lambda(lambda x: tf.reshape(x, (-1, max_length, 6)),
tf.keras.layers.LSTM(40, return_sequences=True),
tf.keras.layers.LSTM(40),
tf.keras.layers.Dense(1)
])

最新更新