- 检查GPU是否可用:
gpu = torch.cuda.is_available()
- cuDNN使用非确定性算法,并且可以使用torch.backends.cudnn.enabled = False来进行禁用,设置为使用使用非确定性算法:
torch.backends.cudnn.enabled
- 将numpy的数组复制给torch的方式:
self.word_embeddings.weight.data.copy_(torch.from_numpy(data.pretrain_word_embedding))
- prob.cpu().data.numpy()将tensor转换为numpy类型。
重点理解:
- 定义一个数据类,封装所有预处理的数据,最后将数据类存储为一个pkl的二进制文件,以便下一次直接读取不在需要重新预处理。
- RNN是顺序一次输入一个词向量。
model.train() model.eval()
训练完train_datasets之后,model要来测试样本了。在model(test_datasets)之前,需要加上model.eval(). 否则的话,有输入数据,即使不训练,它也会改变权值。这是model中含有batch normalization层所带来的的性质。在做one classification的时候,训练集和测试集的样本分布是不一样的,尤其需要注意这一点。