解决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 解析XML python模块xml.dom解析xml实例代码
Feb 07 Python
python之wxPython菜单使用详解
Sep 28 Python
python插入数据到列表的方法
Apr 30 Python
python3批量删除豆瓣分组下的好友的实现代码
Jun 07 Python
简单谈谈python的反射机制
Jun 28 Python
python 全文检索引擎详解
Apr 25 Python
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
Apr 17 Python
python并发编程多进程之守护进程原理解析
Aug 20 Python
Python从文件中读取指定的行以及在文件指定位置写入
Sep 06 Python
Python tcp传输代码实例解析
Mar 18 Python
Python基于httpx模块实现发送请求
Jul 07 Python
总结Python常用的魔法方法
May 25 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
不用数据库的多用户文件自由上传投票系统(1)
2006/10/09 PHP
PHP中快速生成随机密码的几种方式
2017/04/17 PHP
Smarty模板类内部原理实例分析
2019/07/03 PHP
jQuery Clone Bug解决代码
2010/12/22 Javascript
JS 控制小数位数的实现代码
2011/08/02 Javascript
jQuery ReferenceError: $ is not defined 错误的处理办法
2013/05/10 Javascript
jQuery修改class属性和CSS样式整理
2015/01/30 Javascript
两种JS实现屏蔽鼠标右键的方法
2020/08/20 Javascript
实例讲解Jquery中隐藏hide、显示show、切换toggle的用法
2016/05/13 Javascript
JavaScript调试的多个必备小Tips
2017/01/15 Javascript
详解angular2封装material2对话框组件
2017/03/03 Javascript
Angular使用Md5加密的解决方法
2017/09/16 Javascript
JavaScript canvas实现雪花随机动态飘落
2020/02/08 Javascript
[58:21]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第二场
2018/04/04 DOTA
Python常用模块用法分析
2014/09/08 Python
Python的Django应用程序解决AJAX跨域访问问题的方法
2016/05/31 Python
python微信跳一跳系列之棋子定位颜色识别
2018/02/26 Python
python3的输入方式及多组输入方法
2018/10/17 Python
Python 实现取矩阵的部分列,保存为一个新的矩阵方法
2018/11/14 Python
python 使用装饰器并记录log的示例代码
2019/07/12 Python
python实现贪吃蛇游戏源码
2020/03/21 Python
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
2020/06/23 Python
日本航空官方网站:JAL
2019/06/19 全球购物
Tiqets英国:智能手机上的文化和娱乐门票
2019/07/10 全球购物
德国苹果商店:MacTrade
2020/05/18 全球购物
国际贸易专业个人求职信格式
2014/02/02 职场文书
总经理助理的职责
2014/03/14 职场文书
妇女儿童发展规划实施方案
2014/03/16 职场文书
民族团结先进集体事迹材料
2014/05/22 职场文书
个人违纪检讨书
2014/09/15 职场文书
党的群众路线教育实践活动领导班子整改方案
2014/10/25 职场文书
2014年教育实习工作总结
2014/11/22 职场文书
小组口号霸气押韵
2015/12/24 职场文书
吃通javascript正则表达式
2021/04/21 Javascript
只用Python就可以制作的简单词云
2021/06/07 Python
pnpm对npm及yarn降维打击详解
2022/08/05 Javascript