【发布时间】:2022-01-11 20:31:39
【问题描述】:
我有一个想要训练的简单神经网络。 它应该能够通过窗口策略进行预测。
但是,第一个纪元提示我以下错误: 不兼容的形状:[30,5] 与 [5,1] [[节点 huber_loss/Sub
我已经尝试使用“嵌入”层来定义输出的维度,如另一篇关于堆栈溢出的帖子中所述。 没有成功。
这是我从免费 MOOC 中重复使用的代码:
def window_dataset(series, window_size, batch_size=32,
shuffle_buffer=1000):
dataset = tf.data.Dataset.from_tensor_slices(series)
dataset = dataset.window(window_size + 1, shift=1, drop_remainder=True)
dataset = dataset.flat_map(lambda window: window.batch(window_size + 1))
dataset = dataset.map(lambda window: (window[:-1], window[-1]))
dataset = dataset.batch(batch_size) #.prefetch(1)
return dataset
keras.backend.clear_session()
tf.random.set_seed(42)
np.random.seed(42)
window_size = 30
train_set = window_dataset(x_train, window_size)
valid_set = window_dataset(x_valid, window_size)
model = keras.models.Sequential([
keras.layers.Dense(5, input_shape=([window_size,5]))
])
optimiseur = keras.optimizers.SGD(learning_rate=1e-5, momentum=0.9)
model.compile(loss=keras.losses.Huber(), optimizer=optimiseur, metrics=["mae"])
model.fit(train_set, epochs=100, validation_data=valid_set)
这是train_set或valid_set中元素的形状:
x, y = train_set
x= tf.Tensor(..., shape=(32, 30, 5), dtype=int64)
y= tf.Tensor(..., shape=(32, 5), dtype=int64)
如果有人可以,请帮助解决这个问题,我会很高兴! 提前致谢。
【问题讨论】:
标签: python tensorflow keras dimension