zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【Pytorch】解决使用BucketIterator.splits警告volatile was removed and now has no effect. Use `with torch.no_g

PyTorch 解决 and with No use has was
2023-09-14 09:12:40 时间

问题

使用data.BucketIterator.splits去封装训练集和验证集,在遍历的时候出现警告UserWarning: volatile was removed and now has no effect. Use with torch.no_grad(): instead. return Variable(arr, volatile=not train)

from torchtext import data

train_iter,valid_iter= data.BucketIterator.splits((train_data,valid_data),
													batch_size=batch_size,
													sort_key=lambda x: len(x.text),
													repeat=False,
													shuffle=True)

with torch.no_grad():
	for idx, batch in enumerate(val_iter):# 在一行出现警告
		pass

解决

分开封装,不用data.BucketIterator.splits而是用data.BucketIterator

from torchtext import data
train_iter = data.BucketIterator((train_data), batch_size=batch_size,
								sort_key=lambda x: len(x.text),
								repeat=False, shuffle=True)
valid_iter = data.BucketIterator((valid_data),
								batch_size=batch_size,
								sort_key=lambda x: len(x.text),
								repeat=False,
								shuffle=True)