pytorch学习笔记一

学习PyTorch总结

一、PyTorch概述

PyTorch是一个开源的机器学习和深度学习框架,由Meta(原Facebook)人工智能研究院FAIR开发。它允许用户利用Python代码处理数据并编写深度学习算法,尤其擅长于GPU加速和动态神经网络。PyTorch的核心数据结构是张量,类似NumPy数组,但支持GPU计算。该框架提供了丰富的文档和支持社区,便于用户学习和解决问题。与TensorFlow相比,PyTorch的图是动态的,代码简洁,易于使用,尤其受到学术界和研究者的青睐。

二、环境安装与配置

安装PyTorch可以创建一个新的虚拟环境,使用condapip命令安装。对于GPU支持,需要安装NVIDIA显卡驱动,CUDA Toolkit和cuDNN,然后根据系统和CUDA版本选择合适的PyTorch版本进行安装。验证安装是否成功可以通过导入PyTorch模块并检查版本信息,以及确认CUDA是否可用。

三、应用领域与发展趋势

深度学习在多个领域展现出广泛应用,如图像识别、自然语言处理、音频处理、视频分析、游戏、自动驾驶、推荐系统、金融和医疗等。近年来,深度学习的研究成果显著,特别是在自然语言处理、计算机视觉、强化学习、医疗和生物学等领域,推动了更精确的模型和更高效的算法的发展。

四、深度学习框架对比

PyTorch、TensorFlow、PaddlePaddle、Keras、Caffe/Caffe2、MXNet、Theano、Torch、CNTK和ONNX是当前流行的深度学习框架。各框架有其独特的优势,如PyTorch的灵活性和动态图,TensorFlow的计算图和广泛的生态,PaddlePaddle的高级API和快速部署,Keras的用户友好和代码简洁,Caffe/Caffe2的高效训练和部署,MXNet的高性能和跨平台支持,Theano的历史地位和学术影响力,Torch的GPU支持和Lua脚本语言,CNTK的语音处理能力,以及ONNX的模型转换和兼容性。

五、推理框架

推理框架如TensorRT、TF-Lite、OpenVINO、CoreML、NCNN、MNN、Tengine-Lite和NNIE等,为深度学习模型的部署提供了高效、便捷的解决方案,尤其是在边缘计算、移动设备和嵌入式系统上,它们优化了模型执行效率,降低了延迟,提高了用户体验。

总结,PyTorch以其动态图、易用性和强大的社区支持,在深度学习研究和应用中扮演了重要角色。掌握PyTorch不仅是学习深度学习的关键,也是进入这一领域前沿技术和应用的敲门砖。随着技术的不断发展,深度学习将继续影响和改变我们的生活和工作方式。

 六、张量与张量操作

张量是PyTorch中的基础数据结构,用于表示多维数组。张量可以是0维(标量)、1维(向量)、2维(矩阵)或更高维的数组。PyTorch提供了多种创建张量的方法,包括从现有数据(如列表或numpy数组)创建张量,或创建特定类型的张量(如整数或浮点数)。张量的形状可以通过ndim属性查询,而张量的维度可以通过shape属性获取。张量还支持多种操作,如点乘、叉乘、矩阵乘法、维度变换(如squeezeunsqueeze)、数据类型转换、数学运算(如均值、平方根、指数)等。

张量是PyTorch中的核心数据结构,用于表示多维数组,是进行所有数学运算的基础。张量可以具有不同的维度,从0维(标量)到任意高维张量。在PyTorch中,张量的创建、操作和转换是深度学习模型构建和训练的重要组成部分。

创建张量

张量可以通过多种方式创建,例如从Python列表、NumPy数组、随机或线性序列创建,也可以创建特定类型的张量如整型、浮点型等。

Python

import torch

# 从列表创建张量
t_list = torch.tensor([1, 2, 3])

# 从NumPy数组创建张量
import numpy as np
np_array = np.array([1, 2, 3])
t_np = torch.from_numpy(np_array)

# 创建指定类型的张量
t_int = torch.IntTensor([1, 2, 3])
t_float = torch.FloatTensor([1.0, 2.0, 3.0])

# 创建线性张量
t_linear = torch.linspace(0, 10, steps=5)

# 创建随机张量
t_random = torch.randn(2, 3)

张量操作

张量支持多种数学操作,包括但不限于加、减、乘、除,以及更高级的矩阵乘法、点乘、叉乘等。

# 创建两个张量
t1 = torch.tensor([[1, 2], [3, 4]])
t2 = torch.tensor([[5, 6], [7, 8]])

# 加法和减法
t_add = t1 + t2
t_sub = t1 - t2

# 点乘(逐元素乘法)
t_mul = torch.mul(t1, t2)

# 矩阵乘法(叉乘)
t_matmul = torch.matmul(t1, t2)
t_at = t1 @ t2  # 另一种写法

# 拼接张量
t_concat = torch.cat((t1, t2), dim=0)

# 索引和切片
t_slice = t1[0, 1]

# 形状变换
t_reshaped = t1.view(-1)  # 重塑为一维张量

# 元素类型转换
t_float_to_int = t_float.to(torch.int32)

# 其他张量操作如均值、平方根、求和、指数计算、对数计算等
t_mean = t1.mean()
t_sqrt = torch.sqrt(t1)
t_sum = t1.sum()
t_exp = torch.exp(t1)
t_log = torch.log(t1)

张量的索引和切片

张量支持多种索引方式,包括简单的行、列索引,列表索引,范围索引,布尔索引和多维索引。

# 创建一个张量
data = torch.randint(0, 10, (4, 5))

# 简单行、列索引
row = data[0]
column = data[:, 0]

# 列表索引
list_indexed = data[[0, 1], [1, 2]]

# 范围索引
range_indexed = data[0:2, :]

# 布尔索引
bool_indexed = data[data > 5]

# 多维索引
multi_dim_indexed = data[:, :, 0]

张量的形状操作

PyTorch提供了多种用于修改张量形状的函数,如reshapesqueezeunsqueezetransposepermuteview

# 创建一个张量
data = torch.tensor([[10, 20, 30], [40, 50, 60]])

# 使用reshape函数修改形状
reshaped_data = data.reshape(1, 6)

# 增加或减少维度
squeezed_data = data.squeeze()
unsqueezed_data = data.unsqueeze(dim=0)

# 交换张量的维度
transposed_data = data.transpose(0, 1)

# 更多维度的交换
permuted_data = data.permute(1, 0)

# 使用view函数修改形状(要求张量内存连续)
view_data = data.contiguous().view(3, 2)

通过这些操作,可以有效地管理和操作张量,以满足深度学习模型构建和数据处理的需求。

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PaddlePaddle是一个开源的深度学习平台,可以用于构建和训练深度学习模型。如果你想使用PaddlePaddle,可以通过源码编译的方式来安装。首先,你需要在Git Bash中执行以下两条命令来将PaddlePaddle的源码克隆到本地,并进入Paddle目录: ``` git clone https://github.com/PaddlePaddle/Paddle.git cd Paddle ``` 接下来,你可以根据自己的需求进行编译。如果你使用的是Windows系统,可以使用源码编译来安装符合你需求的PaddlePaddle版本。具体的编译步骤可以参考官方文档中的Windows下源码编译部分\[2\]。 如果你想在docker镜像中编译PaddlePaddle,可以使用以下命令启动docker镜像并进行编译。如果你需要编译CPU版本,可以使用以下命令: ``` sudo docker run --name paddle-test -v $PWD:/paddle --network=host -it hub.baidubce.com/paddlepaddle/paddle:latest-dev /bin/bash ``` 如果你需要编译GPU版本,可以使用以下命令: ``` sudo nvidia-docker run --name paddle-test -v $PWD:/paddle --network=host -it hub.baidubce.com/paddlepaddle/paddle:latest-dev /bin/bash ``` 以上是关于使用源码编译PaddlePaddle的一些基本步骤和命令。你可以根据自己的需求和操作系统选择适合的方式来安装PaddlePaddle。 #### 引用[.reference_title] - *1* *2* *3* [《PaddlePaddle从入门到炼丹》一——新版本PaddlePaddle的安装](https://blog.csdn.net/qq_33200967/article/details/83052060)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值