如何运行tensorflow示例代码?(抛出错误)

2024-04-18 23:40:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我对TF2非常陌生,并尝试自定义tensorflow指南文档中的示例代码:

https://www.tensorflow.org/guide/keras/custom_layers_and_models#putting_it_all_together_an_end-to-end_example

如果潜在维度设置为1,则指南中给出的代码不会运行,对于每个潜在维度>;1,它都可以正常运行!你知道吗

对于培训,我尝试使用示例中给出的代码,但将潜在dim设置为1:

vae = VariationalAutoEncoder(784, 64, 1)

optimizer = tf.keras.optimizers.Adam(learning_rate=1e-3)

vae.compile(optimizer, loss=tf.keras.losses.MeanSquaredError())
vae.fit(x_train, x_train, epochs=3, batch_size=64)

尝试训练时的错误是:

值错误:应定义输入到密集的最后一个维度。找不到 从示例函数返回时抛出

epsilon = tf.keras.backend.random_normal(shape=(batch, dim))

无法处理shape=(?,1). 你知道吗

有人可以帮助我尝试使用的代码作为模板,但我需要潜在的维度是1!你知道吗

谢谢


Tags: 代码示例tftensorflow错误batch指南train
1条回答
网友
1楼 · 发布于 2024-04-18 23:40:55

好的。答案来自Github的MarkDoust here

这里的问题是广播与z_mean + tf.exp(0.5 * z_log_var) * epsilon线路的相互作用。你知道吗

通常z泳u均值和z泳u log泳u var的最后一个维数是已知的,而epsilon的最后一个维数是未知的。你知道吗

既然你把epsilon和mul相加,它就假设这两个有相同的形状。你知道吗

当它们的最后一个维度为1时,它认为你可能在用epsilon来计算zïu mean和zïu logïvar,它说不出来。你知道吗

所以解决办法是告诉它你知道epsilon的形状,而不是广播。在z_mean + tf.exp(0.5 * z_log_var) * epsilon行之前添加以下内容:epsilon.set_shape(z_mean.shape)。你知道吗

相关问题 更多 >