使用tf.image.random:'numpy.ndarray'对象的Tensorflow错误没有属性'get_shape'

时间:2016-03-06 08:39:05

标签: python-2.7 tensorflow

简介

我正在使用Tensorflow教程“Deep MNIST for experts”的修改版本,使用Python API进行使用卷积网络的医学图像分类项目。

我想通过对训练集的图像进行随机修改来人为地增加训练集的大小。

问题

当我跑线时:

flipped_images = tf.image.random_flip_left_right(images)

我得到了以下错误:

  

AttributeError:'numpy.ndarray'对象没有属性'get_shape'

My Tensor“images”是“批量”ndarrays (shape=[batch, im_size, im_size, channels])的ndarray (shape=[im_size, im_size, channels])

为了检查我的输入数据是否以正确的形状和类型打包,我试图在(未修改的)教程“Tensorflow Mechanics 101”中应用这个简单的函数,我得到了同样的错误。

最后,尝试使用以下功能时仍然遇到同样的错误:

  • tf.image.random_flip_up_down()
  • tf.image.random_brightness()
  • tf.image.random_contrast()

问题

由于输入数据通常在Tensorflow中作为ndarrays传输,我想知道:

  1. 这是Tensorflow Python API的错误还是我的“错误”因为 输入数据的类型/形状?
  2. 我怎样才能让它工作并能够将tf.image.random_flip_left_right应用到我的训练集中?

1 个答案:

答案 0 :(得分:11)

这似乎是TensorFlow API中的一个不一致,因为几乎所有其他op函数都接受NumPy数组,而不管是tf.Tensor。我已提交an issue来跟踪修复程序。

幸运的是,有一个简单的解决方法,使用tf.convert_to_tensor()。用以下内容替换您的代码:

flipped_images = tf.image.random_flip_left_right(tf.convert_to_tensor(images))