python-3.x CNN的Tensorflow ImageDataGenerator在查看数据时返回“TypeError:Cannot interpret 'tf.float32' as a data type”

4ngedf3f  于 2023-11-20  发布在  Python
关注(0)|答案(1)|浏览(426)

我试图制作一个CNN,一切都很好,直到我到达model.fit(...),当我在标题中得到了我以前从未见过的TypeError。我在ImageDataGenerator中将dtype转换为tf.float32。flow_from_目录似乎工作得很好,并且在验证和训练数据集之间有正确的图像数量,所以我不确定发生了什么。
我的代码在下面,不包括导入和随机变量,它们只是int或文件夹的文件路径。

from keras.preprocessing.image import ImageDataGenerator

img_height, img_width = 224

datagen = ImageDataGenerator(
    rescale=1./255,
    data_format='channels_last',
    validation_split=0.1,
    dtype=tf.float32,
)

train_generator = datagen.flow_from_directory(
    filepath,
    target_size = (img_height,img_width),
    batch_size=batch_size
)

nonsense = train_generator[0][0] #<===Error is happening here
print(nonsense.dtype)`

字符串
我希望这能毫无问题地工作。但是,我不知道是否有什么潜在的东西我错过了我使用的tensorflow 2.10。

mwg9r5ms

mwg9r5ms1#

仅供参考,默认的dtype已经是tf.float32,所以不需要更改它。但是如果你想显式地指定它,请使用字符串格式,如下所示:

from keras.preprocessing.image import ImageDataGenerator

datagen = ImageDataGenerator(
    rescale=1./255,
    validation_split=0.1,
    dtype='float32'
)

字符串
下面是一个完全可复制的示例:

from keras.preprocessing.image import ImageDataGenerator

datagen = ImageDataGenerator(
    rescale=1./255,
    validation_split=0.1,
    dtype='float32'
)

train_generator = datagen.flow_from_directory(
    'path/to/my/dataset',
    target_size=(32, 32),
    batch_size=16
)

inputs, labels = next(iter(train_generator))

相关问题