使用 tf.image.random 的张量流错误:"numpy.ndarray"对象没有属性"get_shape"



Intro

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

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

问题

当我运行该行时:

flipped_images = tf.image.random_flip_left_right(images)

我得到以下错误:

属性

错误:"numpy.ndarray"对象没有属性"get_shape"

我的张量"图像"是"批处理"ndarray (shape=[im_size, im_size, channels])的ndarray (shape=[batch, im_size, im_size, channels])

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

最后,尝试使用以下函数时,我仍然遇到相同的错误:

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

问题

由于输入数据通常作为ndarray在Tensorflow中携带,我想知道:

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

似乎是TensorFlow API中的不一致,因为几乎所有其他操作函数都接受NumPy数组,只要需要tf.Tensor。我已经提交了一个问题来跟踪修复。

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

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

最新更新