如何模仿手写数字识别的LeNet卷积神经网络,搭建用于对女明星进行分类的程序
本项目的文件夹下有一个压缩包,压缩包里有12名女明星的照片,怎么样才能模仿手写数字识别的LeNet卷积神经网络,搭建用于区分女明星的程序。
说明:
1.神经网络训练完成后,再选一张不属于训练集和测试集的图片,用训练好的神经网络进行预测
2.基本步骤提示:
(a).解压缩,用os模块获取每个图片的地址列表和标签 (标签就是文件夹名)
(b).建立数据集对象DataSet类,读取数据集,分割训练集和测试集,对图片进行转换和处理
(c).建立LeNet卷积神经网络的类(注意,由于图片大小、数据集数量有变,否则精度肯定很差)
(d).建立模型,配置参数,训练模型
(e).另下载一张照片,进行预测,输出预测结果
提示:
# 提示:首先请对上述生成每一组图片文件列表进行切割,分为训练集列表、测试集列表,比例为8:2
# 提示:构建DataSet类,用来给paddle2.0喂数据
class MyDataset(paddle.io.Dataset):
"""
步骤一:继承paddle.io.Dataset类
"""
def __init__(self, train_list, val_list, mode='train'):
"""
步骤二:实现构造函数,定义数据读取方式
"""
super(MyDataset, self).__init__()
self.data= []
if mode == 'train':
# 获取训练集的self.data,请同学们自己写
else:
# 获取测试集的self.data,请同学们自己写
def load_img(self, image_path):
# 从路径名返回图片的函数请同学们自己写
return image
def __getitem__(self, index):
"""
步骤三:实现__getitem__方法,定义指定index时如何获取数据,并返回单条数据(训练数据,对应的标签)
"""
image = self.load_img(self.data[index][0])
label = self.data[index][1]
# 对图片进行统一化处理,请同学们自己写
# 提示:图片尺寸要统一,尺寸不要太大,要转换成RGB格式 (CV2默认格式都是BGR)
return image, np.array(label, dtype='int64')
def __len__(self):
"""
步骤四:实现__len__方法,返回数据集总数目
"""
return len(self.data)