zoukankan      html  css  js  c++  java
  • tensorflow(二十七):Keras一句话训练fit

    一、简介

     不用keras时候:

     二、用keras简写训练过程

    现在的写法,首先指定下面的compile以后,直接在下面fit一下,然后这个epoch就是指定上涨图片中的sclice中的10,就是10次epoch,每次traning的loss是按照下面的traing计算,得到一个gradient以后,根据Adam优化器更新一个对应的参数,然后在指定的一个周次做一个metrics测试。注意这里还有指定做测试的周期,之前我们做测试是: if step%100 ==0的时候,我们做一次测试,做测试的时候测试的数据集是什么呢?这里也没有指定,所以根本没有用到测试的功能,可以吧metrics=[‘accuracy’]删除掉。这样的话我们traing的一个逻辑是完全的指定的,training多少步,traing的优化器,traing的这样的一个loss,整个traing所用的数据集db,这样非常方便。

     

    需要注意的是做测试的时候epoch总是等于1的,为什么呢?
    因为我们测试的时候,只需要对所有样本测试一次,不需要对所有样本测试多次,因为是一样的效果对嘛,所以测试的时候epoch是固定的,step也是固定的,因此对于测试来说只需要知道测试集ds_val。
    比起之前的参数,现在多了2个黄色框框标记出来的;一个是validation_data就是要在那一个数据集上面进行测试。还有一个validation_freq下面写错了,表示每多少个epoch做一次validation。traing2个epoch测试一次,也就是我们对db循环2次做一个测试,看下面的图表示的。会打印一个指标就是accuracy。这个accuracy计算过程是标准的。来看一下具体的输出结果:

     

     

    这里的evaluate和上面的validation_freq是一样的,区别在于什么呢?区别在在于validation_freq是在traing中间进行的,为什么中间进行呢?因为在training的时候,我也不知道traing什么时候是个头,有可能traing10天,有可能是3个月,有可能更久,那么什么时候停止呢?我这个时候,就会隔一段时间做一次validation_freq或者隔一段时间做一次test,比如根据(我再中间写一段代码if test_accuracy>0.99,我就把当前的状态save住,我就把这个循环跳出来break;这个就是中间做一个validation的好处,我们可以随时的停止,所以这一部分可以提前终止不一定完成10个epoch,这10epoch一般是我们指定的最大的epoch,达到我们的需求可以提前的终止,当跳完这句话话后就是evaluate还要做一次测试,来验证,只需要给一个数据集;其实就相当于一次valuation_freq;当然这个测试的数据集也可以不用这个ds_val数据集,我们可以找另外一个,这样更加公平,公正!.)

     三、总结

    • 最后当我们traing完成以后,我们把模型的参数保存下来,我们下一次交给一个生产环境的时候,或者说交给一个客户的时候,客户拿到这个模型,加载这个模型的参数以后,他需要来做一个预测!预测这一部分怎么完成呢?根据前面的逻辑,

  • 相关阅读:
    SharePoint 2013 安装.NET Framework 3.5 报错
    SharePoint 2016 配置工作流环境
    SharePoint 2016 站点注册工作流服务报错
    Work Management Service application in SharePoint 2016
    SharePoint 2016 安装 Cumulative Update for Service Bus 1.0 (KB2799752)报错
    SharePoint 2016 工作流报错“没有适用于此应用程序的地址”
    SharePoint 2016 工作流报错“未安装应用程序管理共享服务代理”
    SharePoint JavaScript API in application pages
    SharePoint 2016 每天预热脚本介绍
    SharePoint 无法删除搜索服务应用程序
  • 原文地址:https://www.cnblogs.com/zhangxianrong/p/14691421.html
Copyright © 2011-2022 走看看