DeepLearning(基于caffe)实战项目(5)--Matlab画学习(Loss)曲线

来源:互联网 发布:未备案域名出售 编辑:程序博客网 时间:2024/06/06 03:33

        话说,我们的model也训练好了,也能进行相应的(分类)预测了,但是怎么才能判断我们的model拟合的到底好还是不好呢,如何才能很直观的看出我们model拟合的怎么样,这样,我们就需要从训练日志里找寻相应的(Loss)值,然后画出曲线,在网上,我找了找看有没有现成的代码,发现,大部分都是用原有的Python程序,于是我打算用matlab自己写一个画学习曲线的程序

/************************************************************************************************************

TIPS:通过学习曲线,可以评估当前模型训练的状态

  • train loss 不断下降,test loss 不断下降,说明网络仍然在认真的学习
  • train loss 不断下降,test loss 趋于不变,说明网络过拟合
  • train loss 趋于不变,test loss 趋于不变,说明网络学习遇到瓶颈,需要减小学习速率或者批处理数据尺寸
  • train loss 趋于不变,test loss 不断下降,说明数据集(训练)有问题
  • train loss 不断上升,test loss 不断上升,说明网络结构设计不当、训练超参数设置不当、程序bug等问题引起的,需要进一步定位

/**************************************************************************************************************

        在写代码之前,我们需要在训练的时候保存了相应的日志(这里我保存为caffe_train.log)

        开始写代码了......

%该程序为显示训练日志中的学习曲线(Loss)% ---------------------------------------自写程序--------------------------------------clc;clear all;close all;fid=fopen('caffe_train.log','r');L=1;while ~feof(fid)        str=fgetl(fid);    if ~isempty(str)         datafind=['Iteration ',num2str((L-1)*100),', loss =']        len=length(datafind);        endlen=length(str);        index=strfind(str,datafind);        if index ~=' '            data=str(index+len:endlen);            result(L,1)=str2num(data);            L=L+1;        end    endendfigure;plot(result);%画出Loss学习曲线axis([0, 100, 0, 3]);%坐标轴范围  grid on %有网格 fclose(fid);
效果图如下


阅读全文
0 0