深度学习 -- Tensor属性及torch梯度计算

深度学习 -- Tensor属性及torch梯度计算


文章目录


前言

一、Tensor数据转换

1.1 张量转Numpy

python 复制代码
import torch
import numpy as np

def test01():
    t1=torch.tensor([[1,2,3],[4,5,6]])
    print(t1)
    #浅拷贝,共享内存
    #调用numpy()方法可以把Tensor转换为Numpy,此时内存是共享的。
    n1=t1.numpy()
    print(n1)
    #深拷贝,重新创造副本存储
    #使用copy()方法可以避免内存共享
    n2=t1.numpy().copy()
    print(n2)
python 复制代码
tensor([[1, 2, 3],
        [4, 5, 6]])
[[1 2 3]
 [4 5 6]]
[[1 2 3]
 [4 5 6]]

1.2 Numpy转张量

python 复制代码
def test02():
    n1=np.array([1,2,3,4,5,6])
    #from_numpy方法转Tensor默认是内存共享的
    t1=torch.from_numpy(n1)
    print(t1)
    #使用传统的torch.tensor()则内存是不共享的~
    t2=torch.tensor(n1)
    print(t2)

    
if __name__ == '__main__':
    # test01()
    test02()
python 复制代码
tensor([1, 2, 3, 4, 5, 6], dtype=torch.int32)
tensor([1, 2, 3, 4, 5, 6], dtype=torch.int32)

二,Tensor常见操作

2.1获取元素值

我们可以把单个元素tensor转换为Python数值,这是非常常用的操作

python 复制代码
import torch
#获取元素值
def test01():
    t1=torch.tensor(18)
    print(t1.item())

    t2=torch.tensor([[18]])
    print(t2.item())
python 复制代码
18
18

2.2 元素值运算

常见的加减乘除次方取反开方等各种操作,带有_的方法则会替换原始值。