gpt4 book ai didi

python - Tensorflow 无法从 `image.shape` 中的方法中获取 `dataset.map( mapFn )`

转载 作者:行者123 更新时间:2023-12-03 15:48:10 25 4
gpt4 key购买 nike

我正在尝试做 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: Crop largest central square region of image

但是当我使用 tf.data.Dataset.map(transforms) 的方法时, 我得到 shape=(None,None,3)从内部 largest_sq_crop(image) .当我正常调用它时,该方法工作正常。

最佳答案

我找到了答案。这与我的调整大小方法在急切执行中运行良好的事实有关,例如tf.executing_eagerly()==True但在 dataset.map() 内使用时失败.显然,在那个执行环境中,tf.executing_eagerly()==False .

我的错误在于我解压缩图像形状以获得缩放尺寸的方式。 Tensorflow 图执行似乎不支持访问 tensor.shape元组。

  # wrong
b,h,w,c = img.shape
print("ERR> ", h,w,c)
# ERR> None None 3

# also wrong
b = img.shape[0]
h = img.shape[1]
w = img.shape[2]
c = img.shape[3]
print("ERR> ", h,w,c)
# ERR> None None 3

# but this works!!!
shape = tf.shape(img)
b = shape[0]
h = shape[1]
w = shape[2]
c = shape[3]
img = tf.reshape( img, (-1,h,w,c))
print("OK> ", h,w,c)
# OK> Tensor("strided_slice_2:0", shape=(), dtype=int32) Tensor("strided_slice_3:0", shape=(), dtype=int32) Tensor("strided_slice_4:0", shape=(), dtype=int32)


我在 dataset.map() 中使用下游的形状尺寸函数并抛出以下异常,因为它正在获取 None而不是一个值。
TypeError: Failed to convert object of type <class 'tuple'> to Tensor. Contents: (-1, None, None, 3). Consider casting elements to a supported type.

当我从 tf.shape() 切换到手动解包形状时,一切正常。

关于python - Tensorflow 无法从 `image.shape` 中的方法中获取 `dataset.map( mapFn )`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60204947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com