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完成以后,我们把模型的参数保存下来,我们下一次交给一个生产环境的时候,或者说交给一个客户的时候,客户拿到这个模型,加载这个模型的参数以后,他需要来做一个预测!预测这一部分怎么完成呢?根据前面的逻辑,
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧