【问题标题】:Tensorflow Assign requires shapes of both tensors to match. lhs shape= [20] rhs shape= [48]Tensorflow Assign 需要两个张量的形状匹配。 lhs 形状= [20] rhs 形状= [48]
【发布时间】:2016-11-15 04:19:33
【问题描述】:

我是 TensorFlow 菜鸟。我已经从 deeppose 的开源实现中训练了一个 TensorFlow 模型,现在必须针对一组新图像运行该模型。

该模型是在大小为 100 * 100 的图像上训练的,因此我已将新图像集的大小调整为相同大小。我有 149 新图像来运行模型。运行模型时,出现以下错误。

InvalidArgumentError (see above for traceback): Assign requires shapes
of both tensors to match. lhs shape= [20] rhs shape= [48]

排队

saver = tf.train.Saver(tf.all_variables())

我怀疑经过训练的模型大小和测试图像大小不匹配。我不清楚如何解决这个问题。我从tf.all_variables() 调用中打印出变量列表。在这里

Tensor("Placeholder:0", shape=(128, 100, 100, 3), dtype=float32)
(11, 11, 3, 20)
conv1/weights:0
(20,)
conv1/biases:0
(5, 5, 20, 35)
conv2/weights:0
(35,)
conv2/biases:0
(3, 3, 35, 50)
conv4/weights:0
(50,)
conv4/biases:0
(3, 3, 50, 75)
conv5/weights:0
(75,)
conv5/biases:0
(300, 1024)
local1/weights:0
(1024,)
local1/biases:0
(1024, 1024)
local2/weights:0
(1024,)
local2/biases:0
(1024, 0)
softmax_linear/weights:0
(0,)
softmax_linear/biases:0

我不确定 RHS 参数的来源。我查看了所有配置文件,似乎没有任何参数指定此配置。

我们将不胜感激任何解决此问题的帮助。

【问题讨论】:

  • 试试saver = tf.train.Saver(tf.all_variables(), reshape=True)
  • 你能显示更大的堆栈跟踪吗?
  • @Fake - 重塑不起作用,但我已经解决了这个问题。谢谢老哥

标签: python tensorflow deep-learning


【解决方案1】:

尝试删除从以前的运行中保存的所有检查点。有时在更改架构并再次运行时,TF 会从旧的检查点(但使用新定义)拾取,您会收到此错误。

【讨论】:

  • 绝妙的提示!
  • 就是这样。谢谢
  • 同意。我今天刚刚犯了这个错误。我在不更改 logdir 的情况下使用新配置重新训练模型,然后 TF 拾取旧检查点并引发不匹配错误。更改为另一个 logdir 修复了它。
【解决方案2】:

我也遇到了这个问题,问题是标签和班级编号不匹配,所以我更改并修复了所有地方的班级编号和标签。

在我的例子中,它是在 fast_rcnn.config 中更改“num_classes”参数 和“label_map.pbtxt”文件以匹配真实值。

【讨论】:

  • 添加相关代码 sn-p 并附上解释确实对未来的读者很有帮助。如果你能添加这些,那就太好了。
  • 我添加了我需要修复的更改,但在每种情况下可能会有所不同,谢谢。
【解决方案3】:

如果删除检查点不起作用,这个错误是由于尺寸,所以检查类的数量是否相同,以及图像的尺寸

【讨论】:

    【解决方案4】:

    碰巧的是,我更新了 TensorFlow 代码,但未能对其进行训练。所以我回滚到以前的版本,对运行脚本进行了适当的新更改并让它工作。

    【讨论】:

      【解决方案5】:

      也会发生输入图像形状与输入图像张量不匹配的情况。这意味着,当模型期望输入图像为 RGB 但您发送的是灰度图像时,您可能会遇到此问题。因此,请确保有正确的输入数据。用opencv的image.shape函数检查一下。

      import cv2
      im = cv2.imread('lena.jpg')
      h, w, c = im.shape
      print(h,w,c)
      

      在哪里; h是高度 w 是宽度 c是频道

      【讨论】:

        【解决方案6】:

        就我而言,training/faster_rcnn_resnet50_coco.config 文件中的 num_classes 不正确。因此出现此错误。

        【讨论】:

          猜你喜欢
          • 2019-01-18
          • 1970-01-01
          • 1970-01-01
          • 2018-02-26
          • 1970-01-01
          • 2019-08-27
          • 1970-01-01
          • 2020-10-05
          • 1970-01-01
          相关资源
          最近更新 更多