You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

打印预训练CNN第一层张量值时出现负维度错误求助

解决TensorFlow中查看Conv层输出时的形状错误问题

看起来你遇到的问题核心是没有为依赖的Placeholder提供输入数据,导致TensorFlow无法正确计算张量形状。让我一步步帮你分析和解决:

错误原因

当你调用sess.run(test)或者conv1.eval()时,conv1这个张量依赖于输入占位符x,但你没有传入feed_dict来指定x的具体值。这时候TensorFlow无法确定x的batch维度(也就是形状里的?)的实际大小,进而导致形状计算失败,抛出"Shape [-1,227,227,3] has negative dimensions"的错误。

解决方案

你有几种方式可以正确查看conv1的输出值:

方法1:直接使用已获取的output变量

你其实已经通过下面的代码得到了conv1的输出值,直接打印这个变量就可以了:

output = sess.run(conv1, feed_dict = {x:[im1]})
print(output)

方法2:修正tf.Print的调用方式

如果一定要用tf.Print,需要在运行的时候传入feed_dict,让TensorFlow知道输入数据:

test = tf.Print(conv1, [conv1])
# 必须传入feed_dict
sess.run(test, feed_dict={x: [im1]})

注意:tf.Print的输出会打印到控制台的标准错误流(stderr),而不是常规的stdout,你需要在控制台的对应位置查看输出。

方法3:使用eval()并指定session和feed_dict

用eval()的时候,同样需要提供输入数据,并且指定当前的session:

conv1_output = conv1.eval(session=sess, feed_dict={x: [im1]})
print(conv1_output)

额外小提示

你可以打印output的形状来确认卷积层输出是否符合预期:

print(output.shape)
# 对于AlexNet的conv1,输入227x227x3,步长4,padding=SAME的话,输出应该是(1, 57, 57, 96)

内容的提问来源于stack exchange,提问作者Dave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:56:34