其他分享
首页 > 其他分享> > 【NLP_模型参数浅析】Batchsize

【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设置为训练数据量,即全批量训练。

一般将Batchsize设置为16,32,64……至于Batchsize设置大值/小值更好,众说纷纭。

 

 

 

 

 

 

 

 

 

 

标签:NLP,last,Batchsize,char,flag,split,换行符,浅析
来源: https://blog.csdn.net/YWP_2016/article/details/115426577