Tensorflow:tf.image.central_crop 问题
Tensorflow: Issue with tf.image.central_crop
我在使用 tf.image.central_crop()
时遇到了以下问题
def preprocessor(image):
image = tf.reshape(image, (IMAGE_HEIGHT, IMAGE_WIDTH, IMAGE_CHANNELS))
print(image.get_shape())
image = tf.image.central_crop(image,0.8)
print(image.get_shape())
return image
输出
(384, 384, 3) and (?, ?, 3)
central_crop()
函数似乎丢失了有关 图像的 高度 和 宽度 的信息张量。
为什么会这样?
Tensorflow version: tensorflow 1.0.0, tensorflow-gpu 1.0.1
你是对的。除非对其进行评估,否则无法检索张量的形状。如果你想在接下来的操作中使用它,你可以使用 "tf.shape(image)"。
TF 裁剪了图像但无法获得其形状。如果你只想检查它是否在做,请按照这个(运行 会话):
import tensorflow as tf
import numpy as np
IMAGE_HEIGHT = 384
IMAGE_WIDTH = 384
IMAGE_CHANNELS = 3
def preprocessor(image):
image = tf.reshape(image, (IMAGE_HEIGHT, IMAGE_WIDTH, IMAGE_CHANNELS))
image = tf.image.central_crop(image,0.8)
shape = tf.shape(image)
return image,shape
image = tf.random_normal([IMAGE_HEIGHT,IMAGE_WIDTH,IMAGE_CHANNELS])
image_cropped,shape = preprocessor(image)
sess = tf.Session()
im_v,im_crop_v,shape_v = sess.run([image,image_cropped,shape])
print(im_v.shape)
print(im_crop_v.shape)
print(shape_v)
输出:
(384, 384, 3)
(308, 308, 3)
[308 308 3]
我在使用 tf.image.central_crop()
def preprocessor(image):
image = tf.reshape(image, (IMAGE_HEIGHT, IMAGE_WIDTH, IMAGE_CHANNELS))
print(image.get_shape())
image = tf.image.central_crop(image,0.8)
print(image.get_shape())
return image
输出
(384, 384, 3) and (?, ?, 3)
central_crop()
函数似乎丢失了有关 图像的 高度 和 宽度 的信息张量。
为什么会这样?
Tensorflow version: tensorflow 1.0.0, tensorflow-gpu 1.0.1
你是对的。除非对其进行评估,否则无法检索张量的形状。如果你想在接下来的操作中使用它,你可以使用 "tf.shape(image)"。
TF 裁剪了图像但无法获得其形状。如果你只想检查它是否在做,请按照这个(运行 会话):
import tensorflow as tf
import numpy as np
IMAGE_HEIGHT = 384
IMAGE_WIDTH = 384
IMAGE_CHANNELS = 3
def preprocessor(image):
image = tf.reshape(image, (IMAGE_HEIGHT, IMAGE_WIDTH, IMAGE_CHANNELS))
image = tf.image.central_crop(image,0.8)
shape = tf.shape(image)
return image,shape
image = tf.random_normal([IMAGE_HEIGHT,IMAGE_WIDTH,IMAGE_CHANNELS])
image_cropped,shape = preprocessor(image)
sess = tf.Session()
im_v,im_crop_v,shape_v = sess.run([image,image_cropped,shape])
print(im_v.shape)
print(im_crop_v.shape)
print(shape_v)
输出:
(384, 384, 3)
(308, 308, 3)
[308 308 3]