猿问

ValueError: 新变量的形状 (local1/weights) 必须完全定义

我是 Tensorflow 的新手。卷积后,我的层的形状是,shape=(5, 5, 5, 5), dtype=float32但是当我应用反卷积时,形状像shape=(?, 25, 25, 640)dtype=float32.这意味着反卷积后批量大小没有正确显示(?符号)。对于反卷积,我使用了这个反卷积函数。

错误值错误:新变量的形状 (local1/weights) 必须完全定义,而是 (?, 1000)。

我已经尝试过example1但效果不佳


斯蒂芬大帝
浏览 176回答 3
3回答

陪伴而非守候

来自使用的反卷积函数的描述  #Now output.get_shape() is equal (?,?,?,?) which can become a problem in the   #next layers. This can be repaired by reshaping the tensor to its shape:  output = tf.reshape(output, output_shape)  #now the shape is back to (?, H, W, C) or (?, C, H, W)不应显示批次大小,因为它的设计是未知的。这样做是为了保留处理具有不同大小(第一维大小)的批次的能力。这样您就可以在不同大小的批次上运行模型,例如,一次训练 5 个图像并预测 20 个图像。并完全同意T. Kelher:我建议改用这个函数:tf.nn.conv2d_transpose()

慕勒3428872

不同之处在于您发送的示例是一个张量,将错误的数据输入给它。您的问题是解卷积滤波器的权重未完全定义。权重不依赖于批量大小,并且需要是固定大小,因此错误。我知道您理解错误,只是想说明您遇到的问题和示例有很大不同。我建议改用这个函数: tf.nn.conv2d_transpose()它的定义就像你对普通卷积层所做的一样。它是 TensorFlow 中的默认值,我想知道您为什么不使用它开始?

莫回无

问题已经解决,之前的转置/解卷积代码运行良好。只是我们必须做一些小改动。我们必须在输出形状中定义批量大小。
随时随地看视频慕课网APP

相关分类

Python
我要回答