项目场景:
一个简单的用pytorch实现中文事件抽取的代码。
项目地址:https://github.com/Jianwei-Lv/chinese-event-extraction-pytorch
问题描述
RuntimeError: CUDA error: invalid device ordinal
这个问题主要是由于GPU编号不一致或GPU版本问题。
因此,在本项目的config中找到定义device 的地方,本项目如下:
self.device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') # 设备
#设备这里原来为cuda:2,改为0之后不再报错
test_data = train_data[100:]#原1000
train_data = train_data[0:100]
ZeroDivisionError: integer division or modulo by zero
这里是因为楼主的test_data数量太少:原项目的test_data为训练集的第1000条之后的数据,本项目的数据集不够1000条导致test_data数据为0
class DatasetIterater(object):
def __init__(self, batches, batch_size, device):
self.batch_size = batch_size
self.batches = batches
self.n_batches = len(batches) // batch_size
self.residue = False # 记录batch数量是否为整数
if len(batches) % self.n_batches != 0:
self.residue = True
self.index = 0
self.device = device
train_data = build_dataset(config)
test_data = train_data[100:]#原1000
train_data = train_data[0:100]
json.decoder.JSONDecodeError: Expecting value: line 490 column 1
大概率是json.load()
载入json
文件时出现了错误,问题一般是由于json文件损坏或内容缺失.楼主这里是因为训练集数量太少,扩充了一下数据集就好了。