pytorch学习day1

news2024/11/19 5:26:30

一.pytorch主要模块介绍

1.1 模块介绍

模块描述
torch包含激活函数和主要的张量操作
torch.Tensor定义了张量的数据类型,方法可返回新张量,方法后缀带下划线可修改张量本身
torch.cuda定义了 CUDA 运算相关的函数,如检查 CUDA 是否可用,清除缓存,设置 GPU 计算流等
torch.nn神经网络模块化的核心,包括卷积神经网络和全连接层,以及一系列损失函数
torch.nn.functional定义神经网络相关的函数,卷积函数、池化函数、log_softmax 等激活函数,torch.nn 模块调用 torch.nn.functional 的函数
torch.nn.init权重初始化模块,均匀初始化和正态分布初始化,带下划线表示修改张量本身并返回
torch.optim定义一系列优化器,如 SGD、Adam,以及学习率调度器,实现学习率衰减方法
torch.autograd自动微分算法模块,反向传播和求导函数,设置不求导部分
torch.distributed分布式计算模块,设定并行运算环境
torch.distributions强化学习等需要的策略梯度法,处理离散采样结果无法求导的问题
torch.hub提供预训练模型给用户使用,可以获取模型的 checkpoint,加载对应模型
torch.random保存和设置随机数生成器,设置随机数种子,初始化种子,设置和获取当前随机数生成器状态
torch.jit动态图转静态图,保存后被其他前端支持,关联 torch.onnx 进行深度学习模型交换
torch.utils.benchmark记录模型中各模块运行时间,优化模型性能
torch.utils.checkpoint优化模型性能,以计算时间换空间,记录中间数据计算过程
torch.utils.data主要包含 Dataset 和 DataLoader,用于数据加载和预处理
torch.utils.tensorboardPyTorch 对 TensorBoard 的数据可视化支持工具,显示模型训练过程中的损失函数和张量权重的直方图,展示中间输出的文本、视频等内容

1.2 重要模块代码实现

1.2.1 Tensor

在深度学习和PyTorch中,张量(tensor)是一个多维数组,类似于实数、向量和矩阵的推广。张量可以是零维(标量)、一维(向量)、二维(矩阵)或更高维的数据容器。每个张量都有一个数据类型(如整数或浮点数)和形状(各维度的大小)。

在PyTorch中,张量由以下重要属性定义:

  1. 数据类型(Data Type):张量可以存储不同类型的数据,如整数、浮点数等。
  2. 形状(Shape):描述了张量的每个维度的大小。
  3. 维度(Dimension):张量的秩,即张量中包含的轴数。

torch.tensor 是 PyTorch 中创建张量的函数,返回一个新的张量对象。它具有多种属性,其

中一些重要的属性包括:

  1. device:表示张量所在的设备(如 CPU 或 GPU)。
  2. dtype:张量的数据类型,如 torch.float32、torch.int64 等。
  3. shape:张量的形状,描述了各个维度的大小。
  4. requires_grad:指示张量是否需要梯度,用于自动微分。
  5. grad:存储张量的梯度,用于反向传播。
  6. grad_fn:指向创建张量的函数(如加法操作)的反向传播函数。
  7. is_leaf:表示张量是否是叶张量,即未经过运算得到的张量。
  8. name:张量的名称,用于在 TensorBoard 等工具中进行标识和可视化。

这些属性使得张量可以有效地在深度学习中进行梯度计算、反向传播和参数更新。您可以使

用这些属性来检查和管理张量的状态和行为。

import torch

# 创建一个张量
x = torch.tensor([[1.0, 2.0, 3.0],
                  [4.0, 5.0, 6.0]])

# 访问张量的属性
print("Device:", x.device)  # 输出设备信息,通常是cpu
print("Data Type (dtype):", x.dtype)  # 输出数据类型
print("Shape:", x.shape)  # 输出张量的形状
print("Requires Gradient:", x.requires_grad)  # 输出是否需要计算梯度的信息,通常是False
print("Gradient (grad):", x.grad)  # 输出梯度信息
print("Gradient Function (grad_fn):", x.grad_fn)  # 输出梯度函数信息
print("Is Leaf:", x.is_leaf)  # 输出是否是叶节点的信息,通常是True
print("Name:", x.name)  # 输出张量的名称

1.2.2 Tensor的创建

在PyTorch中,有几种常见的方式可以用来创建张量,其中包括:

  1. 直接创建张量:使用torch.tensor函数可以直接从数据中创建张量。例如:

    import torch
    # 从列表创建张量
    a = torch.tensor([1, 2, 3])
    # 从numpy数组创建张量
    b = torch.tensor(np.array([4, 5, 6]))

  2. 使用特定函数创建:PyTorch提供了多种函数来创建特定类型的张量,如全零张量、全一张量等。例如:

    import torch
    # 创建全零张量
    zeros_tensor = torch.zeros(2, 3)
    # 创建全一张量
    ones_tensor = torch.ones(3, 4)

  3. 通过随机数创建:使用随机数函数可以创建具有随机值的张量。例如:

    import torch
    # 创建服从均匀分布的随机张量
    random_uniform = torch.rand(2, 2)
    # 创建服从标准正态分布的随机张量
    random_normal = torch.randn(3, 3)

  4. 从已有张量创建:可以通过现有张量的形状和数据类型创建新的张量。例如:

    import torch
    # 从现有张量创建张量
    x = torch.tensor([[1, 2], [3, 4]])
    new_tensor = torch.zeros_like(x)

1.2.3 Tensor的操作

在线性回归和其他深度学习任务中,张量操作是至关重要的。PyTorch提供了丰富的张量操作函数,使得数据处理和模型训练变得高效和灵活。下面介绍几种常见的张量操作:

  1. 张量创建:使用torch.tensor()函数或特定的张量创建函数(如torch.zeros()torch.ones())创建张量。

  2. 张量形状操作:可以通过tensor.size()tensor.view()等方法改变张量的形状。

  3. 张量运算:PyTorch支持常见的张量运算,如加法、减法、乘法、除法等,使用运算符或对应的函数实现。

  4. 索引和切片:类似于Python列表,可以通过索引和切片操作访问和修改张量的元素。

  5. 广播:PyTorch支持广播操作,自动将不同形状的张量进行适当的扩展以进行运算。

  6. 转置和重塑:通过tensor.t()进行张量转置,通过tensor.permute()进行轴变换,通过tensor.reshape()进行张量的重塑。

  7. 约简和聚合操作:可对张量进行约简操作,如求和、均值、最大值、最小值等,使用tensor.sum()tensor.mean()等。

  8. 逐元素操作:PyTorch支持逐元素的数学函数,如torch.exp()torch.log()torch.relu()等。

  9. 矩阵操作:可以通过torch.mm()进行矩阵乘法,通过torch.inverse()计算逆矩阵。

  10. 梯度计算:梯度计算是PyTorch的关键功能,张量操作会记录梯度信息,可通过tensor.backward()计算梯度。

这些张量操作函数使得在PyTorch中进行深度学习任务和模型构建更加方便和高效。通过灵活使用这些操作,可以实现各种复杂的深度学习任务。

import torch

# 创建张量
x = torch.tensor([[1, 2], [3, 4]])
y = torch.ones(2, 2)
print("Tensor x:")
print(x)
print("Tensor y:")
print(y)

# 张量形状操作
print("Shape of x:", x.size())

# 张量运算
z = x + y
print("Addition of x and y:")
print(z)

# 索引和切片
print("First row of x:")
print(x[0, :])

# 广播操作
a = torch.tensor([1, 2, 3])
b = torch.tensor([[4], [5], [6]])
c = a + b
print("Broadcasting result:")
print(c)

# 转置操作
x_transposed = x.t()
print("Transposed x:")
print(x_transposed)

# 逐元素操作
x_squared = x**2
print("Element-wise square of x:")
print(x_squared)

1.2.4 张量的数学操作

在PyTorch中,张量数学运算是非常重要的,它们包括标量运算、向量运算、矩阵运算等。以下是一些常见的张量数学运算示例:

标量运算

import torch

# 创建两个张量
x = torch.tensor(3.0)
y = torch.tensor(2.0)

# 加法
result_add = x + y

# 减法
result_sub = x - y

# 乘法
result_mul = x * y

# 除法
result_div = x / y

print("Addition:", result_add)
print("Subtraction:", result_sub)
print("Multiplication:", result_mul)
print("Division:", result_div)

向量运算

import torch

# 创建两个向量
x = torch.tensor([1.0, 2.0, 3.0])
y = torch.tensor([4.0, 5.0, 6.0])

# 点积(内积)
dot_product = torch.dot(x, y)

# 元素逐一相乘
element_wise_product = x * y

print("Dot Product:", dot_product)
print("Element-wise Product:", element_wise_product)

矩阵运算

import torch

# 创建两个矩阵
A = torch.tensor([[1, 2], [3, 4]])
B = torch.tensor([[5, 6], [7, 8]])

# 矩阵乘法
matrix_product = torch.mm(A, B)

# 转置
A_transpose = A.t()

print("Matrix Product:")
print(matrix_product)
print("Transpose of A:")
print(A_transpose)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1715944.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FL Studio21.2.5中文版电子音乐制作的强大工具

在当今的数字音乐时代,电子音乐已经成为了全球音乐市场中不可或缺的一部分。越来越多的音乐爱好者开始尝试自己动手创作电子音乐,而FL Studio 21中文版正是为他们量身打造的一款强大工具。作为一个音频制作爱好者,我深知一个好的数字音频工作…

使用OrangePi KunPeng Pro部署AI模型

目录 一、OrangePi Kunpeng Pro简介二、环境搭建三、模型运行环境搭建(1)下载Ollama用于启动并运行大型语言模型(2)配置ollama系统服务(3)启动ollama服务(4)启动ollama(5)查看ollama运行状态四、模型部署(1)部署1.8b的qwen(2)部署2b的gemma(3)部署3.8的phi3(4)部署4b的qwen(5)部…

【问题解决】pycharm中添加python interpreter报错 conda excutable is no found

选择安装目录下的conda.bat文件,然后点击“Load Environments”按钮,然后在列表中选择conda环境即可。

工控一体机5寸显示器电容触摸屏(YA05WK)产品规格说明书

如果您对工控一体机有任何疑问或需求,或者对如何集成工控一体机到您的业务感兴趣,可移步控芯捷科技。 一、硬件功能介绍 YA05WK是我公司推出的一款新型安卓屏,4核Cortex-A7 架构,主频1.2GHz的CPU。采用12V供电,标配5寸…

MyBatis出现:SQLSyntaxErrorException: Unknown column ‘XXX‘ in ‘field list‘

<update id"updateStudent">update tb_students set stu_name${stuName},stu_gender${stuGender},stu_age${stuAge},stu_tel${stuTel}where stu_num ${stuNum}</update> 本质上来说&#xff0c;是Mybatis使用上的错误&#xff0c;不熟悉&#xff0c;理…

Swift 下标

下标 一、下标语法二、下标用法三、下标选项四、类型下标 下标可以定义在类、结构体和枚举中&#xff0c;是访问集合、列表或序列中元素的快捷方式。可以使用下标的索引&#xff0c;设置和获取值&#xff0c;而不需要再调用对应的存取方法。举例来说&#xff0c;用下标访问一个…

TC3xx分析--如何提高系统运行效率(2)

目录 1.概述 2.限定符对于代码的影响 3.小结 1.概述 上文TC3xx分析--如何提高系统运行效率(1)-CSDN博客讲解了Tasking中lsl的某些关键定义&#xff0c;简述了Tricore寻址模式&#xff0c;接下来我们继续看&#xff0c;不同memory限定符对于代码的影响。 2.限定符对于代码的…

工控一体机7寸显示器电容触摸屏(YR07JK)产品规格说明书

如果您对工控一体机有任何疑问或需求&#xff0c;或者对如何集成工控一体机到您的业务感兴趣&#xff0c;可移步控芯捷科技。 一、硬件功能介绍 1.1 YR07JK介绍 YR07JK工控机是我公司推出的一款新型 Cortex-A17 架构&#xff0c;主频达1.8GHz、具有高性能低能耗的工业控制板卡…

<Transition> expects exactly one child element or component.

近日在vue中使用 Transition 标签是发生了如下报错&#xff1a; [plugin:vite:vue] expects exactly one child element or component. 原因&#xff1a; 仅支持单个元素或组件作为其插槽内容。如果内容是一个组件&#xff0c;这个组件必须仅有一个根元素。 原始代码&#xff1…

李廉洋:5.29黄金趋势向下,原油持续走高,美盘走势分析及策略。

黄金消息面分析&#xff1a;当前美国存在一个令人担忧且未被充分关注的问题&#xff1a;房地产行业低迷、高利率和抵押贷款利率、租金高涨以及美联储的紧缩政策构成了一个恶性循环。由于高房价和高抵押贷款利率&#xff0c;美国住房经济活动远低于两年前的水平。为了让该行业好…

APP原生开发与框架开发的优劣势

电话管家APP商用也有几年时间了&#xff0c;但是客户一直都有遇到一些问题。 为什么我们的APP老是要升级&#xff1f; 为什么有些手机使用体验不好&#xff1f; 为什么有些公司的APP几天就开发出来上线了&#xff1f; 为什么有些公司的APP那么便宜&#xff1f; 今天就来从…

整理了六个正规靠谱的兼职赚钱软件,适合普通人做的兼职副业~

​随着互联网时代的到来&#xff0c;越来越多的人选择通过互联网赚钱。在这篇文章中&#xff0c;我们将探讨一些可以在网上长期赚钱的方法。 在网络上面其实有很多的赚钱方法&#xff0c;尽管方法很多&#xff0c;但是对于一些网络新手&#xff0c;刚进入互联网圈子不久的伙伴…

老年人健康管理系统项目部署【linux】

老年人健康管理系统项目部署【linux】 前言版权推荐老年人健康管理系统项目部署购买阿里云服务器开发票连接开放端口 安装软件查看状态1更新yum源2安装jdk83安装mysql4上传Mysql数据5安装redis6安装kakfa7安装nginx8运行命令 命令汇总1更新yum源2Jdk8安装3Mysql安装4Mysql数据5…

基于51单片机的温控风扇的设计–仿真设计

可实现通过DS18B20测量当前环境温度 可实现通过温度自动控制风扇转速 可实现通过按键设置不同风速对应的温度 可实现通过按键切换自动、手动模式 可实现在手动模式下通过按键调整风扇转速 可实现通过LCD1602显示温度、风扇转速挡位、自动/手动模式

ozon卖家精灵,ozon卖家怎么使用

在跨境电商的浪潮中&#xff0c;OZON作为俄罗斯领先的电商平台&#xff0c;吸引了众多卖家争相入驻。然而&#xff0c;面对日益激烈的市场竞争&#xff0c;如何提升店铺的运营效果&#xff0c;成为卖家们迫切需要解决的问题。而OZON卖家精灵作为一款专为OZON卖家打造的辅助工具…

二叉树介绍及堆

文章目录 树 概念及结构 二叉树 概念及结构 特殊的二叉树 完全二叉树 满二叉树 性质 储存 顺序存储 链式储存 堆 概念及结构 小堆 大堆 建堆 向上调整建堆 向下调整建堆 TOPK问题 法一&#xff1a; 法二&#xff1a; 树 概念及结构 树是一种非线性的数据…

小白跟做江科大32单片机之LED流水灯

1.复制下面地址新建的工程&#xff0c;改名为3-2 LED流水灯 小白跟做江科大32单片机之LED闪烁-CSDN博客https://blog.csdn.net/weixin_58051657/article/details/139295351?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%2213929…

每天学点小知识:Windows终端Powershell美化

前言 本章的旨在教会你美化自己的终端&#xff0c;powershell需要以管理员运行 经过我的测试&#xff0c;不同的电脑可能会有不同的报错&#xff0c;具体操作根据官方为主https://ohmyposh.dev/docs 效果展示 Oh My Posh&#xff1a;提供美观的 PowerShell 提示符主题 1.安装…

【UE5.1 角色练习】08-物体抬升、抛出技能 - part2

目录 前言 效果 步骤 一、让物体缓慢的飞向手掌 二、向着鼠标方向发射物体 前言 在上一篇&#xff08;【UE5.1 角色练习】08-物体抬升、抛出技能 - part1&#xff09;的基础上继续完成角色将物体吸向手掌&#xff0c;然后通过鼠标点击的方向来发射物体的功能。 效果 步骤…

linux开发之设备树四、设备树中断节点

中断节点 这里是由原厂的BSP工程师写的一部分 在CPU的外部有一个GIC控制器&#xff0c;外设会连接在GIC控制器上 设备树是对硬件进行描述的&#xff0c;所以设备树会对CPU进行描述&#xff0c;也要对GIC 控制器进行描述&#xff0c;这部分的代码由原厂的BSP工程师进行编写&…