Pytorch教程

【常用】pytorch修改带梯度tensor的数据

作者 : 老饼 发表日期 : 2023-11-30 00:56:14 更新日期 : 2024-06-24 15:27:48
本站原创文章,转载请说明来自《老饼讲解-深度学习》www.bbbdata.com



在使用pytorch的tensor时,有时需要修改带梯度变量的数据

但带梯度的tensor不能直接修改数据,本文讲解如何修改带梯度的tensor的数据



一、 pytorch修改带梯度tensor的数据



本节展示带梯度的tensor如何修改数据



01、带梯度的tensor如何修改数据


👉不带梯度的tensor可以直接修改数据

pytorch中,在tensor不带梯度时,是可以根据索引直接修改数据的

示例如下:

import torch
x = torch.tensor([[1, 1],[2, 2.]])                    # 不带梯度的tensor
x[0][0] = 99                                          # 可以直接修改
print(x)  

运行结果如下:

tensor([[99.,  1.],
        [ 2.,  2.]])


👉带梯度的tensor不能直接修改数据

如果tensor带梯度,就不能根据索引直接修改数据,会报错

示例如下:

import torch
x = torch.tensor([[1, 1],[2, 2.]],requires_grad=True)  # 带梯度的tensor
x[0][0] = 99                                            # 不可以直接修改
print(x)  

运行后报错如下:

RuntimeError: a view of a leaf Variable that requires grad is being used in an in-place operation.


👉带梯度的tensor需要根据data属性修改数据

pytorch的tensor带梯度时,而需要通过data属性来修改数据

示例如下:

import torch
x = torch.tensor([[1, 1],[2, 2.]],requires_grad=True)       # 带梯度的tensor
x.data[0][0]= 99                                            # 通过data属性来修改数据
print(x)  

运行结果如下:

tensor([[99.,  1.],
        [ 2.,  2.]])
tensor([[99.,  1.],
        [ 2.,  2.]], requires_grad=True)






好了,以上就是pytorch中如何修改带梯度tensor的数据的方法了~







 End 





联系老饼