机器学习----PyTorch入门

PyTorch

  • PyTorch是一个开源的python机器学习库

  • PyTorch的前身是Torch,其底层和Torch框架一样,使用Python重新写了很多内容

  • 更加灵活,支持动态图,是一个以Python优先的深度学习框架,不仅能实现强大的GPU加速,同时还支持动态神经网络。


张量

PyTorch中所有的操作都是在张量的基础上进行的,可以说是PyTorch的基本单位

一、 张量的定义

1. 创建随机的张量

初始化一个符合正态分布的张量

randn()方法参数:

  1. 张量的维度
import torch
torch.randn(2,3)

在这里插入图片描述

2. 创建全0或全1的张量(类似numpy)

zeros() zeros_like()
ones() ones_like()

a = torch.zeros(2,3)
b = torch.ones(2,3)
w = torch.tensor([[2,3],[2,4],[2,5]])
c = torch.zeros_like(w)
d = torch.ones_like(w)
print(a)
print(b)
print(w)
print(c)
print(d)

在这里插入图片描述

3. 获取张量的 大小 or 尺寸 or 维度

张量.size()

在这里插入图片描述

4. 查看张量的数据类型

张量.dtype

5. 创建张量时指定类型
a = torch.zeros(2,3,dtype=torch.float32)
print(a)
print(a.dtype)

在这里插入图片描述

6. 创建指定值的张量
import torch
w = torch.tensor([5.5,2])

在这里插入图片描述

7. 定义的张量如果想能够自动计算梯度,需要添加requires_grad=True
torch.tensor([5.5,2],requires_grad=True)

在这里插入图片描述

二、张量的计算

1. 加法
  • 相加的张量维度必须相等
  • 张量中相同的地方相加
  • 同样适用于减法、乘法和除法
x = torch.ones(2,2)
y = torch.ones(2,2)
z = x + y
print(x)
print(y)
print(z)

在这里插入图片描述

2. 减法
x = torch.ones(2,2)
y = torch.ones(2,2)
z = x - y
print(x)
print(y)
print(z)

在这里插入图片描述

3. 乘法
x = torch.ones(2,2)
y = torch.ones(2,2)
z = x * y
print(x)
print(y)
print(z)

在这里插入图片描述

4. 除法
x = torch.ones(2,2)
y = torch.ones(2,2)
z = x / y
print(x)
print(y)
print(z)

在这里插入图片描述

三、张量的切片

从0开始 左闭环 不带最后一个

x = torch.rand(5,3)
print(x)

数据:
在这里插入图片描述

# 全部行的第一、二列(从0开始 左闭环 不带最后一个)
print(x[:,0:2])

在这里插入图片描述

# 第一行的第一列 
print(x[1,1])

在这里插入图片描述

四、张量的形变

元素不变的情况下改变行数和列数,类似numpy的reshape

view()方法参数:

  1. 必须保证和原张量的维度相乘一样 类似
  2. 4 * 4 = 16 转 16 转 2 * 8 = 16
x = torch.randn(4,4)
y = x.view(16)
z = x.view(2,8)
print(x)
print(y)
print(z)

在这里插入图片描述

五、 Numpy和Tensor互转

张量转numpy

numpy()方法

a = torch.ones(5)
print(a)

b = a.numpy()
print(type(b))

在这里插入图片描述

numpy转张量

torch.from_numpy()方法参数:

  1. numpy的ndarray数组
import numpy as np
a = np.ones(5)

b = torch.from_numpy(a)
print(type(b))

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/bjsyc123456/article/details/124844764
今日推荐