解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题


Posted in Python onJune 17, 2020

遇到的问题

解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题

当时自己在使用Alexnet训练图像分类问题时,会出现损失在一个epoch中增加,换做下一个epoch时loss会骤然降低,一开始这个问题没有一点头绪,我数据也打乱了,使用的是tf.train.shuffle_batch

在capacity中设置一个值,比如是1000吧,每次取一千个数据后将这一千个数据打乱,本次使用的数据集就是每个种类1000多,而我加载数据时是一类一类加载的,这就造成了每一批次的开始可以跟前一类数据做打乱处理,但是在中间数据并不能达到充分的shuffle

解决问题

在加载数据集的时候用numpy中的shuffle将数据集充分的打乱后在读入tfrecord中,之后读取的时候使用tf.tain.shuffle_batch和使用tf.train.batch就没有区别了。另外capacity这个数值不益设置过大,会对自己的电脑造成压力。

补充知识:MATLAB中使用AlexNet、VGG、GoogLeNet进行迁移学习

直接贴代码,具体用法见注释:

clc;clear;

net = alexnet; %加载在ImageNet上预训练的网络模型
imageInputSize = [227 227 3];
%加载图像
allImages = imageDatastore('.\data227Alexnet',...
 'IncludeSubfolders',true,...
 'LabelSource','foldernames');
 %划分训练集和验证集
 [training_set,validation_set] = splitEachLabel(allImages,0.7,'randomized');
 %由于原始网络全连接层1000个输出,显然不适用于我们的分类任务,因此在这里替换
layersTransfer = net.Layers(1:end-3);
categories(training_set.Labels)
numClasses = numel(categories(training_set.Labels));
%新的网络
layers = [
 layersTransfer
 fullyConnectedLayer(numClasses,'Name', 'fc','WeightLearnRateFactor',1,'BiasLearnRateFactor',1)
 softmaxLayer('Name', 'softmax')
 classificationLayer('Name', 'classOutput')];

lgraph = layerGraph(layers);
plot(lgraph)
%对数据集进行扩增
augmented_training_set = augmentedImageSource(imageInputSize,training_set);

opts = trainingOptions('adam', ...
 'MiniBatchSize', 32,... % mini batch size, limited by GPU RAM, default 100 on Titan, 500 on P6000
 'InitialLearnRate', 1e-4,... % fixed learning rate
 'LearnRateSchedule','piecewise',...
 'LearnRateDropFactor',0.25,...
 'LearnRateDropPeriod',10,...
 'L2Regularization', 1e-4,... constraint
 'MaxEpochs',20,..
 'ExecutionEnvironment', 'gpu',...
 'ValidationData', validation_set,...
 'ValidationFrequency',80,...
 'ValidationPatience',8,...
 'Plots', 'training-progress')

net = trainNetwork(augmented_training_set, lgraph, opts);

save Alex_Public_32.mat net

[predLabels,predScores] = classify(net, validation_set);
plotconfusion(validation_set.Labels, predLabels)
PerItemAccuracy = mean(predLabels == validation_set.Labels);
title(['overall per image accuracy ',num2str(round(100*PerItemAccuracy)),'%'])

MATLAB中训练神经网络一个非常大的优势就是训练过程中各项指标的可视化,并且最终也会生成一个混淆矩阵显示验证集的结果。

以上这篇解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python中使用SQLite的简单教程
Apr 29 Python
Python函数中的函数(闭包)用法实例
Mar 15 Python
深入理解python中的闭包和装饰器
Jun 12 Python
Python实现统计文本文件字数的方法
May 05 Python
将字典转换为DataFrame并进行频次统计的方法
Apr 08 Python
PyQt5实现类似别踩白块游戏
Jan 24 Python
Flask框架学习笔记之使用Flask实现表单开发详解
Aug 12 Python
python_mask_array的用法
Feb 18 Python
Python图像处理库PIL的ImageGrab模块介绍详解
Feb 26 Python
Python搭建Keras CNN模型破解网站验证码的实现
Apr 07 Python
用opencv给图片换背景色的示例代码
Jul 08 Python
Python os和os.path模块详情
Apr 02 Python
Java如何基于wsimport调用wcf接口
Jun 17 #Python
使用keras内置的模型进行图片预测实例
Jun 17 #Python
Python虚拟环境库virtualenvwrapper安装及使用
Jun 17 #Python
基于TensorFlow的CNN实现Mnist手写数字识别
Jun 17 #Python
Keras 加载已经训练好的模型进行预测操作
Jun 17 #Python
基于Tensorflow的MNIST手写数字识别分类
Jun 17 #Python
Kears 使用:通过回调函数保存最佳准确率下的模型操作
Jun 17 #Python
You might like
打造计数器DIY三步曲(上)
2006/10/09 PHP
php将session放入memcached的设置方法
2014/02/14 PHP
PHP通过内置函数memory_get_usage()获取内存使用情况
2014/11/20 PHP
php解析base64数据生成图片的方法
2016/12/06 PHP
Laravel框架实现的rbac权限管理操作示例
2019/01/16 PHP
刷新页面实现方式总结(HTML,ASP,JS)
2008/11/13 Javascript
javascript 进阶篇2 CSS XML学习
2012/03/14 Javascript
jquery自动填充勾选框即把勾选框打上true
2014/03/24 Javascript
javascript返回顶部的按钮实现方法
2016/01/09 Javascript
jQuery获取父元素节点、子元素节点及兄弟元素节点的方法
2016/04/14 Javascript
angular实现表单验证及提交功能
2017/02/01 Javascript
JavaScript+HTML5实现的日期比较功能示例
2017/07/12 Javascript
深入理解React高阶组件
2017/09/28 Javascript
bootstrap日期插件daterangepicker使用详解
2017/10/19 Javascript
jQuery+SpringMVC中的复选框选择与传值实例
2018/01/08 jQuery
layui问题之模拟table表格中的选中按钮选中事件的方法
2019/09/20 Javascript
vue内置组件component--通过is属性动态渲染组件操作
2020/07/28 Javascript
原生JS实现pc端轮播图效果
2020/12/21 Javascript
[40:27]完美世界DOTA2联赛PWL S3 PXG vs GXR 第一场 12.19
2020/12/24 DOTA
Python浅拷贝与深拷贝用法实例
2015/05/09 Python
深入理解python中函数传递参数是值传递还是引用传递
2017/11/07 Python
python3+PyQt5+Qt Designer实现扩展对话框
2018/04/20 Python
解决新django中的path不能使用正则表达式的问题
2018/12/18 Python
selenium+python自动化测试之多窗口切换
2019/01/23 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
2019/05/23 Python
opencv转换颜色空间更改图片背景
2019/08/20 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
2019/09/18 Python
python+requests接口压力测试500次,查看响应时间的实例
2020/04/30 Python
乡镇办公室工作决心书
2014/03/11 职场文书
小学生安全演讲稿
2014/04/25 职场文书
检查机关领导群众路线教育实践活动个人整改措施
2014/10/28 职场文书
幼儿教师师德师风自我评价
2015/03/05 职场文书
因身体原因离职的辞职信范文
2015/05/12 职场文书
公司人力资源管理制度
2015/08/05 职场文书
幼儿园托班教育随笔
2015/08/14 职场文书
MyBatis-Plus 批量插入数据的操作方法
2021/09/25 Java/Android