01 入门Pytorch


前言

PyTorch是一个开源的Python机器学习库,基于Torch,底层由C++实现,应用于人工智能领域,如自然语言处理。它主要由Facebook的人工智能研究团队开发,并且被用于Uber的概率编程软件Pyro。
它包括以下特征:
(1)类似于NumPy的张量计算,可使用GPU加速;
(2)基于带自动微分系统的深度神经网络

与Tensorflow区别一言以蔽之:Pytorch用于学术界,Tensorflow用于工业界,但是近年来有点衰退


一、Pytorch安装

本文pytorch安装基于CPU,如有需要,可以选择其他安装方式(官网
conda install pytorch torchvision torchaudio cpuonly -c pytorch
如果开代理的话,记得关闭代理,以免安装失败。

二、基本操作

1.引入库

代码如下(示例):

# 导入库
import torch

2.生成张量

代码如下(示例):

# 生成张量
x = torch.arange(12)
y = torch.arange(20).reshape(4,5)
print(x)
print(y)

结果为:
在这里插入图片描述

3.获取张量的形状

# 获取张量的shape(依情况而定)
print(x.shape)
# 下面结果为(4,5) 
print(y.shape)

结果为:

在这里插入图片描述

4.获取张量的元素个数

# 获取张量的元素个数(永远是标量)
print(x.numel())
print(y.numel())

结果为:
在这里插入图片描述

5.改变张量形状

# 改变张量形状
x.reshape(3,4)

结果为:
在这里插入图片描述

6.创建全0或者全1的张量

print(torch.zeros((2,3,4)))
print(torch.ones((3,4)))

结果为:
在这里插入图片描述

7.创建特定值的张量

torch.tensor([[2,3],[3,4],[5,6]])

结果为:
在这里插入图片描述

8.张量运算 加减乘除幂

p = torch.tensor([1.0,2,4,8])
q = torch.tensor([2,2,2,2])
print(p+q)
print(p-q)
print(p*q)
print(p/q)
print(p**q)

结果为:
在这里插入图片描述

9.张量连接

X = torch.arange(12, dtype=torch.float32).reshape(3,4)
Y = torch.tensor([[2.0,1,4,3],[1,2,3,4],[4,3,2,1]])
print(torch.cat((X,Y),dim=0)) #按照行连接
print(torch.cat((X,Y),dim=1)) #按照列连接

结果为:
在这里插入图片描述

10.逻辑运算

# 逻辑运算
X == Y

结果为:
在这里插入图片描述

11.求和

# 求和
X.sum()

结果为:
在这里插入图片描述

12.广播机制

# 广播机制
a = torch.arange(3).reshape(3,1)
b = torch.arange(2).reshape(1,2)
a,b,a+b

结果为:
在这里插入图片描述

13.元素访问

# 元素访问
print(X[-1])  # 访问最后一行
print(X[1:3]) # 访问[1,3)行

结果为:
在这里插入图片描述

14.元素赋值

# 元素赋值
X[1,2] = 9 # 给第2行第3列元素赋值为9
X

结果为:
在这里插入图片描述

# 多元素赋值
X[0:2,:] = 12 # 给第0行和第1行的所有列赋值为12
X

结果为:
在这里插入图片描述

15. 内存分配机制

# 内存分配机制
before = id(Y)
Y = Y + X
id(Y) == before

结果为:
在这里插入图片描述
简单说明:在Python如果执行一些操作如加减乘除等会使得新结果分配到新的地址中

解决方法:

# 解决方法1
Z = torch.zeros_like(Y)
print('id(Z):', id(Z))  # id(Z): 2058851631576
Z[:] = X + Y
print('id(Z):', id(Z))  # id(Z): 2058851631576

# 解决方法2
print('id(X):', id(X)) # id(X): 2058851600408
X += Y
print('id(X):', id(X)) # id(X): 2058851600408

16.转换为Numpy张量

# 转换为Numpy张量
A = X.numpy()
B = torch.tensor(A)
type(A),type(B)

结果为:
在这里插入图片描述

17.将大小为1的张量转换为Python标量

# 将大小为1的张量转换为Python标量
a = torch.tensor([3.5])
a,a.item(),float(a),int(a)  # items函数以列表返回可遍历的(键, 值) 元组数组。

结果为:
在这里插入图片描述

总结

以上就是Pytorch的入门内容,作为自己今后遗忘后复习的快速入门。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我不止三岁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值