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

Jul*_*lep 3 python-2.7 tensorflow

介绍

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

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

问题

当我运行这条线时:

flipped_images = tf.image.random_flip_left_right(images)
Run Code Online (Sandbox Code Playgroud)

我得到了以下错误:

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

我的Tensor"图像"是(shape=[batch, im_size, im_size, channels])"批量"ndarray的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我的训练集?

mrr*_*rry 12

这看起来像TensorFlow API中的不一致,因为几乎所有其他op函数都接受NumPy数组,无论在哪里tf.Tensor.我已经提交了一个问题来跟踪修复.

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

flipped_images = tf.image.random_flip_left_right(tf.convert_to_tensor(images))
Run Code Online (Sandbox Code Playgroud)