我有一个包含各种尺寸图像的文件夹。我需要将它们全部调整为(160,120)并创建一个tf.data.Dataset。为此,我使用了tf.data.Dataset.from_generator。但是我似乎无法弄清楚如何将其他参数(如目录本身)发送给生成器,例如target_size,class_mode等。[注意:我正在使用Tensorflow 2.0 Beta1]
args参数采用tf.Tensor对象,并将其用作生成器的参数。我尝试将所有参数作为列表传递。
# gen is the ImageDataGenerator
real_imgs_dataset = tf.data.Dataset.from_generator(gen.flow_from_directory,
args =
(data_path, # DIRECTORY
(160, 128), # TARGET SIZE
'rgb', # COLOR MODE
None, # CLASSES
None, # CLASS MODE
32, # BATCH SIZE
True), # SHUFFLE
output_types = tf.float32,
output_shapes = ([None,160,128,3])
)
我想做的是将图像传递给生成器,然后生成器将逐批吐出图像并创建一个tf.data.Dataset。但是,当我尝试运行上面的代码片段时,出现错误消息:-
“ ValueError:尝试将不受支持的类型()的值(无)转换为张量”
我在该处报告了类似的问题:https://github.com/tensorflow/tensorflow/issues/33133
适合您的情况的建议解决方案是:
gen_mod = gen.flow_from_directory(directory=data_path, target_size=(
160, 128), class_mode=None, batch_size=32, shuffle=True)
real_imgs_dataset = tf.data.Dataset.from_generator(
lambda: gen_mod,
output_types=tf.float32,
output_shapes=([None, 160, 128, 3])
)
希望它有所帮助!