pytorch学习day1

一.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 / yprint("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 * yprint("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.mzph.cn/news/844572.shtml

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

相关文章

JetLinks物联网平台在windows 7搭建(前后端)部署教程

近期对接TCP、modbusTCP等自定义解析,做了很多万能解析的方法,却都不遂人意,而一直在用的ThingsBoard不能直接对接TCP透传(企业版除外),需要在外围做一些自定义解析,然后转json再mqtt上传,感觉来说比较麻烦…

Android笔记--应用安装

这一节了解一下普通应用安装app的方式&#xff0c;主要是唤起系统来安装&#xff0c;直接上代码: 申请权限 <uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE"/><uses-permission android:name"android.permission.WRITE_EXT…

【包装类简单认识泛型】

目录 1&#xff0c;包装类 1.1 基本数据类型和对应的包装类 1.2 装箱和拆箱 2&#xff0c;什么是泛型 3&#xff0c;引出泛型 3.1 语法 4&#xff0c;泛型如何编译的 4.1 擦除机制 4.2 为什么不能实例化泛型类型数组 5&#xff0c;泛型的上界 5.1 语法 5.2 复杂示例…

Windows内核函数 - 添加、修改注册表键值

打开注册表的句柄后&#xff0c;就可以对该项进行设置和修改了。注册表是以二元形式存储的&#xff0c;即“键名”和“键值”。通过键名设置键值&#xff0c;而键值可以划分几个类&#xff0c;如下表所示。 表1 键值的分类 在添加和修改注册表键值的时候&#xff0c;要分类进行…

dp秒杀优惠券

1、全局id生成器 当用户抢购时&#xff0c;就会生成订单并保存到tb_voucher_order这张表中&#xff0c;而订单表如果使用数据库自增ID就存在一些问题&#xff1a; id的规律性太明显受单表数据量的限制 场景分析&#xff1a;如果我们的id具有太明显的规则&#xff0c;用户或者…

企业网站有必要进行软件测试吗?网站测试有哪些测试流程?

企业网站在现代商业中扮演着重要的角色&#xff0c;它不仅是企业形象的重要体现&#xff0c;也是与客户、合作伙伴进行沟通与交流的重要渠道。然而&#xff0c;由于企业网站的复杂性和关键性&#xff0c;其中可能存在各种潜在的问题和隐患。因此&#xff0c;对企业网站进行软件…

el-upload上传文件使用http-request方法,formdata传集合List到后台

el-upload上传文件 前言1、使用el-upload上传文件1.1代码演示1.2回显列表2、formdata传集合List到Springboot后台前言 在使用el-upload上传文件,会遇到必须使用:action="upload_url"远端链接的问题,本章我们讲解怎样不适用远端链接,通过上传获取到本地的file文件…

海尔智家牵手罗兰-加洛斯,看全球创牌再升级

晚春的巴黎西郊&#xff0c;古典建筑群与七叶树林荫交相掩映&#xff0c;坐落于此的罗兰加洛斯球场内座无虚席。 来自全球各地的数万观众&#xff0c;正与场外街道上的驻足者们一起&#xff0c;等待着全世界最美好的网球声响起…… 当地时间5月26日&#xff0c;全球四大职业网…

RFM模型-分析母婴类产品

1&#xff0c;场景描述 假设我们是某电商平台的数据分析师&#xff0c;负责分析母婴产品线的用户数据。母婴产品的购买行为具有一定的周期性和生命周期特征&#xff0c;如用户在不同怀孕阶段的需求不同&#xff0c;以及宝宝出生后的不同成长阶段需要不同的产品。 2&#xff0…

XV7011BB可为智能割草机的导航系统提供新的解决方案

智能割草机作为现代家庭和商业草坪维护保养的重要工具&#xff0c;其精确的定位和导航系统对于提高机器工作效率和确保安全运行至关重要。在智能割草机的发展历程中&#xff0c;定位和导航技术一直是关键的创新点。 传统的基于RTK(实时动态差分定位技术)技术的割草机虽然在…

景源畅信电商:抖音开店步骤是什么?

随着社交媒体的兴起&#xff0c;抖音已经成为一个不可忽视的电商平台。许多人都希望通过抖音开店来实现自己的创业梦想。那么&#xff0c;抖音开店的具体步骤是什么呢?接下来&#xff0c;我们将详细阐述这一问题。 一、明确回答问题抖音开店的步骤主要包括&#xff1a;注册账号…

Vue 3 教程:核心知识

Vue 3 教程&#xff1a;核心知识 1. Vue3简介1.1. 【性能的提升】1.2.【 源码的升级】1.3. 【拥抱TypeScript】1.4. 【新的特性】 2. 创建Vue3工程2.1. 【基于 vue-cli 创建】2.2. 【基于 vite 创建】(推荐)2.3. 【一个简单的效果】 3. Vue3核心语法3.1. 【OptionsAPI 与 Compo…

【C++】---二叉搜索树

【C】---二叉搜索树 一、二叉搜索树概念二、二叉搜索树操作&#xff08;非递归&#xff09;1.二叉搜索树的查找 &#xff08;非递归&#xff09;&#xff08;1&#xff09;查找&#xff08;2&#xff09;中序遍历 2.二叉搜索树的插入&#xff08;非递归&#xff09;3.二叉搜索树…

Java 实现二叉搜索树 代码

新建文件 创建TreeNode类&#xff0c;实例化 直接在BinarySearchTree类里面写就可以 static class TreeNode {public int key;public TreeNode left;public TreeNode right;TreeNode(int key) {this.key key;}}public TreeNode root; 插入节点 insert public boolean inser…

Spring创建对象的多种方式

一、对象分类 简单对象&#xff1a;使用new Obj()方式创建的对象 复杂对象&#xff1a;无法使用new Obj()方式创建的对象。例如&#xff1a; 1. AOP创建代理对象。ProxyFactoryBean; 2. Mybatis中的SqlSessionFactoryBean; 3. Hibernate中的SessionFactoryBean。二、创建对象方…

创新案例 | 持续增长,好孩子集团的全球化品牌矩阵战略与客户中心设计哲学

探索好孩子集团如何通过创新设计的全球化品牌矩阵和以客户为中心的产品策略&#xff0c;在竞争激烈的母婴市场中实现持续增长。深入了解其品牌价值观、市场定位策略以及如何满足新一代父母的需求。本文旨在为中高级职场人士、创业家及创新精英提供深度见解&#xff0c;帮助他们…

最新上市公司控制变量大全(1413+指标)1990-2023年

数据介绍&#xff1a;根据2023年上市公司年报数据进行更新&#xff0c;包括基本信息、财务指标、环境、社会与治理、数字化转型、企业发展、全要素生产率等1413指标。数据范围&#xff1a;A股上市公司数据年份&#xff1a;1990-2023年指标数目&#xff1a;1413个指标&#xff0…

在云中确保安全的五个技巧

随着采用云计算战略并开始充分意识到云计算技术可以提供的回报&#xff0c;企业可以做些什么来改善他们的风险状况?以下是德迅云安全在云中确保安全的五个技巧。 德迅云安全对如何在云计算基础设施中确保安全的五个技巧进行了阐述和分析。 在当今的混合工作环境中&#xff0c…

UG NX二次开发(C#)-UFun函数-利用UFPart.Export导出模型中的对象并创建一个新的part

文章目录 1、前言2、UF_PART_export函数定义3、UF_PART_export_with_options函数定义4、代码1、前言 在UG NX 10.0二次开发中,需要用到将装配体中通过几何建模创建的对象独立创建一个part文件,所以查找了下UFun函数,即是UF_PART_export 和UF_PART_export_with_options两个函…

在Windows 10中,如何利用命令提示符删除应用程序

如果你使用的是Windows 10&#xff0c;并且需要释放一些磁盘空间&#xff0c;你可以直接从命令提示符卸载不再使用的应用程序。以下是操作方法。 首先&#xff0c;你必须以管理员身份运行命令提示符才能卸载程序。在“Windows搜索”框中&#xff0c;键入“cmd”或“命令提示符…