基于《Keras快速上手》这本书整理一下我的学习笔记(PS:是本好书)
一、图像识别
端到端的MNIST训练数字识别神经网络搭建过程:
(1) 肯定是要各种引入了
(2) 读入数据,整理数据
将训练数据和验证数据(X_train,X_test)进行整理:
① 将原本n*m的数据整理成标准的四维张量形式(样本数量,长,宽,1)
②把像素值变为浮点型
将训练标签和验证标签(y_train,y_test)进行整理:
①定义一个one hot函数(生成一个zeros(n); 将等于y值的位置设置为1,eg:y_ohe[y]=1)
②利用刚刚定义好的函数将所有的标签转换为one hot(利用for循环)
(3) 开始搭建网络啦~
model=Sequential() model.add=…… OR model=Sequential()
① 先添加卷积层、
model.add(Conv2D(设置过滤器的数量(也是输出维度);过滤器的大小;一次跳几个小格;是否在周围加上0;输入数据的长宽;激活函数))
②再添加池化层
model.add(Maxpooling2D(在多大范围内取最大值你得告诉我呀))
③然后添加放弃层(防止过度拟合,扔掉一部分数据)
model.add(Dropout(常用的为0.2、0.3))
④可以循环搭建啦,但是要更改过滤器的数量,逐渐增加
(4)构造全连接层,拍扁所有输出单元
model.add(Dense(这一层的输出维度;用什么激活函数))
……
model.add(Dense(最后一层的输出维度与分类数相同;用什么激活函数))
(5)构造损失函数
model.compile(你说用啥损失函数loss就用啥;你说用哪个优化器optimizer就用哪个;训练的性能指标,包含准确率……)
(6)把数据组好队,开始训练啦~
model.fit(训练数据;one hot训练标签;验证数据;验证标签;训练几个回合;几个数据一个小组)
(7)看看我的模型表现如何
scores=model.evaluate(验证数据;验证标签;日志记录)