执行训练

训练的数据输入可以全部载入内存,下面这两种方法
#按照批次进行训练(传入的是一个批次的样本和标签)样本少,将所有的样本作为一个批次
cost = model.train_on_batch(x_data,y_data)
#划分批次进行训练(传入的是所有的数据进行分批次训练)样本数量多。
model.fit(x_train,y_train,batch_size=32,epochs=10)
也可以自己从硬盘中分批次读取。

#定义数据处理
train_datagen = ImageDataGenerator(
    rotation_range = 40,     # 随机旋转度数
    width_shift_range = 0.2, # 随机水平平移
    height_shift_range = 0.2,# 随机竖直平移
    rescale = 1/255,         # 数据归一化
    shear_range = 20,       # 随机错切变换
    zoom_range = 0.2,        # 随机放大
    horizontal_flip = True,  # 水平翻转
    fill_mode = 'nearest',   # 填充方式
)

batch_size = 32

# 生成训练数据,这个不会一次载入
train_generator = train_datagen.flow_from_directory(
    'image/train',
    target_size=(150,150),
    batch_size=batch_size,
    
train_generator.class_indices#打印类别

#测试集
test_datagen = ImageDataGenerator(
    rescale = 1/255,         # 数据归一化
)
# 测试数据
test_generator = test_datagen.flow_from_directory(
    'image/test',
    target_size=(150,150),
    batch_size=batch_size,
    ) 
model.fit_generator(train_generator,
              steps_per_epoch=len(train_generator),#路径内有400个照片每个epoch有多少个周期呢?这里不用批次了
              epochs=30,#一共训练多少个周期
              validation_data=test_generator,#验证集的迭代器
              validation_steps=len(test_generator))#验证集一个周期分多少个批次呢

 

posted @ 2020-08-30 09:39  yunshangyue  阅读(214)  评论(0编辑  收藏  举报