Tensorflow:Tensor.set_shape()ValueError:' image'必须完全定义

时间:2016-06-12 08:46:33

标签: python tensorflow deep-learning

我想使用tf.image.resize_image_with_crop_or_pad裁剪输入图像的一部分。但是出现了一个错误:ValueError: 'image' must be fully defined。我检查了Why do I get ValueError('\'image\' must be fully defined.') when transforming image in Tensorflow?我添加了Tensor.set_shape()但它也无法正常工作。 我列出了我的代码和错误,如下所示:

example = tf.image.decode_png(file_contents, channels=3)
example.set_shape = ([256,256,3])
crop_image = tf.image.resize_image_with_crop_or_pad(example, crop_size, crop_size)

错误:

File "/home/kang/Documents/work_code_PC1/VGG_tensorflow_UCMerced/readUClandUsedImagetxt.py", line 97, in _input_pipeline
    crop_image = tf.image.resize_image_with_crop_or_pad(image, crop_size, crop_size)

  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/image_ops.py", line 534, in resize_image_with_crop_or_pad
    _Check3DImage(image, require_static=True)

  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/image_ops.py", line 221, in _Check3DImage
    raise ValueError('\'image\' must be fully defined.')

ValueError: 'image' must be fully defined.

我不知道为什么即使我将某个形状设置为Image也会出现错误。 但是,我测试代码如下:

example = tf.image.decode_png(file_contents, channels=3)
example = tf.reshape(example, [256,256,3])
crop_image = tf.image.resize_image_with_crop_or_pad(example, crop_size, crop_size)

有效。我认为重塑到相同的形状不会改变Tensor中的值的顺序,我是对的吗?也许它可以成为解决方案。

1 个答案:

答案 0 :(得分:1)

问题在于

example.set_shape = ([256,256,3])

您已覆盖方法tf.Tensor.set_shape并将其设置为值。

set_shape是一种方法,因此您必须正确调用它:

example.set_shape([256,256,3])

之后,您的代码将起作用。

  

我认为重塑到相同的形状不会改变Tensor中的值的顺序,我是对的吗?

是的,你是对的