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中携带,我想知道:
- 这是Tensorflow Python API的错误还是我的"错",因为我的输入数据的类型/形状?
- 我怎样才能让它工作并能够将
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))