我正在做图像分类,我有一个训练集和一个分布不同的测试集。因此,为了尝试克服这个问题,我通过以下方式使用图像生成器:
trainingset = '/content/drive/My Drive/Colab Notebooks/Train'
testset = '/content/drive/My Drive/Colab Notebooks/Test'
batch_size = 32
train_datagen = ImageDataGenerator(
featurewise_center=True,
featurewise_std_normalization=True,
rescale = 1. / 255,\
zoom_range=0.1,\
rotation_range=10,\
width_shift_range=0.1,\
height_shift_range=0.1,\
horizontal_flip=True,\
vertical_flip=False)
train_generator = train_datagen.flow_from_directory(
directory=trainingset,
target_size=(256, 256),
color_mode="rgb",
batch_size=batch_size,
class_mode="categorical",
shuffle=True
)
test_datagen = ImageDataGenerator(
featurewise_center=True,
featurewise_std_normalization=True,
rescale = 1. / 255
)
test_generator = test_datagen.flow_from_directory(
directory=testset,
#target_size=(256, 256),
color_mode="rgb",
batch_size=batch_size,
class_mode="categorical",
shuffle=False
)
num_samples = train_generator.n
num_classes = train_generator.num_classes
input_shape = train_generator.image_shape
所以我使用featurewise_center=True
and featurewise_std_normalization=True
,通过做一些研究,我发现它应该可以解决问题,至少一点点。
但是,如果我构建我的 CNN 并对其进行训练,我会收到以下警告:
我不明白如何解决这个问题,因为如果我尝试按照警告中的说明进行拟合,它会告诉我我需要一个 numpy 数组,而我有一个字符串:
train_datagen.fit(trainingset)
我得到:
ValueError Traceback (most recent call last)
<ipython-input-7-afd35f2bf342> in <module>()
29 vertical_flip=False)
30
---> 31 train_datagen.fit(trainingset)
32
33 train_generator = train_datagen.flow_from_directory(
1 frames
/usr/local/lib/python3.6/dist-packages/numpy/core/_asarray.py in asarray(a,
dtype, order)
83
84 """
---> 85 return array(a, dtype, copy=False, order=order)
86
87
ValueError: could not convert string to float: '/content/drive/My Drive/Colab
Notebooks/Train'
我已经坚持了好几天了,但我不明白如何解决这个问题。有人可以帮助我吗?提前致谢。