解决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 相关文章推荐
pymongo给mongodb创建索引的简单实现方法
May 06 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
Jul 08 Python
python实现跨excel的工作表sheet之间的复制方法
May 03 Python
python读取一个目录下所有txt里面的内容方法
Jun 23 Python
python使用folium库绘制地图点击框
Sep 21 Python
Tesserocr库的正确安装方式
Oct 19 Python
python实现静态web服务器
Sep 03 Python
Python对接 xray 和微信实现自动告警
Sep 17 Python
django中的图片验证码功能
Sep 18 Python
TensorFlow命名空间和TensorBoard图节点实例
Jan 23 Python
vscode调试django项目的方法
Aug 06 Python
pytorch通过训练结果的复现设置随机种子
Jun 01 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
global.php
2006/12/09 PHP
php目录管理函数小结
2008/09/10 PHP
PHP独立Session数据库存储操作类分享
2014/06/11 PHP
浅谈PHP拦截器之__set()与__get()的理解与使用方法
2016/10/18 PHP
PHP延迟静态绑定的深入讲解
2018/04/02 PHP
PHP中isset、empty的用法与区别示例详解
2020/11/05 PHP
javascript 动态添加表格行
2006/06/22 Javascript
表单的一些基本用法与技巧
2006/07/15 Javascript
IE无法设置短域名下Cookie
2010/09/23 Javascript
在JS中最常看到切最容易迷惑的语法(转)
2010/10/29 Javascript
如何在JavaScript中实现私有属性的写类方式(一)
2013/12/04 Javascript
javascript 实现子父窗体互相传值的简单实例
2014/02/17 Javascript
swtich/if...else的替代语句
2015/08/16 Javascript
微信开发 微信授权详解
2016/10/21 Javascript
JS使用Date对象实时显示当前系统时间简单示例
2018/08/23 Javascript
vue学习笔记之slot插槽用法实例分析
2020/02/29 Javascript
JavaScript oncopy事件用法实例解析
2020/05/13 Javascript
Python将xml和xsl转换为html的方法
2015/03/10 Python
pymongo实现控制mongodb中数字字段做加法的方法
2015/03/26 Python
在Python的Django框架中获取单个对象数据的简单方法
2015/07/17 Python
Python判断文件或文件夹是否存在的三种方法
2017/07/27 Python
rabbitmq(中间消息代理)在python中的使用详解
2017/12/14 Python
python 筛选数据集中列中value长度大于20的数据集方法
2018/06/14 Python
Python 绘制酷炫的三维图步骤详解
2019/07/12 Python
使用Python爬取弹出窗口信息的实例
2020/03/14 Python
keras中的卷积层&池化层的用法
2020/05/22 Python
使用layui实现左侧菜单栏及动态操作tab项的方法
2020/11/10 HTML / CSS
法国奢华女性时尚配饰网上商店:Monnier Frères
2016/08/27 全球购物
班组长竞聘书
2014/03/31 职场文书
爱心捐助倡议书
2014/05/19 职场文书
竞选宣传委员演讲稿
2014/05/24 职场文书
社区综治工作汇报
2014/10/27 职场文书
夫妻分居协议书范本
2014/11/28 职场文书
活动简报范文
2015/07/22 职场文书
军训后的感想
2015/08/07 职场文书
详细聊一聊mysql的树形结构存储以及查询
2022/04/05 MySQL