我想通过在tensorflow中链接不同的图像变换操作符来进行实时数据增强.我的代码从图像解码开始,然后运行不同的转换,但它抛出一个ValueError('\'image\' must be fully defined.').以下是重现此错误的示例:
def decode_and_augment(image_raw):
decoded = tf.image.decode_jpeg(image_raw)
flipped = tf.image.random_flip_left_right(decoded)
return flipped
Run Code Online (Sandbox Code Playgroud)
mrr*_*rry 12
出现此错误是因为tf.image.random_flip_left_right()op在构建图形时检查其输入的静态形状,并tf.image.decode_jpeg()生成对内容具有数据依赖性的张量,image_raw因此形状不是静态已知的.目前解决这个问题的唯一方法是decoded使用Tensor.set_shape()如下设置张量的静态形状:
decoded = tf.image.decode_jpeg(image_raw)
decoded.set_shape([IMAGE_HEIGHT, IMAGE_WIDTH, NUM_CHANNELS])
flipped = tf.image.random_flip_left_right(decoded)
Run Code Online (Sandbox Code Playgroud)
这样做的缺点是所有图像现在必须具有相同的大小(和通道数).
许多图像操作不像TensorFlow的其余部分那样遵循相同的渐变和动态形状推断(它允许您具有未知的形状或尺寸,假设程序在构建图形时是正确的,并检查实际形状在运行).这被认为是目前的一个错误,我们将找到解决问题的方法.
| 归档时间: |
|
| 查看次数: |
1570 次 |
| 最近记录: |