为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

斯蒂芬大帝 2021-07-30 18:31:30
我是 Tensorflow 的新手。卷积后,我的层的形状是,shape=(5, 5, 5, 5), dtype=float32但是当我应用反卷积时,形状像shape=(?, 25, 25, 640),dtype=float32.这意味着反卷积后批量大小没有正确显示(?符号)。对于反卷积,我使用了这个反卷积函数。错误值错误:新变量的形状 (local1/weights) 必须完全定义,而是 (?, 1000)。我已经尝试过example1但效果不佳
查看完整描述

3 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

来自使用的反卷积函数的描述


  #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()


查看完整回答
反对 回复 2021-08-03
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

不同之处在于您发送的示例是一个张量,将错误的数据输入给它。您的问题是解卷积滤波器的权重未完全定义。权重不依赖于批量大小,并且需要是固定大小,因此错误。我知道您理解错误,只是想说明您遇到的问题和示例有很大不同。

我建议改用这个函数

 tf.nn.conv2d_transpose()

它的定义就像你对普通卷积层所做的一样。它是 TensorFlow 中的默认值,我想知道您为什么不使用它开始?


查看完整回答
反对 回复 2021-08-03
?
莫回无

TA贡献1865条经验 获得超7个赞

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


查看完整回答
反对 回复 2021-08-03
  • 3 回答
  • 0 关注
  • 175 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号