Tensorflow Assign要求两个张量的形状匹配。 lhs shape = [20] rhs shape = [48]

时间:2016-11-15 04:19:34

标签: python tensorflow deep-learning

我是TensorFlow菜鸟。我已经从开源实现深度训练了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参数的来源。我查看了所有配置文件,似乎没有任何参数指定此配置。

非常感谢任何解决此问题的帮助。

6 个答案:

答案 0 :(得分:41)

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

答案 1 :(得分:3)

我也遇到了这个问题,问题是标签和班级号码没有匹配所以我改变并修改了班级编号和标签到处都是。

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

答案 2 :(得分:1)

所以当它发生时,我更新了TensorFlow代码但未能训练它。所以我回滚到以前的版本,对运行脚本进行了适当的新更改并使其正常工作。

答案 3 :(得分:0)

如果删除检查点不起作用,则此错误是由于尺寸所致,因此请检查类的数量是否与图像相同以及尺寸是否相同

答案 4 :(得分:0)

还会发生输入图像形状与输入图像张量不匹配的情况。就是说,当模型期望输入图像为RGB却要发送灰度图像时,您可能会遇到此问题。因此,请确保输入正确的数据。使用opencv的image.shape函数进行检查。

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

其中; h是高度 w是宽度 c是频道

答案 5 :(得分:-2)

在我的情况下,training / faster_rcnn_resnet50_coco.config文件中的num_classes不正确。因此出现了这个错误。