我找到了一些用Keras创建机器学习模型的代码,但我真的不知道如何将自己的图像放在那里。模型是这样创建的:
model = Model(inputs=base_model.input, outputs=predictions)
model.compile(optimizer=SGD(lr=0.0001, momentum=0.9), loss='categorical_crossentropy', metrics = ['accuracy'])
training_set是这样创建的:
train_datagen = ImageDataGenerator(rescale = 1./255,
shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip = True)
training_set = train_datagen.flow_from_directory('/content/drive/My Drive/multiclass/train',
target_size = (224, 224),
batch_size = 32,
class_mode = 'categorical')
在这里,你可以看到一个谷歌驱动器位置的路径,作者在from google.colab import drive; drive.mount('/content/drive/')
开头这样连接它。但我看不出这个谷歌驱动器中的数据是什么样子的。
有了这些数据,训练就这样开始了:
# Training the model for 5 epochs
model.fit_generator(training_set,
steps_per_epoch = 8000,
epochs = 5,
validation_data = test_set,
validation_steps = 200)
我怎样才能把我自己的图像放在那里?模型如何知道哪个图像属于哪个类别?我必须把它们放在不同的文件夹中,并以我的类命名吗?
我想知道的另一件事是,图像必须是一定的大小,比如在flow_from_directory方法中target_size是224*224像素,还是在这个模型中自动转换?
我感谢每一个答案!
向Alex 致以最良好的问候
这里有一个简单的例子。假设你想建立一个可以对狗、猫和老鼠进行分类的CNN。所以你有三节课。现在假设您已经收集了1000张狗的图像、1000张猫的图像和1000张老鼠的图像。现在,您需要获取图像数据集,并将其拆分为三个数据集,一个用于训练,一个进行验证,另一个用于测试。因此,首先创建3个目录。让我们称它们为train_dir、test_dir和valid_dir。现在,在每个目录中创建三个子目录,分别称为猫、狗和老鼠。所以你有下面显示的结构
train_dir
-- cats
-- dogs
-- mice
test_dir
-- cats
-- dogs
-- mice
valid_dir
-- cats
-- dogs
-- mice
现在假设您希望80%的数据用于培训,10%用于验证,10%用于测试。因此,拍摄800张猫的照片,并将其放入train_dir中的cats文件夹中。对dog目录的800个dog图像和mices目录的800张图像执行相同操作。然后,在剩下的600张图像中,拍摄100张猫的图像,然后放在test_dir下的cat目录中。对100个狗图像和100个老鼠图像执行相同操作。最后,取下剩下的300张图片,将100张cat图片放在valid_dir下的cat目录中。对100个狗图像和100个老鼠图像执行相同操作。您的数据集现已完成。然后创建一个训练、测试和验证生成器。对于flow_from_directory中的列车生成器,使用train_dir,对于有效生成器,使用valid_dir,而对于测试生成器,使用test_dir。