torchtext的可复现问题

在使用torchtext.data.TabularDataset分割训练集测试集时发现遇到了奇怪的问题

代码如下:

self.TEXT = data.Field(init_token='<start>', eos_token='<eos>', lower=True, tokenize='spacy', fix_length=16)
self.LABEL = data.Field(sequential=False, unk_token=None)
f = lambda ex: len(ex.text) <= 15 and ex.label != 'neutral'
fields = [(None, None), ('text',self.TEXT),('label', self.LABEL)]
input_data = data.TabularDataset(path = './data/0221.csv', format='csv', fields = fields,skip_header = True)
train, val = input_data.split(split_ratio=0.8, random_state=random.seed(SEED),stratified=True, strata_field='label')
#这里使用了stratified我看注释是用于分层抽样,感觉应该是让分层抽样更加均匀合理,因此就使用了

上面这段代码放在一个独立的类里,我发现每次加载时得到的词汇表的大小时不一样的,但是打印len(train)和len(val)时每一次都是固定的数量。纳闷了,在网上搜,要固定随机数种子,于是加上了下面的代码

SEED = 1234

torch.manual_seed(SEED)
np.random.seed(SEED)
random.seed(SEED)
torch.cuda.manual_seed(SEED)
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False

但是情况依然没有好转,怀疑还是在分割的地方有问题,于是把分割数据集的代码变成了

train, val = input_data.split(split_ratio=0.8, random_state=random.seed(SEED))

这样测试后果然每一次都是一样的词汇数量了(vocab大小),不知道sklearn的train_test_split()是不是一样的,欢迎交流指点!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值