张量流 tf.keras.layers.Reshape RNN/LSTM
Tensorflow tf.keras.layers.Reshape RNN/LSTM
我有一个包含多个变量的数据集,我正在尝试重塑以输入 LSTM 神经网络,但我在重塑层上遇到困难但没有成功。
我的数据集的形状为 (1921535, 6),每 341 个时间步对应一个样本。我想重塑 (23, 341, 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)
])
您的代码不正确:您的 Reshape 层的输出有 4 个维度(您的 3 个 dims 加上批次维度),但 LSTM 需要 3 个 dims。
我已经解决了使用 Lambda 层和 tf.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)
])
我有一个包含多个变量的数据集,我正在尝试重塑以输入 LSTM 神经网络,但我在重塑层上遇到困难但没有成功。
我的数据集的形状为 (1921535, 6),每 341 个时间步对应一个样本。我想重塑 (23, 341, 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)
])
您的代码不正确:您的 Reshape 层的输出有 4 个维度(您的 3 个 dims 加上批次维度),但 LSTM 需要 3 个 dims。
我已经解决了使用 Lambda 层和 tf.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)
])