【NLP_模型超参数浅析】global_step

本文记录了作者在研究NLP关系抽取Bi-GRU模型训练时,对全局步数(global_step)的理解过程。最初困惑于如何控制训练迭代次数,通过搜索和与他人交流,了解到global_step是自动递增的迭代计数器,不可自定义。然而,在深入分析代码后,发现在train.py中的for循环才是决定迭代次数的关键。通过调整循环次数,实现了对模型训练迭代次数的控制。
摘要由CSDN通过智能技术生成

2021/3/28:本人对global_step理解甚浅,以下内容仅是我发现问题、进行相关搜索后的小记录,可能存在错误之处,还请大神指正。


问题的由来

【NLP_关系抽取】Bi-GRU模型训练、评估与使用 中,所用模型的的迭代次数似乎不可控(详见train.py)。

train.py文件中的global_step定义

train.py文件中的global_step使用

尝试搜索包含epoch, step, num等的关键词,加以修改,迭代次数均无变化,得到的只有一些报错信息。

随后,与计算机专业同学交流后,发现可能是因为包含“global_step”。


浅析global_step

可能正如夕宝爸爸所说(在 Tensorflow中 global_step 的作用? - 简书 (jianshu.com)),global_step是不可自定义的,它只能算作一个自动加一的迭代计数器。

global_step记录的是train阶段每一步的索引,或者说是训练迭代的计数器,比如说在最后画loss和 accuracy的横坐标即是global_step

而其数值动态调整,可能是由衰减率等参数决定的(global_step用法 - 简书 (jianshu.com))。


2021/3/29:新发现

【NLP_关系抽取】Bi-GRU模型训练、评估与使用中的模型代码(train.py)而言,迭代次数可控。

关注代码中出现的for循环,这很可能决定了迭代次数。打印,查看其循环次数信息。

print("len(word_batch)",len(word_batch)) #50

for i in range(len(word_batch)):
                    ……

将下列for循环的循环次数自定义为50,即有50次迭代训练。

print("settings.num_epochs",settings.num_epochs) #10——此即当前迭代次数!

for one_epoch in range(settings.num_epochs):
                ……

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值