我正在尝试建立一个完全卷积的神经网络。我的问题是,在某个阶段,张量的形状不再匹配,从而导致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贡献1803条经验 获得超3个赞
tf.Print
仅在运行时打印。它只是向图添加一个节点,该节点在执行时会向控制台打印一些内容。因此,如果您的图形无法构建,即无法执行任何计算,那么您将永远不会看到的输出tf.Print
。
在构造时,您只能看到张量的静态形状(例如,使用Python本机print语句打印它们)。我不知道在构造时获取动态形状的任何方式(动态形状取决于您提供的实际输入,因此无法在实际提供某些东西之前就知道,这只会在运行时发生)。对于我的目的而言,了解静态形状通常就足够了。如果不是这种情况,请尝试在一个玩具示例中将动态尺寸设为静态,然后用Python打印所有形状以找出问题所在。
添加回答
举报
0/150
提交
取消