模型的内容06 def main()

我们开始说明 for loop的部分。

在训练模型时,我们需要大量的data,这些data来自於train_loader。但是,我们并非一次全部倒入所有资料,进行训练,而是每次一批资料倒入训练。每一批的笔数,在train_loader的batch_size参数中设定。每次一批的好处,在於部分资料训练後,可立即进行最佳化的调整,以及测试验证(validation)模型的准确性。

进入主题,看程序for loop部分:

	for epoch in range(1, args['epochs'] + 1):

通常,我们若写 range(10), 表示[0..9]。但我们的初始值为1,所以尾端的最大值得加1。整个回圈数就会有1至epoch那麽多次loop。

接下来,进入train() function:

	train(args, model, device, train_loader, optimizer, epoch)

我们需要给它的资讯有--参数、模型、device(模型及资料都放在此处,才能执行)、训练用资料、优化器以及回圈数epoch。

此次epoch中,训练及优化调整後,交由 test(…)测试验证(validation)模型的准确性:

   test_acc = test(args, model, device, test_loader)

同样的,我们需喂入参数,model(内含优化过的weights),device以及验证资料test_loader。
Test()所产生的结果(accuracy),交给 test_acc做後续的处理。
接着,test_acc送入NNI,让NNI可进行後续的比较、优化超参,或是中途停止不必要的计算。

  nni.report_intermediate_result(test_acc)

所有的epochs跑完後,将最後的结果也给NNI做後续的处理--比较、优化超参,或是中途停止不必要的计算。

 nni.report_final_result(test_acc)

Def main() 到此结束。
接下来我们将说明 train(),test()的细部。不耐烦的读者,可跳过此2大部分。


<<:  Day 26:专案06 - 股市趋势图03 | Matplotlib、Pandas绘图

>>:  [DAY17]模板确认

DAY 13 资料库-建立并操作Heroku PostgreSQL

Heroku PostgreSQL是一种Heroku提供的PostgreSQL服务,可免费使用,免费...

LineBot - 申请

可以用 shioaji api 取得即时报价後,就有很多应用场景,这边先示范一个比较简单的,使用 L...

Day 12 ( 中级 ) 翻转大黄蜂音效 ( 二代板 )

翻转大黄蜂音效 ( 二代板 ) 教学原文参考:翻转大黄蜂音效 ( V2 ) 这篇文章是针对 micr...

[Day23]Virtual Service

上一篇的Bookinfo这个服务中,我们有使用samples/bookinfo/networking...

【Day 09】if ... else

前言 今天要来介绍 if 判断式,如果程序撰写到一定程度时,会需要用到一些逻辑判断,或是更复杂的表示...