gpt4 book ai didi

python - TensorFlow 数据集 .map() 方法不适用于内置 tf.keras.preprocessing.image 函数

转载 作者:行者123 更新时间:2023-12-05 05:01:57 27 4
gpt4 key购买 nike

我这样加载数据集:

import tensorflow_datasets as tfds

ds = tfds.load(
'caltech_birds2010',
split='train',
as_supervised=False)

这个函数工作正常:

import tensorflow as tf

@tf.function
def pad(image,label):
return (tf.image.resize_with_pad(image,32,32),label)

ds = ds.map(pad)

但是当我尝试映射不同的内置函数时

from tf.keras.preprocessing.image import random_rotation

@tf.function
def rotate(image,label):
return (random_rotation(image,90), label)

ds = ds.map(rotate)

我收到以下错误:

AttributeError: 'Tensor' object has no attribute 'ndim'

这不是给我带来问题的唯一函数,使用或不使用 @tf.function 装饰器都会发生这种情况。

非常感谢任何帮助!

最佳答案

我会尝试在此处使用 tf.py_function 进行随机旋转。例如:

def rotate(image, label):
im_shape = image.shape
[image, label,] = tf.py_function(random_rotate,[image, label],
[tf.float32, tf.string])
image.set_shape(im_shape)
return image, label

ds = ds.map(rotate)

尽管我认为他们根据 What is the difference in purpose between tf.py_function and tf.function? 在这里做类似的事情,即使 tf.function 具有性能优势,tf.py_function 更直接地通过 tensorflow 执行 python 代码。

关于python - TensorFlow 数据集 .map() 方法不适用于内置 tf.keras.preprocessing.image 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62414658/

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