当前位置: 首页 > news >正文

Deeplizard 深度学习课程(一)—— Pytorch 和 Tensor 简介

前言

        该pytorch笔记参考deeplizard官方网站课程,有相应视频和博客,链接如下:

deeplizardhttps://deeplizard.com/learn/video/v5cngxo4mIg

1.Pytorch 简介

         PyTorch 是一个深度学习框架和一个科学计算包。PyTorch 的科学计算方面主要是 PyTorch 的张量库和关联张量操作的结果。PyTorch 是由 Facebook 创建和维护的,其前身为Torch(基于Lua编程语言)。

        PyTorch 使用称为动态计算图的计算图(computational graphs),来绘制神经网络内部张量上发生的函数运算,动态意味着图形是在创建作时动态生成的。

  1.1 PyTorch 包

PackageDescription说明
torchThe top-level PyTorch package and tensor library最上层
torch.nnA subpackage that contains modules and extensible classes for building neural networks子包:包含构造神经网络的模块和可扩展类
torch.autogradA subpackage that supports all the differentiable Tensor operations in PyTorch.子包:支持Tensor的导数运算
torch.nn.functionalA functional interface that contains typical operations used for building neural networks like loss functions, activation functions, and convolution operations.函数接口:包含构建神经网络的经典操作,如损失函数、卷积运算
torch.optimA subpackage that contains standard optimization operations like SGD and Adam.子包:包含经典的优化操作
torch.utilsA subpackage that contains utility classes like data sets and data loaders that make data preprocessing easier.子包:包含实用程序(如数据集、数据加载器)
torchvisionA package that provides access to popular datasets, model architectures, and image transformations for computer vision.包:提供计算机视觉常用的数据集、架构等

  1.2 why GPU

        GPU(Graphics Processing Unit,图形处理单元)是一种处理特殊计算的处理器,专门为并行计算设计,最初用于图像处理(如3D渲染、图形加速),现也用于AI训练、大规模数据处理等。

        这与CPU(Central Processing Unit,中央处理器)形成鲜明对比,CPU擅长处理逻辑复杂、顺序性强的任务,比如操作系统调度、网页浏览、文本编辑、程序运行等。        

        并行计算是一种计算类型,通过特定计算被分解为可以同时执行的独立较小的计算。较大任务可以分解的任务数取决于特定硬件上包含的内核数。内核是处理器中实际执行计算的单元,CPU 通常有 4 、8 或 16 个内核,每个核心都很强大,而 GPU 可能有数千个小而高效的内核,因此适合处理高度并行的任务。

        之前听到过一个比较易懂的理解:CPU相当于一个博士生,可以完成非常复杂的工作;而GPU相当于很多个独立的高中生,可以同时完成很多简单的任务。

        AI的核心是对神经网络的计算,而神经网络的底层是矩阵运算,矩阵运算又可以拆分成很多可以并行计算的乘法和加法运算,所以选择GPU较为合适。而随着矩阵维度的升高,GPU中的CUDA核心也难以满足计算要求,于是GPU就又发展出了一个模块,Tensor Core专门用于神经网络的参数计算,这种GPU被称作GPGPU。

  1.3 CUDA / mps

        GPU是支持并行计算的硬件,而CUDA就可以理解为为开发者提供API的软件层,现在CUDA是pytorch的内置库,无需额外下载。mac需要将cuda改为mps

cpu运行tensor
gpu运行tensor,其中device是指第几张gpu

2.Tensor 简介

  2.1 深度学习的数据结构

        tensor 是一个泛化的数据结构,因为标量是零维tensor,矢量是一维tensor,矩阵是二维tensor ...... n维数组是一个n维tensor;tensor的索引是从0开始编号

tensor的特定实例,以及访问元素所需的索引数

        要注意区分 tensor 的维度 和 向量空间中向量的维度,tensor的维数并没有告诉我们tensor中有几个分量。例如二维向量空间中的向量有x、y两个分量,但二维tensor可以有9个分量。

二维tensor —— dd

  2.2 Rank、Axes 和 Shape

三个最核心的属性定义(理解)示例
Rank(秩)tensor的维度(访问tensor中元素所需的索引数;tensor的轴数)

dd 需要两个指标访问具体元素

       dd [0] [2] ----> 3

Axes(轴)tensor的某一个特定维度 
第一个
第二个
Shape(形状)

张量的形状由每个轴的长度决定

(shape只会改变元素的分组,但元素本身并未改变)

dd 的形状为【3,3】

说明秩为2,有两个轴,每个轴长度为3

        例:下面 tensor 的 shape ?              【1,2,4】 /  1 ✖️ 2 ✖️ 4

   2.3 CNN的tensor输入

        卷积神经网络是图像识别任务的首选网络,因为它们非常适合检测空间模式。

        CNN的tensor输入一般rank为4,即有四个轴,可以写作【B,C,H,W】对应【批量大小、颜色通道、高度、宽度】。高度和宽度比较好理解;所谓颜色通道常用的值如 3(RGB图像,红绿蓝)、1(灰度图像);批处理大小是指在CNN中,我们通常处理批量样本,因此这个维度是指相应批次中有多少样本。

例子:该批次中有三个样本,为灰度图像,大小为28*28 

         取出其中的一个样本,我们用三个滤波器分别对颜色通道做卷积操作,可以得到右侧的三个特征图,这个过程称为特征映射。特征图是从卷积创建的输出通道。

        由于我们有三个卷积滤波器,因此我们将有三个来自卷积层的通道输出。这些通道是卷积层的输出,因此名称为 output channels,而不是颜色通道。(相当于第二个轴的意义改变了) 

   2.4 PyTorch Tensors 详解

        数据预处理的一个目标是将原始输入数据转换为神经网络能接受的tensor形式。

  • torch.Tensor类的实例创建 及 属性
    import numpy as np
    import torcht = torch.Tensor()
    print(type(t))
    # <class 'torch.Tensor'>print(t.dtype)  # torch.float32
    print(t.device) # cpu
    print(t.layout) # torch.strided  # layout为布局方式,布局指定了张量在内存中的存储方式
  • Tensor 中的数据类型(dtype)

         tensor包含相同类型的数值数据,每种类型都有CPU和GPU两个版本,决定了tensor运算的位置。这里要注意,tensor之间的数据运算 必须是相同类型相同device的tensor

相关文章:

  • iotdb时序数据库使用
  • Go:测试
  • 强化学习的数学原理(十)actor-critic 方法
  • 接口测试(get请求方法)-----------实战演练
  • 得物golang一面
  • 在 Visual Studio Code 中安装通义灵码 - 智能编码助手
  • 【网络安全】谁入侵了我的调制解调器?(二)
  • NLP高频面试题(四十四)——RLHF过程中的马尔科夫决策过程及对话场景MDP设计
  • 【正点原子STM32MP257连载】第四章 ATK-DLMP257B功能测试——音频测试 #ES8388 #录音测试
  • AI Agent分类详解与对比
  • 力扣刷题Day 18:字符串解码(394)
  • 码界奇缘 Java 觉醒 后记 第二十五章 安全结界攻防战 - 从沙箱到模块化
  • 【SpringBoot】99、SpringBoot中整合RabbitMQ实现重试功能
  • 小白工具视频转wmv,支持多种格式视频在线转换为 WMV 格式,无需下载在线使用,方便快捷
  • 基于javaweb的SpringBoot兼职平台系统设计与实现(源码+文档+部署讲解)
  • 事务管理:确保数据一致性与业务完整性
  • celery rabbitmq 配置 broker和backend
  • 【充电器的原理】
  • CS5346 - Improving and Evaluating Effectiveness of Visualizations(提高和评估可视化的效果)
  • 云函数采集架构:Serverless模式下的动态IP与冷启动优化
  • 网站建设常识/青岛网站制作公司
  • 关于酒店网站规划建设方案书/seo的搜索排名影响因素有哪些
  • 那个网站可以做软件出售的/三叶草gy5987
  • 网站开发的软件有哪些/手机制作网页用什么软件
  • 开一个网络公司需要多少钱/无锡seo网站管理
  • 定制网站制作平台/推广软件下载