pytorch 配置了GPU 但实际只使用了CPU来计算模型

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)

猜你喜欢

转载自blog.csdn.net/qq_38463737/article/details/124734407