Skip to content

机器学习

Python与Pytorch基础

张量基础 tensor

  • PyTorch中的所有操作都基于张量(一种包含多种处理方法的容器对象)。
  • 张量可以简单的看作是一个多维度的列表(List)。

其实,也可以将标量向量视为张量

标量是零维的张量 => 3,2,1, 4 只有大小,没有方向

向量是一维的张量 => [3,2,1, 4], [7, 8, 9, 6] 有大小和方向的一串数字

矩阵是二维的张量 => 几个向量合并而成

image-20240910205726631

PyTorch是非完备的编程语言库,而是用于加速神经网络训练的框架,因此并没有string这种类型。

案例练习

PyTorch的标量和张量

image-20240910211104232
python
a = torch.tensor([2.2])
b = torch.tensor([1.1,2.3])
c = torch.tensor([[1.1,1.2,1.3],
                 [2.1,2.2,2.3]
                 ])
print(a.dim(),b.dim(),c.dim())
print(a.shape,b.shape,c.shape) 

'''
1 1 2
torch.Size([1]) torch.Size([2]) torch.Size([2, 3])
'''
参数解释:

dim 计算维度

shape 读取矩阵的长度,比如shape[0]就是读取矩阵第一维度的长度

创建随机的张量

python
a = torch.rand(2,3)
b = torch.randn(2,3)
# torch.randn(2,3)  初始化一个符合正态分布的张量  创建全0或者全1的张量
print(a)
print(b)

'''
tensor([[0.7770, 0.6402, 0.5048],
        [0.9622, 0.8443, 0.5780]])
tensor([[-0.6340, -0.9222,  0.1695],
        [-1.5033,  0.9106, -1.3766]])
'''

创建全0或者全1的张量

python
a = torch.zeros(2,3) 
b  = torch.ones(2,3)
print(a)
print(b)
a.shape
'''
tensor([[0., 0., 0.],
        [0., 0., 0.]])
tensor([[1., 1., 1.],
        [1., 1., 1.]])
torch.Size([2, 3])
'''

查看张量的数据类型

python
a.dtype
'''
torch.float32
'''

在创建张量的时候,指定类型

python
a = torch.zeros(2,3,dtype=torch.float16)
print(a)
print(a.dtype) 
'''
a = torch.zeros(2,3,dtype=torch.float16)
print(a)
print(a.dtype) 
'''

创建指定值的张量,torch.tensor(list)

python
x = torch.tensor([5.5,3])
print(x)
'''
tensor([5.5000, 3.0000])
'''

张量的运算

python
x = torch.rand(2, 2)
y = torch.rand(2, 2)
image-20240910214411522image-20240910214426107

张量的切片

image-20240910220253915

Numpy与Tensor的互转

python
a = torch.ones(5)
print(a)
b = a.numpy()
print(b)
print(type(b))
'''
import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
print(a)
print(b)
'''
import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
print(a)
print(b)
'''
import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
print(a)
print(b)
'''

Released under the MIT License.