当前位置:网站首页>Pytorch的安装以及入门使用
Pytorch的安装以及入门使用
2022-06-30 05:06:00 【不想秃头的学生】
Pytorch的安装
目标
- 知道如何安装pytorch
1. Pytorch的介绍
Pytorch是一款facebook发布的深度学习框架,由其易用性,友好性,深受广大用户青睐。
2. Pytorch的版本

3. Pytorch的安装
安装地址介绍:https://pytorch.org/get-started/locally/
带GPU安装步骤:
conda install pytorch torchvision cudatoolkit=9.0 -c pytorch
不带GPU安装步骤
conda install pytorch-cpu torchvision-cpu -c pytorch
安装之后打开ipython
输入:
In [1]:import torch
In [2]: torch.__version__
Out[2]: '1.0.1'
注意:安装模块的时候安装的是pytorch ,但是在代码中都是使用torch
详细介绍之前出过一篇文章,大家有需要可以自行前往
Pytorch的入门使用
目标
- 知道张量和Pytorch中的张量
- 知道pytorch中如何创建张量
- 知道pytorch中tensor的常见方法
- 知道pytorch中tensor的数据类型
- 知道pytorch中如何实现tensor在cpu和cuda中转化
1. 张量Tensor
张量是一个统称,其中包含很多类型:
- 0阶张量:标量、常数,0-D Tensor
- 1阶张量:向量,1-D Tensor
- 2阶张量:矩阵,2-D Tensor
- 3阶张量
- …
- N阶张量
2. Pytorch中创建张量
使用python中的列表或者序列创建tensor
torch.tensor([[1., -1.], [1., -1.]]) tensor([[ 1.0000, -1.0000], [ 1.0000, -1.0000]])使用numpy中的数组创建tensor
torch.tensor(np.array([[1, 2, 3], [4, 5, 6]])) tensor([[ 1, 2, 3], [ 4, 5, 6]])使用torch的api创建tensor
torch.empty(3,4)创建3行4列的空的tensor,会用无用数据进行填充torch.ones([3,4])创建3行4列的全为1的tensortorch.zeros([3,4])创建3行4列的全为0的tensortorch.rand([3,4])创建3行4列的随机值的tensor,随机值的区间是[0, 1)>>> torch.rand(2, 3) tensor([[ 0.8237, 0.5781, 0.6879], [ 0.3816, 0.7249, 0.0998]])torch.randint(low=0,high=10,size=[3,4])创建3行4列的随机整数的tensor,随机值的区间是[low, high)>>> torch.randint(3, 10, (2, 2)) tensor([[4, 5], [6, 7]])torch.randn([3,4])创建3行4列的随机数的tensor,随机值的分布式均值为0,方差为1
3. Pytorch中tensor的常用方法
获取tensor中的数据(当tensor中只有一个元素可用):
tensor.item()In [10]: a = torch.tensor(np.arange(1)) In [11]: a Out[11]: tensor([0]) In [12]: a.item() Out[12]: 0转化为numpy数组
In [55]: z.numpy() Out[55]: array([[-2.5871205], [ 7.3690367], [-2.4918075]], dtype=float32)获取形状:
tensor.size()In [72]: x Out[72]: tensor([[ 1, 2], [ 3, 4], [ 5, 10]], dtype=torch.int32) In [73]: x.size() Out[73]: torch.Size([3, 2])形状改变:
tensor.view((3,4))。类似numpy中的reshape,是一种浅拷贝,仅仅是形状发生改变In [76]: x.view(2,3) Out[76]: tensor([[ 1, 2, 3], [ 4, 5, 10]], dtype=torch.int32)获取阶数:
tensor.dim()In [77]: x.dim() Out[77]: 2获取最大值:
tensor.max()In [78]: x.max() Out[78]: tensor(10, dtype=torch.int32)转置:
tensor.t()In [79]: x.t() Out[79]: tensor([[ 1, 3, 5], [ 2, 4, 10]], dtype=torch.int32)tensor[1,3]获取tensor中第一行第三列的值tensor[1,3]=100对tensor中第一行第三列的位置进行赋值100tensor的切片
In [101]: x
Out[101]:
tensor([[1.6437, 1.9439, 1.5393],
[1.3491, 1.9575, 1.0552],
[1.5106, 1.0123, 1.0961],
[1.4382, 1.5939, 1.5012],
[1.5267, 1.4858, 1.4007]])
In [102]: x[:,1]
Out[102]: tensor([1.9439, 1.9575, 1.0123, 1.5939, 1.4858])
4. tensor的数据类型
tensor中的数据类型非常多,常见类型如下:

上图中的Tensor types表示这种type的tensor是其实例
获取tensor的数据类型:
tensor.dtypeIn [80]: x.dtype Out[80]: torch.int32创建数据的时候指定类型
In [88]: torch.ones([2,3],dtype=torch.float32) Out[88]: tensor([[9.1167e+18, 0.0000e+00, 7.8796e+15], [8.3097e-43, 0.0000e+00, -0.0000e+00]])类型的修改
In [17]: a Out[17]: tensor([1, 2], dtype=torch.int32) In [18]: a.type(torch.float) Out[18]: tensor([1., 2.]) In [19]: a.double() Out[19]: tensor([1., 2.], dtype=torch.float64)
5. tensor的其他操作
tensor和tensor相加
In [94]: x = x.new_ones(5, 3, dtype=torch.float) In [95]: y = torch.rand(5, 3) In [96]: x+y Out[96]: tensor([[1.6437, 1.9439, 1.5393], [1.3491, 1.9575, 1.0552], [1.5106, 1.0123, 1.0961], [1.4382, 1.5939, 1.5012], [1.5267, 1.4858, 1.4007]]) In [98]: torch.add(x,y) Out[98]: tensor([[1.6437, 1.9439, 1.5393], [1.3491, 1.9575, 1.0552], [1.5106, 1.0123, 1.0961], [1.4382, 1.5939, 1.5012], [1.5267, 1.4858, 1.4007]]) In [99]: x.add(y) Out[99]: tensor([[1.6437, 1.9439, 1.5393], [1.3491, 1.9575, 1.0552], [1.5106, 1.0123, 1.0961], [1.4382, 1.5939, 1.5012], [1.5267, 1.4858, 1.4007]]) In [100]: x.add_(y) #带下划线的方法会对x进行就地修改 Out[100]: tensor([[1.6437, 1.9439, 1.5393], [1.3491, 1.9575, 1.0552], [1.5106, 1.0123, 1.0961], [1.4382, 1.5939, 1.5012], [1.5267, 1.4858, 1.4007]]) In [101]: x #x发生改变 Out[101]: tensor([[1.6437, 1.9439, 1.5393], [1.3491, 1.9575, 1.0552], [1.5106, 1.0123, 1.0961], [1.4382, 1.5939, 1.5012], [1.5267, 1.4858, 1.4007]])注意:带下划线的方法(比如:
add_)会对tensor进行就地修改tensor和数字操作
In [97]: x +10 Out[97]: tensor([[11., 11., 11.], [11., 11., 11.], [11., 11., 11.], [11., 11., 11.], [11., 11., 11.]])CUDA中的tensor
CUDA(Compute Unified Device Architecture),是NVIDIA推出的运算平台。 CUDA是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。
torch.cuda这个模块增加了对CUDA tensor的支持,能够在cpu和gpu上使用相同的方法操作tensor通过
.to方法能够把一个tensor转移到另外一个设备(比如从CPU转到GPU)#device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") if torch.cuda.is_available(): device = torch.device("cuda") # cuda device对象 y = torch.ones_like(x, device=device) # 创建一个在cuda上的tensor x = x.to(device) # 使用方法把x转为cuda 的tensor z = x + y print(z) print(z.to("cpu", torch.double)) # .to方法也能够同时设置类型 >>tensor([1.9806], device='cuda:0') >>tensor([1.9806], dtype=torch.float64)
通过前面的学习,可以发现torch的各种操作几乎和numpy一样
视频学习网站:pytorch入门学习视频
边栏推荐
- 力扣977. 有序数组的平方
- Unity Logitech steering wheel access
- JPA composite primary key usage
- Error about the new version of UE4: unavigationsystemv1:: simplemovetoactor has been deprecated
- Chapter 8 primitive processing of OpenGL super classic (version 7)
- Unity + hololens common basic functions
- Unity packaging failure solution
- Solution to Autowired annotation warning
- UnityEngine. JsonUtility. The pit of fromjason()
- 深度学习------不同方法实现Inception-10
猜你喜欢

Force buckle 59 Spiral matrix II

Meet in Bangkok for a romantic trip on Valentine's Day

Unity3d realizes Google Digital Earth

Basic operations of Oracle data
![[vcs+verdi joint simulation] ~ take the counter as an example](/img/fb/214a4e65c53503ecbc38a5e43523cf.png)
[vcs+verdi joint simulation] ~ take the counter as an example

【VCS+Verdi聯合仿真】~ 以計數器為例

Spring Festival Tourism Strategy: welcome the new year in Bangkok, Thailand

Unreal 4 unavigationsystemv1 compilation error

Photon pun refresh hall room list

LxC and LXD container summary
随机推荐
redis集群概念
Chapter 9 of OpenGL super classic (version 7): fragment processing and frame buffering
z-index属性在什么情况下会失效?
Under what conditions does the Z-index attribute expire?
Solution to the 292 week match of Li Kou
Unity script life cycle and execution sequence
JPA复合主键使用
Force buckle 209 Minimum length subarray
Win10 vs2015 compiling curaengine
GoLand No Tests Were Run : 不能使用 fmt.Printf() <BUG>
Unity realizes rotation and Revolution
The difference between SVG and canvas
Nestjs入门和环境搭建
Parkour demo
Brew install NVM command not found solution
Nestjs中控制器和路由的配置使用
【VCS+Verdi聯合仿真】~ 以計數器為例
Network communication problem locating steps
Unrealeengine4 - about uobject's giant pit that is automatically GC garbage collected
Li Kou 2049: count the number of nodes with the highest score