深度学习笔记1

1.​​深度学习框架

 深度学习框架是用于构建、训练和部署深度学习模型的软件工具。这些框架提供了抽象层,允许开发人员使用高级API来定义复杂的神经网络结构,而无需深入了解底层数学或编程细节。常用的一些的深度学习框架如下:

  1. TensorFlow: 由Google开发,是目前最广泛使用的深度学习框架之一。它支持静态计算图,适用于大规模机器学习和深度学习应用。

  2. PyTorch: 由Facebook的人工智能研究实验室(FAIR)开发,以动态计算图和易于使用的API著称。PyTorch在研究社区中特别受欢迎,因为它提供了灵活性和控制力。

  3. Keras: 是一个高级神经网络API,可以作为TensorFlow的前端运行,也可以与Microsoft Cognitive Toolkit (CNTK) 或者Theano一起使用。Keras以用户友好和模块化为特点。

  4. PaddlePaddle: 由百度开发,PaddlePaddle提供了丰富的API和预训练模型,尤其在中文自然语言处理方面有优势。

2.Pytorch介绍

PyTorch是一个非常受欢迎的开源机器学习库,主要用于深度学习应用。它是由Facebook的人工智能研究实验室(FAIR)开发的,并得到了广泛的社区支持。PyTorch的设计重点在于灵活性、效率和易用性。PyTorch允许使用Python编写自定义操作和模型,这使得它非常适合处理非标准问题,如自然语言处理和计算机视觉中的复杂数据结构。同时,由于其使用动态计算图,这使得模型可以更容易地调试和修改。此外,Pytorch海支持GPU加速,显著提升深度学习模型的训练和推理速度。当前,PyTorch已经形成一个活跃的社区,提供了许多开源项目和库,如PyTorch Lightning和FastAI,这些工具可以进一步简化模型的构建和训练过程。

3.虚拟环境创建

如果有GPU支持,如果显示有NVIDIA显卡,通过系统查看cuda版本,安装对应的NVIDIA显卡驱动,cuDNN,然后根据系统和CUDA版本选择合适的PyTorch版本进行安装。验证安装是否成功可以通过导入PyTorch模块并检查版本信息,以及确认CUDA是否可用。

3.1cuda版本查看

win+R命令行,输入nvcc --version

最下方显示当前安装的cuda版本为12.0,也就是说我们安装的Pytorch(GPU版本)支持的cuda版本必须在12.0版本以下。

3.2安装Anaconda并创建虚拟环境

官网下载安装好Anaconda后,管理员运行Anaconda prompt进入命令窗口

输入conda create -n 环境名称(如Pytorchpy39)  python=版本号   

此命令创建虚拟环境ytorchpy39

然后输入conda activate  环境名称

此命令激活虚拟环境,在此环境下使用pip安装Pytorch以及必要的Python库即可

3.3Pycharm加载虚拟环境

进入Pycharm,打开文件-设置-项目-Python解释器,选择添加解释器,选择conda环境

在anaconda的安装目录中的Scripts找到对应的conda.exe文件,加载环境,然后在下方选择自己创建好的虚拟环境即可。

4.Pytorch推理框架

 PyTorch 提供了多种方式来优化模型推理,例如使用 TorchScript 或 ONNX 格式导出模型,以便在不同的硬件平台上运行,或使用 JIT(Just-In-Time)编译器来加速模型执行。

TorchScript:可以将 PyTorch 模型转换为 TorchScript,这是一个序列化的字节码格式,可以被 PyTorch C++ 运行时解析和执行,从而加速推理速度。

ONNX:可以将模型导出为 ONNX 格式,这样就可以在不支持 PyTorch 的设备上运行模型,例如在手机、边缘设备或使用其他框架的系统中。

5.张量与张量操作

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

5.1张量常用操作

import torch

# 创建一个3x3的全零张量
tensor = torch.zeros(3, 3)

# 创建一个从1到9的3x3张量
tensor = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 张量的加法
result = tensor + tensor

# 张量的点积
result = torch.dot(tensor[0], tensor[1])

# 沿着第一维度求和
sum_tensor = torch.sum(tensor, dim=0)

# 转置张量
transposed_tensor = torch.t(tensor)

# 将张量转换为NumPy数组
numpy_array = tensor.numpy()

5.2张量索引和切片

import numpy as np

# 创建一个3D的NumPy数组
arr = np.array([[[1, 2, 3],
                 [4, 5, 6]],
                [[7, 8, 9],
                 [10, 11, 12]]])

单个元素arr[0, 1, 2] 将返回第0层,第1行,第2列的元素(6)

多个元素arr[0, :, :] 将返回第一层的所有元素

切片选取arr[0, :, 1:3] 将返回第一层所有行的第2和第3列

步长arr[:, :, ::2] 将返回所有层和所有行的偶数列

5.3张量的形状变换

view():该方法将张量重塑为新的形状,但必须保证元素的总数保持不变。如果形状中有一个维度未知,可以使用 -1 作为占位符,PyTorch会自动推断出这个维度的大小

tensor = torch.randn(4, 3, 2)
reshaped_tensor = tensor.view(4, 6)  # 原始张量形状为(4, 3, 2),共24个元素,重塑为(4, 6)

squeeze():移除所有尺寸为1的维度

tensor = torch.randn(2, 1, 3, 1, 4)
squeezed_tensor = tensor.squeeze()  # 结果张量形状为(2, 3, 4)

unsqueeze():在给定的位置插入一个尺寸为1的新维度

tensor = torch.randn(2, 3, 4)
unsqueezed_tensor = tensor.unsqueeze(1)  # 结果张量形状为(2, 1, 3, 4)

transpose():交换两个维度的顺序

tensor = torch.randn(2, 3, 4)
transposed_tensor = tensor.transpose(0, 1)  # 第0维和第1维互换位置

  • 28
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值