2019.5.14猫狗训练集

一、在小型数据集上从头开始训练一个卷积神经网络
1.下载数据
将图像复制到训练、验证和测试的目录
original_dataset_dir = ‘/Users/fchollet/Downloads/kaggle_original_data’
base_dir = ‘/Users/fchollet/Downloads/cats_and_dogs_small’
os.mkdir(base_dir)
train_dir = os.path.join(base_dir, ‘train’)
os.mkdir(train_dir)
我们来检查一下,看看每个分组(训练 / 验证 / 测试)中分别包含多少张图像
print(‘total training cat images:’, len(os.listdir(train_cats_dir)))
total training cat images: 1000
2构建网络
将猫狗分类的小型卷积神经网络实例化
from keras import layers
from keras import models
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation=‘relu’,
input_shape=(150, 150, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation=‘relu’))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation=‘relu’))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation=‘relu’))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(512, activation=‘relu’))
model.add(layers.Dense(1, activation=‘sigmoid’))
2.1配置模型用于训练
from keras import optimizers
model.compile(loss=‘binary_crossentropy’,
optimizer=optimizers.RMSprop(lr=1e-4),
metrics=[‘acc’])
3. 数据预处理

  1. 读取图像文件。
    (2) 将 JPEG 文件解码为 RGB 像素网格。
    (3) 将这些像素网格转换为浮点数张量。
    (4) 将像素值(0~255 范围内)缩放到 [0, 1] 区间(正如你所知,神经网络喜欢处理较小的输
    入值)。
    使用 ImageDataGenerator 从目录中读取图像
    from keras.preprocessing.image import ImageDataGenerator
    train_datagen = ImageDataGenerator(rescale=1./255)
    test_datagen = ImageDataGenerator(rescale=1./255)
    train_generator = train_datagen.flow_from_directory(
    train_dir,
    target_size=(150, 150),
    batch_size=20,
    class_mode=‘binary’)
    validation_generator = test_datagen.flow_from_directory(
    validation_dir,
    target_size=(150, 150),
    batch_size=20,
    class_mode=‘binary’)
    for data_batch, labels_batch in train_generator:

print(‘data batch shape:’, data_batch.shape)
print(‘labels batch shape:’, labels_batch.shape)
break

3.3.利用批量生成器拟合模型
history = model.fit_generator(
train_generator,
steps_per_epoch=100,
epochs=30,
validation_data=validation_generator,
validation_steps=50)
二、、AlexNet对猫狗数据进行训练
例子
三、vgg16对猫狗数据集训练

猜你喜欢

转载自blog.csdn.net/weixin_43732462/article/details/90247117