pytorch 配置了GPU 但实际只使用了CPU来计算模型
情况:相同的的模型在其他数据已经跑过了,可以使用GPU, 所以不是模型的问题。
我只改变了输入的数据,所以怀疑是数据的问题
于是我打印了一个样本数据的嵌入输入,发现了样本的嵌入数据是带了梯度的。具体如下
tensor([ 1.1833, 1.9551, 0.9297, -1.0467, -0.4273, 2.0646, 0.8933, -0.0376, ...... ...... -0.3290, -1.0271, 0.9247, 0.4438, 0.5575, 1.2078, -0.2939, 1.2771, 1.2643, -0.3314, -0.7726, -0.4822, 2.3198, 0.1741, -0.7348, 0.4168], grad_fn=<SelectBackward0>) # 有grad_fn=<SelectBackward0> 说明有梯度
说一下我样本嵌入数据的来源:我样本的嵌入是通过预训练得到的,因为在预训练模型中,样本的嵌入是可训练的,也即可以求梯度。
我在提取样本的嵌入的时候,所用的模型并没有对提取嵌入向量的接口进行处理一下。所以导致我获取到的嵌入是带梯度的。
解决方法:去除输入的梯度即可
# 方式1
X.detach()
# 方式2
torch.tensor(X)