Pytorch 初探 电脑版发表于:2023/11/20 15:50  >#Pytorch 初探 [TOC] ## Pytorch简介 tn2>PyTorch由 Facebook 的 AI 研究团队开发的一个开源的机器学习库,它提供了张量(tensor)计算和动态计算图的功能。 ## Pytorch特点 | 特点 | 描述 | | ------------ | ------------ | |动态计算图|PyTorch 使用动态计算图,这意味着在运行时创建计算图。相比于静态计算图,动态计算图更加灵活,方便调试和动态修改模型结构。| |张量| PyTorch 张量是其核心数据结构,类似于NumPy的数组。张量可以在GPU上运算,从而加速深度学习模型的训练。| |自动求导| PyTorch 提供了自动求导的功能,通过autograd模块可以轻松计算梯度。这对于训练神经网络和其他机器学习模型非常有用。| |模块化和灵活性| PyTorch 的模块化设计使其非常灵活。你可以按照自己的需求选择使用其高级API或底层API。高级API(例如torch.nn)提供了更抽象的接口,而底层API允许更精细的控制。| |丰富的生态系统| PyTorch 拥有庞大的社区和丰富的生态系统,包括许多预训练模型、工具和库,使其成为科学研究和工业应用中的热门选择。|| |深度整合| PyTorch 与很多其他深度学习框架(如TorchScript)和库(如Torchvision、Torchaudio等)深度整合,为用户提供全面的工具支持。| |支持动态图和静态图| PyTorch 提供了torchscript,它可以将动态图转换为静态图,这对于生产环境的部署非常有用。| |社区支持| PyTorch 拥有活跃的社区,提供丰富的教程、文档和在线支持,使得用户能够轻松上手和解决问题。| ## 安装Pytorch tn2>执行如下命令即可安装Pytorch ```bash # mac or linux pip install torch torchvision torchaudio # win pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 ``` tn2>安装完成后执行如下命令查看Pytorch版本。 ```python import torch print(torch.__version__) print(torch.cuda.is_available()) ```  tn2>可以看到我这里没有的gpu只有cpu。 ## 基本示例 tn2>创建一个5x3的矩阵。 ```python x = torch.empty(5, 3) print(x) ```  tn2>创建随机5x3的矩阵。 ```python x = torch.rand(5, 3) print(x) ```  tn2>初始化一个全零矩阵。 ```python x = torch.zeros(5, 3, dtype=torch.long) print(x) ```  tn2>直接传入数据。 ```python x = torch.tensor([5.5, 3]) print(x) ```  tn2>创建一个形状为 (5, 3) 的张量,并初始化为全为1 ```python x = x.new_ones(5,3,dtype=torch.double) # 创建了一个与前面张量相同形状的新张量,但是这次是用从标准正态分布中抽样得到的随机数填充,同时将数据类型设置为 torch.float x = torch.randn_like(x, dtype=torch.float) print(x) ```  ### 展示矩阵大小 ```python x.size() ```  ## 基本计算方法 tn2>做加法。 ```python y = torch.rand(5, 3) print(x + y) ```  ```python print(torch.add(x, y))# 一样的也是加法 ```  ## 索引 ```python x ```  ```python x[:,1]# 取出所有第二个的 ```  ```python x[:,2]# 取出所有第三个的 ```  ## view操作可以改变矩阵维度 ```python x = torch.randn(4, 4) y = x.view(16) z = x.view(-1, 8) # 这里-1表示自动计算 print(x.size(), y.size(), z.size()) ```  ```python x,y,z ```  ```python m = x.view(-1, 2) m.size(),m ```  tn2>与`-1`是相同的。 ```python z = x.view(2, 8) z.size() ```  ## 与Numpy的协同操作 tn2>numpy与pytorch之间的数据互转。 ```python a = torch.ones(5) b = a.numpy() print(a, b) ```  ```python import numpy as np a = np.ones(5) b = torch.from_numpy(a) b ``` 