我正在尝试做的tensorflow等效操作torch.transforms.Resize(TRAIN_IMAGE_SIZE),它将最小的图像尺寸调整为TRAIN_IMAGE_SIZE。像这样
def transforms(filename):
parts = tf.strings.split(filename, '/')
label = parts[-2]
image = tf.io.read_file(filename)
image = tf.image.decode_jpeg(image)
image = tf.image.convert_image_dtype(image, tf.float32)
# this doesn't work with Dataset.map() because image.shape=(None,None,3) from Dataset.map()
image = largest_sq_crop(image)
image = tf.image.resize(image, (256,256))
return image, label
list_ds = tf.data.Dataset.list_files('{}/*/*'.format(DATASET_PATH))
images_ds = list_ds.map(transforms).batch(4)
简单的答案在这里:Tensorflow:裁剪图像的最大中央正方形区域
但是当我使用该方法时tf.data.Dataset.map(transforms),我shape=(None,None,3)从内部得到了largest_sq_crop(image)。当我正常调用该方法时,它可以正常工作。
可以包括的定义
—
jakub
largest_sq_crop吗?
EagerTensors内部Dataset.map()形状不可用。有解决方法吗?