CIFAR-10有5万个训练数据,1万多个测试数据 ;可直接下载使用

重要代码:载入数据,如果没有会自动在网上下载:
X_train, Y_train), (X_test, Y_test) = cifar10.load_data()
#对输入进行归一化处理
X_train=X_train /255
X_test =X_test /255
#对于输出进行one-hot-coding
Y_train = keras.utils.to_categorical(Y_train, 10)
Y_test = keras.utils.to_categorical(Y_test, 10)
# 进行数据增强
datagen = ImageDataGenerator
(
rotation_range=10, # randomly rotate images in the range (degrees, 0 to 180)
width_shift_range=0.2, # randomly shift images horizontally (fraction of total width)
height_shift_range=0.2, # randomly shift images vertically (fraction of total height)
horizontal_flip=True, # randomly flip images
vertical_flip=True?# randomly flip images
)
?datagen.fit(X_train)
#导入预训练好权重的残差神经网络RESNET50
res_model = keras.applications.resnet50.ResNet50(weights='imagenet', include_top=False,
input_shape=(200, 200, 3))
res_model.summary()
#定义优化器和编译模型
?
adam=keras.optimizers.Adam(lr=0.0001,beta_1=0.9,beta_2=0.999,epsilon=1e-08)
model.compile(optimizer=adam, loss='binary_crossentropy', metrics=['acc'])
#训练模型,用测试集做VALIDATION数据直接查看测试结果
batch_size=20
model.fit_generator(datagen.flow(X_train, Y_train,batch_size=batch_size),
steps_per_epoch=X_train.shape[0]? ?// batch_size,
epochs=1,
validation_data=(X_test, Y_test))
主要流程介绍:
1.任务和模型定义:在CIFAR-10数据集上常见目标的分类;
2.数据处理与特征工程:对数据进行了归一化和one-hot-coding等处理,做
了数据增强;
3.模型搭建与训练:下载了预训练好的RESNET50,加入了UPSAMPLING
层,用了ADAM优化器,同时采用了mini-Batch的方式进行训练,只训练了1
个EPOCH;
4.模型测试及优化:通过数据增强和迁移学习,仅用了5万个训练数据中的
200个数据,1个Epoch的训练就让模型在测试集上面准确度就接近了90%。
|