卷积神经网络的搭建
1 预处理训练集与测试集图片
说明:因为我们从网上下载的图片各种格式都有大小也不统一,所以图片的批量预处理是很必要的。
(1)将图片大小统一修改成100*100,可参考下面代码
1 | def convertjpg(jpgfile,outdir,width=100,height=100): |
# 统一图片类型
1 | def ranamesJPG(filepath, kind): images = os.listdir(filepath) for name in images: os.rename(filepath+name, filepath+kind+'_'+name.split('.')[0]+'.jpg') print(name) print(name.split('.')[0]) ranamesJPG('C:/Users/ASUS/Desktop/cat/英国短毛猫/','3') |
这里有必要说明为什么要修改文件名?
其实是这样的,因为训练集和测试集的图片一共有几百张,而我们训练时,不仅要传递图片,而且还要告诉卷积神经网络每一张图片对应的 标签,如果手工添加标签的话,可想而知,会有很大的工作量。这里注明:0_xxx代表布偶猫、1_xxx代表孟买猫、2_xxx代表暹罗猫、3_xxx代表英国短毛猫。
2 训练模型与测试
1 | import os |
将训练集图片转换成数组
1 | ima1 = os.listdir('./cat/train') |
根据文件名提取标签
1 | y_train = [] |
—————————————————————————————–
将测试集图片转化成数组
1 | ima2 = os.listdir('./cat/test') |
根据文件名提取标签
1 | y_test = [] |
将标签转换格式
y_train = np_utils.to_categorical(y_train)
y_test = np_utils.to_categorical(y_test)
将特征点从0255转换成01提高特征提取精度
x_train = x_train.astype(‘float32’)
x_test = x_test.astype(‘float32’)
x_train /= 255
x_test /= 255
搭建卷积神经网络
1 | model = Sequential() |
注:需要安装h5py,用于保存和加载xx.h5类型的权重文件
直接右键run运行程序生成权重文件,用于以后的预测。