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

tf。如果图表损坏,则打印无法正常工作

tf。如果图表损坏,则打印无法正常工作

跃然一笑 2021-05-15 16:10:01
我正在尝试建立一个完全卷积的神经网络。我的问题是,在某个阶段,张量的形状不再匹配,从而导致Exception和异常,我想在每个步骤之后打印张量的形状,以便能够指出问题所在。但是问题是,如果图形损坏并且某个时刻抛出了异常,则tf.Print似乎无法打印任何内容(即使异常发生在管道中的print语句之后)。我在打印中使用以下代码。如果我有一个有效的图形,那可以正常工作。那么,tf.Print真的只能用于工作图吗?如果是这种情况,我该如何打印张量的形状,还是使用某些调试器(例如tfdbg)的唯一可能性?upsample = custom_layers.crop_center(input_layer, upsample)upsample_print = tf.Print(upsample, [tf.shape(upsample)], "shape of tensor is ")logits = tf.reshape(upsample_print, [-1, 2])...给出的错误是ValueError: Dimension size must be evenly divisible by 2898844 but is 2005644 for 'gradients/Reshape_grad/Reshape' (op: 'Reshape') with input shapes: [1002822,2], [4] and with input tensors computed as partial shapes: input[1] = [?,1391,1042,2].
查看完整描述

2 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

尝试一下print(upsample.get_shape())


查看完整回答
反对 回复 2021-05-18
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

tf.Print仅在运行时打印。它只是向图添加一个节点,该节点在执行时会向控制台打印一些内容。因此,如果您的图形无法构建,即无法执行任何计算,那么您将永远不会看到的输出tf.Print

在构造时,您只能看到张量的静态形状(例如,使用Python本机print语句打印它们)。我不知道在构造时获取动态形状的任何方式(动态形状取决于您提供的实际输入,因此无法在实际提供某些东西之前就知道,这只会在运行时发生)。对于我的目的而言,了解静态形状通常就足够了。如果不是这种情况,请尝试在一个玩具示例中将动态尺寸设为静态,然后用Python打印所有形状以找出问题所在。


查看完整回答
反对 回复 2021-05-18
  • 2 回答
  • 0 关注
  • 193 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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