第一次编写softmax模型测试通过跟随经典的深度学习“Dive-into-DL-Pytorch”编写softmax模型使用FashionMNIST数据集6万张训练数据集1万张测试数据集含10个类别的预测普通办公电脑cpuvscode编辑器jupyter上运行跑通。备注代码获取地址在“Dive-into-DL-Pytorch”中可从github上直接拉取。以下是第一次运行配置batchsize256, epoch5 lr0.1使用SGD随机优化器运行结果包含损失值、准确率评估结果思考每一轮训练损失loss都在下降 准确率accurary预测准确数/数据集总数上升到百分80十几。 想进一步提高准确率于是进一步调参重跑。第二模型调优加大epoch下降次数第二次运行配置batchsize256, epoch10 lr0.1使用SGD随机优化器优化点加大epoch继续下降、降低损失值运行结果结果思考可以发现第6个epoch开始损失没变化准确率也没多少提升。 是已经收敛到最佳性能还是收敛异常 想到可能原因是学习率过大或固定不变于是进一步调参重跑。第三模型调优使用学习率衰减第三次运行配置batchsize256, epoch10 lr使用torch.optim.lr_scheduler.StepLR使用SGD随机优化器优化点在训练过程中如果学习率太大优化器会在“最低损失点”附近反复横跳无法落入最深的谷底 如果学习率固定epoch后期就无法进行更精细的收敛。 torch.optim.lr_scheduler.StepLR是pythorch中的学习率调度器每隔固定轮数将学习率乘以一个衰减系数。运行结果结果思考效果和第二步差不多试下调整优化器。第四模型调优使用Adam优化器第四次运行配置batchsize256, epoch10lr0.01 使用Adam优化器优化点 SGD优化器收敛速度慢且容易陷入局部最优解 Adma优化器带有“动量”和“自适应学习率” 如果梯度方向一致就会加速如果振荡就会减速。运行结果结果思考准确率有小小幅提升但不多当前的网络是单层线性网络只能处理线性边界考虑加大模型复杂度。第五模型调优加大模型复杂度引入多层网络和激活函数第四次运行配置batchsize256, epoch10 使用Adam优化器模型从nn.linear-softmax变为nn.Linear - ReLU - nn.Linear - Softmax优化点 原来的模型是单层线性softmax模型只能处理线性边界。 图像分类数据可能是非线性的模型能力不够就会出现欠拟合。引入多层网络和激活函数能更好的拟合复杂的曲线。运行结果结果思考准确率有小幅提升难道这就是图像识别的极限了继续学习CNN等待后续使用CNN网络继续识别测试。。。。。。