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 / 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)

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

centos8系统如何安装宝塔面板

我这边购买了一台Hostease的VPS云主机产品,想要安装宝塔面板,但是我这边是安装时遇到错误,如图: 这边尝试检查了似乎时yum 有问题, 无法通过yum 安装。因此联系了Hostease技术人员帮助,他们告知自2022年1月…

《web应用技术》第九次作业

一、将前面的代码继续完善功能 1.采用XML映射文件的形式来映射sql语句&#xff1b; <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis…

原神抽卡点名程序教程(直接下载用)

今天我要给大家分享一个在抖音上特别火的视频——原神抽卡点名程序教程。 &#xff08;要源码的私信扣31&#xff09; 废话不多说&#xff0c;直接上效果图 &#xff1a; 步骤1&#xff1a; 步骤2&#xff1a;&#xff08;写名单&#xff0c;前面加数字代表星级&#xff0c;用…

数据结构(八)二叉树、哈希查找

文章目录 一、树&#xff08;一&#xff09;概念1. 前序遍历&#xff1a;根左右2. 中序遍历&#xff1a;左根右3. 后序遍历&#xff1a;左右根4. 层序遍历&#xff1a;需要借助队列实现 &#xff08;二&#xff09;代码实现&#xff1a;二叉树1. 结构体定义2. 创建二叉树1. 注意…

2019美亚

1.何源是一名 25 岁的客服人员&#xff0c;在一间电讯公司工作。某日&#xff0c;何源在用 iPhone 手机在政府建筑物 中偷拍车牌期间被警员截停&#xff0c;盘问期间警员检查手机相册发现多张车牌图片&#xff0c;何源情绪紧张&#xff0c;趁 警员不被&#xff0c;抢过手机丢入…

搭建YOLOv10环境 训练+推理+模型评估

文章目录 前言一、环境搭建必要环境1. 创建yolov10虚拟环境2. 下载pytorch (pytorch版本>1.8)3. 下载YOLOv10源码4. 安装所需要的依赖包 二、推理测试1. 将如下代码复制到ultralytics文件夹同级目录下并运行 即可得到推理结果2. 关键参数 三、训练及评估1. 数据结构介绍2. 配…

oracle tree

select * from "Test"; INSERT INTO "Test" ("id", "name", "pid") VALUES (01, 中国, 00); INSERT INTO "Test" ("id", "name", "pid") VALUES (01.01, 福建, 01); INSERT INTO…

重学java51.Collections集合工具类、泛型

"我已不在地坛&#xff0c;地坛在我" —— 《想念地坛》 24.5.28 一、Collections集合工具类 1.概述:集合工具类 2.特点: a.构造私有 b.方法都是静态的 3.使用:类名直接调用 4.方法: static <T> boolean addAll(collection<? super T>c,T... el…

ABAP MD04增强排除MRP元素

场景 MD04跑出来很多MRP元素&#xff0c;用户想手工控制某些MRP元素不参与运算 分析 增强点还蛮好找的&#xff0c;控制MRP元素是否参与运算用下面的se19三代增强点就可以&#xff0c;打个断点看下MD04进的哪个增强点就行 旧版本的用这个&#xff1a;MD_CHANGE_MRP_DATA 新…

【Linux】Socket中的心跳机制(心跳包)

Socket中的心跳机制(心跳包) 1. 什么是心跳机制&#xff1f;(心跳包) 在客户端和服务端长时间没有相互发送数据的情况下&#xff0c;我们需要一种机制来判断连接是否依然存在。直接发送任何数据包可以实现这一点&#xff0c;但为了效率和简洁&#xff0c;通常发送一个空包&am…

数据结构 | 详解二叉树——堆与堆排序

&#x1f95d;堆 堆总是一棵完全二叉树。 大堆&#xff1a;父节点总是大于子节点。 小堆&#xff1a;父节点总是小于子节点。 注意&#xff1a;1.同一个节点下的两个子节点并无要求先后顺序。 2.堆可以是无序的。 &#x1f349;堆的实现 &#x1f334;深度剖析 1.父节点和子…

【传知代码】自监督高效图像去噪(论文复现)

前言&#xff1a;在数字化时代&#xff0c;图像已成为我们生活、工作和学习的重要组成部分。然而&#xff0c;随着图像获取方式的多样化&#xff0c;图像质量问题也逐渐凸显出来。噪声&#xff0c;作为影响图像质量的关键因素之一&#xff0c;不仅会降低图像的视觉效果&#xf…

python基础知识总结(第一节)

一、python简介&#xff1a; Python是一种解释型&#xff0c;面向对象的高级语言。 Pyhton的语法和动态类型&#xff0c;以及解释性语言的本质&#xff0c;使它一跃成为多数平台上写脚本和快速开发应用的编程语言。 python语言百度百科介绍 二、Python基础语法&#xff1a;…

【busybox记录】【shell指令】mkfifo

目录 内容来源&#xff1a; 【GUN】【mkfifo】指令介绍 【busybox】【mkfifo】指令介绍 【linux】【mkfifo】指令介绍 使用示例&#xff1a; 创建管道文件 - 创建的时候同时指定文件权限 常用组合指令&#xff1a; 指令不常用/组合用法还需继续挖掘&#xff1a; 内容来…

月赚2万佣金的AI数字人,已成为新型带货神器,完整制作教程分享

大家好&#xff0c;我是设计师阿威 今天和大家分享一下用AI绘画制作数字人带货的副业创收教程&#xff0c;目前数字人类型的账号在短视频平台上&#xff0c;数字人带货能力非常强&#xff01; 今天我会分享4个爆款数字人账号案例&#xff0c;深度讲解目前数字人的最新玩法。 …

开源代码分享(31)-计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度

参考文献&#xff1a; [1]孙惠娟,刘昀,彭春华,等.计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度[J].电网技术,2021,45(09):3534-3545.DOI:10.13335/j.1000-3673.pst.2020.1720. 1.摘要 为了促进多能源互补及能源低碳化&#xff0c;提出了计及电转气协同的含碳捕集与垃…

三十三、openlayers官网示例Drawing Features Style——在地图上绘制图形,并修改绘制过程中的颜色

这篇讲的是使用Draw绘制图形时根据绘制形状设置不同颜色。 根据下拉框中的值在styles对象中取对应的颜色对象&#xff0c;new Draw的时候将其设置为style参数。 const styles {Point: {"circle-radius": 5,"circle-fill-color": "red",},LineS…

Web会话管理

一、会话管理的概念&#xff1a; 在人机交互时&#xff0c;会话管理是保持用户的整个会话活动的互动与计算机系统跟踪过程会话管理分类: 桌面会话管理、浏览器会话管理、Web服务器的会话管理。 二、为什么需要会话管理&#xff1f; HTTP是一种无状态协议&#xff0c;一次请…

day12

第一题 本题我们可以使用以下方法&#xff1a; 方法一&#xff1a; 使用hash表<元素&#xff0c;出现次数>来统计字符串中不同元素分别出现的次数&#xff0c;当某一个元素的次数大于1时&#xff0c;返回false&#xff0c;如果每个元素的出现次数都为1&#xff0c;则返回…

ABB 控制柜

1,主计算机:相当于电脑的主机,用于存放系统和数据,需要24V直流电才能工作。执行用户编写的程序,控制机器人进行响应的动作。主计算机有很多接口,比如与编程PC连接的服务网口、用于连接示教器的网口、连接轴计算机板的接口、连接安全面板的接口、不同的现场总线卡接口(比…