第一章
这一章主要是自己编写鸢尾花分类程序
主要步骤为:
(1) 数据集读入
(2) 数据集乱序
(3) 数据集分割成永不相见的训练集和测试集
(4) 配成[输入特征,标签]对,每次喂入一小撮(batch):
(5) 定义神经网路中所有可训练参数
(6) 计算训练集的loss,并使用梯度下降法更新参数
(7) 计算当前参数在测试集的准确率,显示当前准确率 acc
(8) acc / loss 可视化
第二章
1 神经网络复杂度
1.1 时间复杂度 即模型运算次数
1.2 空间复杂度 即模型参数量
2 学习率策略
即随着迭代的继续逐步减小学习率
2.1 指数衰减
2.2 分段常数衰减
3 激活函数
3.1 sigmoid
3.2 tanh
3.3 ReLU
3.4 Leaky ReLU
3.5 softmax
3.6 建议
4 损失函数
4.1 均方误差损失函数
4.2 交叉熵损失函数
4.3 自定义损失函数
5 欠拟合与过拟合
过拟合的一个解决方法是增加正则化
6 优化器
6.1.1 vanilla SGD 最初的SGD
6.1.2 SGD with Momentum 带动量,类似于给他的下降增加了一个惯性
6.1.3 SGD with Nesterov Acceleration 对自己的下降方向进行预判
6.2 AdaGrad 学习率除以梯度的累积平方和,从而达到自适应学习率的效果
6.3 RMSProp 同AdaGrad 相比,不关注全部梯度只关注过去某一窗口内的梯度
6.4 AdaDelta
6.5 Adam 即SGD with Momentum的一阶动量加上 RMSProp 的二阶动量
6.5 优化器选择
6.6 优化算法的常用tricks 优先Adam
第三章
搭建神经网络六步法
第一步:import 相关模块,如 import tensorflow as tf。
第二步:指定输入网络的训练集和测试集,如指定训练集的输入 x_train 和标签
y_train,测试集的输入 x_test 和标签 y_test。
第三步:逐层搭建网络结构,model = tf.keras.models.Sequential()。
第四步:在 model.compile()中配置训练方法,选择训练时使用的优化器、损失
函数和最终评价指标。
第五步:在 model.fit()中执行训练过程,告知训练集和测试集的输入值和标签、
每个 batch 的大小(batchsize)和数据集的迭代次数(epoch)。
第六步:使用 model.summary()打印网络结构,统计参数数目。
第四章
数据增强、断点续训
第五章
介绍了五个经典的cnn神经网络
InceptionNet 最初的设计思想,即通过不同尺寸卷积层和池化层的横向组合(卷积、池化后的尺寸相同,通道可以相加)来拓宽网络深度,可以增加
网络对尺寸的适应性。