【NLP_模型超参数浅析】batchsize

问题及解决

  • 问题:明明已经设置“batch_size = 16”,训练数据量在300-400条,但在运行代码,实际训练时,仍全批量训练,未分批次:

        Epoch 1/500

        1/1 ……

  • 解决:检查数据,是否按照代码中定义的那样( for c in l.split('\n'):),以换行符分隔每条数据。

def load_data(filename): #加载标注数据:训练集、测试集与验证集
    D = [] 
    with open(filename, encoding='utf-8') as f: #打开并读取文件内容
        f = f.read() #读取文件全部内容
        for l in f.split('\n\n'): #查找双换行符
            if not l: #若无双换行符
                continue #跳出本次循环,可执行下一次 (而break是跳出整个循环)

            d, last_flag = [], ''
            for c in l.split('\n'): #######################查找换行符
                char, this_flag = c.split(' ') 
                if this_flag == 'O' and last_flag == 'O': 
                    d[-1][0] += char #d[-1][0]=d[-1][0]+char
                elif this_flag == 'O' and last_flag != 'O':
                    d.append([char, 'O'])
                elif this_flag[:1] == 'B': 
                    d.append([char, this_flag[2:]])
                else:
                    d[-1][0] += char 
                last_flag = this_flag
            D.append(d)
    return D
  • 所用数据是用换行符+空格分隔数据,将空格去除即可。
每条数据之间的分隔

浅析Batchsize

  • Batchsize设置为1,即随机梯度下降(Stochastic Gradient Descent, SGD),一个样本算出的梯度来更新每一步。
  • Batchsize设置为训练数据量,全批量训练,即批梯度下降(Batch gradient descent, BGD) ,所有样本算出的梯度的平均值来更新每一步。
  • 一般将Batchsize设置为16,32,64……至于Batchsize设置大值/小值更好,众说纷纭。怎么选取训练神经网络时的Batch size? 怎么选取训练神经网络时的Batch size? - 知乎
SGD与BGD

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值