5 深度学习案例直观理解
https://pytorch.org/get-started/previous-versions/
进入此网站,可以看到很多安装命令
1 conda安装
如果使用conda安装,把conda的安装源切换到国内的源,怎么修改,如下
修改源之后,可以在上述网站中找到想要安装的版本,也可以参考我的版本
安装命令:(conda版本)
conda install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 -c pytorch
2 无conda安装
安装命令:
pip install torch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 -i http://mirrors.aliyun.com/pypi/simple/
(切记,无论是哪儿种安装,请先关闭进行安装)
在上述网站,提供的只有conda的GPU安装
打开任务管理器里面的性能,找到下面GPU 显示NVIDIA的GPU就是有GPU
具体办法有博主有写,具体博客我就不放了,防止侵权
人工智能计算领域的领导者 | NVIDIA这是官网安装驱动的地方
如果已经修改可忽略
可以用anaconda创建一个虚拟环境,在虚拟环境中安装GPU版本
查看当前存在的所有conda环境 conda env list
创建虚拟环境 conda create -n pytorch_gpu python=3.8(这是我自己的,你可以修改名字还有python版本)
切换虚拟环境 conda activate pytorch_gpu(后面跟的是你创建的的虚拟环境的名字)
conda install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 cudatoolkit=11.3 -c pytorch -c conda-forge
API文档:
torch的基本API
torch — PyTorch 2.1 documentation
torch的封装的深度学习算子API
torch.nn — PyTorch 2.1 documentation
torch的深度学习算子以函数形式的使用展示
torch.nn.functional — PyTorch 2.1 documentation
torch模型优化器相关的API
torch.optim — PyTorch 2.1 documentation
简单的使用API如下代码
import torch
import numpy as np
def t1():
# 创建tensor对象方法
v1 = torch.rand(2, 3, 4) # 在0到1之间的浮点数取值填充
print(v1.shape) # torch.Size([2, 3, 4])
py_v2 = [[1.0, 1.32], [2.3, 3.2], [5.2, 324.2]]
v2 = torch.tensor(py_v2)
print(v2.shape) # torch.Size([3, 2])
py_v2[0][1] = 100
print(py_v2)
print(v2) # 不变, 不与列表共享内存, 和原来没有关系
np_v3 = np.random.randint(10, size=(2, 3)) # 随机取10以内的数字
v3 = torch.from_numpy(np_v3)
print(v3.shape) # torch.Size([2, 3])
np_v3[0][1] = 100
v3[1][1] = -100
print(v3)
# tensor和numpy都会改变, pytorch目的是替代numpy的, 底层就是numpy, 区别是支持GPU
print(np_v3) # 创建的tensor对象和入参numpy对象共用一个内存地址
def t2():
# tensor转换为numpy
v1 = torch.rand(2, 3)
print(v1)
np_v1 = v1.numpy() # v1必须在cpu上, v1不涉及到梯度的计算
print(np_v1)
v2 = torch.rand(2, 3)
print(v2)
np_v2 = v2.detach().cpu().numpy() # detach梯度截断, cpu就是如果是GPU,就把对象数据copy到cpu上,cpu则不变
print(np_v2)
v3 = torch.rand(1)[0] # 一个标量tensor
print(v3)
print(v3.shape) # torch.Size([])
np_v3 = v3.detach().cpu().numpy() # detach梯度截断, cpu就是如果是GPU,就把对象数据copy到cpu上,cpu则不变
print(np_v3)
print(v3.item()) # 仅支持是一个标量的tensor, 是一个普通的python浮点数类型
if __name__ == '__main__':
t2()