PyTorch学习笔记之基础函数篇(七)

文章目录

  • 5. 基本数学运算
    • 5.1 torch.add()函数
    • 5.2 torch.sub()函数
    • 5.3 torch.mul()函数
    • 5.4 torch.div() 函数
    • 5.5 torch.pow() 函数
    • 5.6 torch.sqrt()函数
    • 5.7 torch.exp()函数

5. 基本数学运算

5.1 torch.add()函数

torch.add() 是 PyTorch 中的一个函数,用于执行逐元素的加法操作。这个函数可以接受多个张量(tensors)作为输入,并返回一个新的张量,其中每个元素都是输入张量对应元素之和。

函数的基本语法如下:

torch.add(input, alpha=1, other, out=None) → Tensor

参数说明:

  • input:要进行加法操作的输入张量。
  • alpha:要乘以input张量的标量值。默认为1。
  • other:要与input张量相加的另一个张量或标量。
  • out:可选参数,用于指定输出张量。

函数的工作原理是将alpha乘以input张量,然后加上other张量或标量。如果other是一个标量,则它会被加到input张量的每个元素上。如果other是一个张量,则它必须具有与input张量相同的形状,以便逐元素地相加。

这里有一些使用torch.add()的例子:

import torch# 例子1:将标量加到张量上
x = torch.tensor([1.0, 2.0, 3.0])
y = torch.add(x, 2)  # y = x + 2
print(y)  # 输出: tensor([3., 4., 5.])# 例子2:将张量加到另一个张量上
x = torch.tensor([1.0, 2.0, 3.0])
y = torch.tensor([4.0, 5.0, 6.0])
z = torch.add(x, y)  # z = x + y
print(z)  # 输出: tensor([5., 7., 9.])# 例子3:使用alpha参数
x = torch.tensor([1.0, 2.0, 3.0])
y = torch.add(x, alpha=0.5, other=2)  # y = 0.5 * x + 2
print(y)  # 输出: tensor([2.5, 3.0, 3.5])

注意:torch.add()函数不会修改输入张量,而是返回一个新的张量。

5.2 torch.sub()函数

torch.sub() 是 PyTorch 中的一个函数,用于执行逐元素的减法操作。该函数接受至少两个张量(tensors)作为输入,并返回一个新的张量,其中每个元素都是第一个输入张量对应元素减去第二个输入张量对应元素的结果。

函数的基本语法如下:

torch.sub(input, other, alpha=1, out=None) → Tensor

参数说明:

  • input:要进行减法操作的输入张量。
  • other:要从input张量中减去的另一个张量或标量。
  • alpha:可选参数,要乘以other张量或标量的标量值。默认为1。
  • out:可选参数,用于指定输出张量。

如果other是一个标量,那么它会从input张量的每个元素中减去。如果other是一个张量,那么它必须具有与input张量相同的形状,以便进行逐元素的减法。

下面是一些使用torch.sub()的例子:

import torch# 例子1:从张量中减去标量
x = torch.tensor([5.0, 3.0, 2.0])
y = torch.sub(x, 2)  # y = x - 2
print(y)  # 输出: tensor([3., 1., 0.])# 例子2:从张量中减去另一个张量
x = torch.tensor([5.0, 3.0, 2.0])
y = torch.tensor([1.0, 2.0, 3.0])
z = torch.sub(x, y)  # z = x - y
print(z)  # 输出: tensor([4., 1., -1.])# 例子3:使用alpha参数
x = torch.tensor([5.0, 3.0, 2.0])
y = torch.sub(x, other=2, alpha=0.5)  # y = x - 0.5 * 2
print(y)  # 输出: tensor([4., 2., 1.])

请注意,torch.sub()函数不会修改输入张量,而是返回一个新的张量。此外,torch.sub()函数还可以接受一个out参数,用于指定输出张量的位置,这在某些情况下可以用于避免不必要的内存分配。

5.3 torch.mul()函数

torch.mul() 是 PyTorch 中的一个函数,用于执行逐元素的乘法操作。这个函数可以接受两个张量(tensors)作为输入,并返回一个新的张量,其中每个元素都是输入张量对应元素相乘的结果。

函数的基本语法如下:

torch.mul(input, other, out=None) → Tensor

参数说明:

  • input:要进行乘法操作的第一个输入张量。
  • other:要与input张量相乘的第二个张量或标量。
  • out:可选参数,用于指定输出张量。

如果other是一个标量,那么它会与input张量的每个元素相乘。如果other是一个张量,那么它必须具有与input张量相同的形状,以便进行逐元素的乘法。

下面是一些使用torch.mul()的例子:

import torch# 例子1:张量与标量相乘
x = torch.tensor([1.0, 2.0, 3.0])
y = torch.mul(x, 2)  # y = x * 2
print(y)  # 输出: tensor([2., 4., 6.])# 例子2:张量与张量相乘
x = torch.tensor([1.0, 2.0, 3.0])
y = torch.tensor([4.0, 5.0, 6.0])
z = torch.mul(x, y)  # z = x * y
print(z)  # 输出: tensor([ 4., 10., 18.])# 例子3:使用out参数
x = torch.tensor([1.0, 2.0, 3.0])
y = torch.tensor([4.0, 5.0, 6.0])
result = torch.empty(3)
torch.mul(x, y, out=result)  # 结果存储在result中
print(result)  # 输出: tensor([ 4., 10., 18.])

注意,torch.mul() 函数和 * 运算符在 PyTorch 中都可以用来执行逐元素的乘法操作。使用 * 运算符时,它会直接返回结果,而不需要显式地调用一个函数。

# 使用 * 运算符执行逐元素乘法
z = x * y
print(z)  # 输出: tensor([ 4., 10., 18.])

这两种方式在功能上是等效的,选择哪种方式取决于你的编程风格和偏好。

5.4 torch.div() 函数

数接受两个张量(tensors)作为输入,并返回一个新的张量,其中每个元素都是第一个输入张量对应元素除以第二个输入张量对应元素的结果。如果第二个输入是一个标量,那么它会被用来除以第一个输入张量的每个元素。如果第二个输入是一个张量,那么它必须具有与第一个输入张量相同的形状,以便进行逐元素的除法。

函数的基本语法如下:

torch.div(input, other, out=None) → Tensor

参数说明:

  • input:要进行除法操作的输入张量。
  • other:要除以input张量的每个元素的数字或张量。
  • out:可选参数,用于指定输出张量。

例如:

import torch# 例子1:将张量的每个元素除以一个标量
x = torch.tensor([2.0, 4.0, 6.0])
y = torch.div(x, 2)  # y = x / 2
print(y)  # 输出: tensor([1., 2., 3.])# 例子2:将一个张量的每个元素除以另一个张量的对应元素
x = torch.tensor([2.0, 4.0, 6.0])
y = torch.tensor([1.0, 2.0, 3.0])
z = torch.div(x, y)  # z = x / y
print(z)  # 输出: tensor([2., 2., 2.])

5.5 torch.pow() 函数

torch.pow() 函数在 PyTorch 中的完整函数如下:

torch.pow(input, exponent, out=None) → Tensor

这个函数接受三个参数:

  • input (Tensor): 输入张量,它可以是任何维度的张量。
  • exponent (float 或 Tensor): 指数,它可以是一个浮点数(在这种情况下,input 张量的每个元素都会被提升到相同的幂),或者是一个与 input 张量形状相同的张量(在这种情况下,input 张量的每个元素都会被提升到对应 exponent 张量中元素的幂)。
  • out (Tensor, 可选): 输出张量。如果提供,则结果将被写入此张量中。如果没有提供,则会创建一个新的张量来存储结果。

函数的返回值是一个新的张量,它是 input 张量中每个元素提升到 exponent 幂后的结果。

这里有一些使用 torch.pow() 的例子:

import torch# 例子1:对整个张量的每个元素应用相同的指数
x = torch.tensor([1.0, 2.0, 3.0])
y = torch.pow(x, 2)  # y = [1^2, 2^2, 3^2]
print(y)  # 输出: tensor([1., 4., 9.])# 例子2:使用不同的指数
exponent = torch.tensor([2.0, 3.0, 4.0])
y = torch.pow(x, exponent)  # y = [1^2, 2^3, 3^4]
print(y)  # 输出: tensor([ 1.,  8., 81.])# 例子3:使用 out 参数
x = torch.tensor([1.0, 2.0, 3.0])
exponent = 2.0
result = torch.empty(3)
torch.pow(x, exponent, out=result)  # 结果存储在 result 中
print(result)  # 输出: tensor([1., 4., 9.])

在第一个例子中,整个张量的每个元素都被提升到了 2 的幂。在第二个例子中,张量的每个元素被提升到了对应 exponent 张量中元素的幂。在第三个例子中,我们使用了 out 参数来指定输出张量。

5.6 torch.sqrt()函数

torch.sqrt() 是 PyTorch 中的一个函数,用于计算输入张量每个元素的平方根。

函数的基本语法如下:

torch.sqrt(input, out=None) → Tensor

参数说明:

  • input:要进行平方根计算的输入张量。
  • out:可选参数,用于指定输出张量。

torch.sqrt() 函数会返回一个新的张量,其中每个元素都是输入张量对应元素的平方根。如果输入张量中的元素是负数,那么结果将是 NaN(不是一个数字)。

以下是一个使用 torch.sqrt() 的例子:

import torch# 创建一个张量
x = torch.tensor([4.0, 9.0, 16.0])# 计算每个元素的平方根
y = torch.sqrt(x)print(y)  # 输出: tensor([2., 3., 4.])

在这个例子中,我们创建了一个包含三个元素的张量 x,然后使用 torch.sqrt() 计算了每个元素的平方根,并将结果存储在 y 中。输出显示 y 中的每个元素都是 x 中对应元素的平方根。

5.7 torch.exp()函数

torch.exp() 函数的完整函数签名在 PyTorch 中是这样的:

torch.exp(input, out=None) → Tensor

这个函数接受两个参数:

  • input (Tensor): 输入张量。这应该是你想要计算其每个元素自然指数(e 的幂)的张量。
  • out (Tensor, 可选): 输出张量。如果提供,结果将直接写入这个张量中。如果没有提供,函数将返回一个新的张量。

torch.exp() 函数返回一个新的张量,其中包含输入张量中每个元素的自然指数(即 e 的对应元素幂)。这个函数对于实现诸如神经网络中的激活函数(如 softmax)或计算概率分布(如高斯分布)等任务非常有用。

以下是一个使用 torch.exp() 函数的例子:

import torch# 创建一个张量
x = torch.tensor([0.0, 1.0, 2.0])# 计算每个元素的自然指数
y = torch.exp(x)print(y)  # 输出: tensor([1., 2.7183, 7.3891])

在这个例子中,我们创建了一个包含三个元素的张量 x,然后使用 torch.exp() 计算了每个元素的自然指数,并将结果存储在 y 中。输出显示 y 中的每个元素都是 x 中对应元素的自然指数。

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

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

相关文章

excel 破解 保护工作簿及保护工作表

excel 破解 保护工作簿及保护工作表 对于这种 保护工作簿及保护工作表 不知道密码时,可以使用以下方法破解 保护工作簿破解 打开受保存的excel 右键点击sheet名称 —> 查看代码 复制以下代码,粘贴到代码区域 Sub 工作簿密码破解() ActiveWorkbook.…

C++ —— 类和对象(终)

目录 1. 日期类的实现 1.1 前置 和 后置 重载 1.2 >> 和 << 的重载 2. const 成员 3. 取地址及const取地址操作符重载 4. 再谈构造函数 4.1 构造函数体赋值 4.2 初始化列表 4.3 隐式类型转换 4.4 explict 关键字 5. static 成员 5.1 概念 5.2 特性 …

conda 的基础操作

Conda 是一个开源的包管理系统和环境管理系统&#xff0c;用于安装多个版本的软件包及其依赖关系&#xff0c;并能够在它们之间轻松切换。以下是一些基本的 Conda 命令&#xff1a; 创建环境 创建一个新的 conda 环境&#xff1a; conda create --name myenv创建一个新的 conda…

【Mybatis面试题】Mybatis如何防止SQL注入?$#的区别是什么

1. 如何防止SQL注入&#xff1f; SQL注入&#xff1a;SQL命令插入到web表单提交或通过页面请求的查询字符串&#xff0c;最终达到欺骗服务器执行恶意的SQL指令。注入攻击的本质是把用户输入的数据当做代码执行。例如&#xff1a; 例如: 表单有两个用户需要填写的表单数据&…

【Web】浅聊Hessian异常toString姿势学习复现

目录 前言 利用关键 调用分析 如何控制第一个字节 EXP 前言 Hessian CVE-2021-43297&#xff0c;本质是字符串和对象拼接导致隐式触发了该对象的 toString 方法&#xff0c;触发toString方法便可生万物&#xff0c;而后打法无穷也&#xff01; 这个CVE针对的是Hessian2I…

Follow-Your-Click——点选图像任意区域对象使用短提示语即可生成视频

简介 “I2V”&#xff08;图像到视频生成&#xff09;旨在将静态图像转换为具有合理动作的动态视频剪辑&#xff0c;在电影制作、增强现实和自动广告等领域有广泛应用。然而&#xff0c;现有的I2V方法存在一些问题&#xff0c;例如缺乏对图像中需要移动的部分的精准控制&#…

机器学习模型—K means

文章目录 机器学习模型—K means聚类的目标k 均值原理k 均值 的实现手动实现Python 实现K 的确定 手肘法总结机器学习模型—K means K-Means 聚类是一种无监督机器学习算法,它将未标记的数据集分为不同的簇。本文旨在探讨 k 均值聚类的基本原理和工作原理以及实现。 无监督机…

【力扣】383.赎金信

题目描述 给你两个字符串&#xff1a;ransomNote 和 magazine &#xff0c;判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以&#xff0c;返回 true &#xff1b;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 示例 1&#xff1a; …

快速幂简介

0. 介绍 传统算 a b a^b ab需要 b − 1 b-1 b−1次&#xff0c;快速幂将 b b b分解成 2 2 2进制的形式简化为 l o g 2 ( b ) log_2(b) log2​(b)次 1. 实现 将 b b b化为2进制位的形式。 b ∑ i 0 n c i 2 i , c i ∈ { 0 , 1 } b\sum_{i0}^{n}c_i \times2^i, c_i \in \…

Chain of Verification-CoVe减少LLM中的幻觉现象

Chain-Of-Verification Reduces Hallucination In Large Language Models 在大型语言模型中&#xff0c;产生看似合理但实际上错误的事实信息&#xff0c;即幻觉&#xff0c;是一个未解决的问题。我们研究了语言模型在给出回答时进行深思以纠正错误的能力。我们开发了Chain-of…

深度解析 Android 系统属性

目录 Android系统属性 1.属性在哪里&#xff1f; 2.属性长什么样&#xff1f; 3.如何读写属性&#xff1a; 4.属性的作用 属性文件生成过程 如何添加系统属性 1.添加系统属性到 /system/build.prop 2.添加系统属性到 /vendor/build.prop 3.添加系统属性到 /product/b…

未来教育趋势:AI个性化培训如何推动企业与员工共赢

AI定制学习&#xff1a;重新定义个性化员工培训的未来 随着人工智能&#xff08;AI&#xff09;技术的迅猛发展&#xff0c;我们正目睹并亲历了AI在培训领域所引发的根本性变革。AI技术的整合不仅革新了知识传递的模式&#xff0c;而且重新塑造了个性化学习的内涵。依托于尖端算…

《深入Linux内核架构》第2章 进程管理和调度 (4)

目录 2.6 CFS调度类 2.6.1 数据结构 2.6.2 CFS操作 2.6.3 队列操作 2.6.4 选择下一个进程 2.6.5 处理周期性调度器 2.6.6 唤醒抢占 2.6 CFS调度类 即完全公平调度类&#xff0c;用于调度普通进程。 2.6.1 数据结构 struct sched_class fair_sched_class {.next &am…

Restormer: Efficient Transformer for High-Resolution Image Restoration

Abstract 由于卷积神经网络&#xff08;CNN&#xff09;在从大规模数据中学习可概括的图像先验方面表现良好&#xff0c;因此这些模型已广泛应用于图像恢复和相关任务。最近&#xff0c;另一类神经架构 Transformer 在自然语言和高级视觉任务上表现出了显着的性能提升。虽然 T…

【安全类书籍-2】Web渗透测试:使用Kali Linux

目录 内容简介 作用 下载地址 内容简介 书籍的主要内容是指导读者如何运用Kali Linux这一专业的渗透测试平台对Web应用程序进行全面的安全测试。作者们从攻击者的视角出发,详细阐述了渗透测试的基本概念和技术,以及如何配置Kali Linux以适应渗透测试需求。书中不仅教授读者…

vulnhub-----SickOS靶机

文章目录 1.信息收集2.curl命令反弹shell提权利用POC 1.信息收集 ┌──(root㉿kali)-[~/kali/vulnhub/sockos] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:10:3c:9b, IPv4: 10.10.10.10 Starting arp-scan 1.9.8 with 256…

邮件客户端 Thunderbird 简单配置

1. 基本情况介绍 原来使用的邮箱客户端是 Office 365 自带的 Outlook 365切换原因&#xff1a;新装电脑&#xff0c;发现原 Outlook 中的账号信息无法迁移&#xff0c;需要耗费大量时间手动配置邮箱使用的邮箱&#xff1a;微软 O365 邮箱、qq 邮箱、163 邮箱、公司私有邮箱 …

clickhouse介绍

ClickHouse 是一个开源的分布式列式数据库管理系统(DBMS)&#xff0c;是专门针对 OLAP&#xff08;联机分析处理&#xff09;场景设计的。它由俄罗斯的 Yandex 公司开发&#xff0c;具有高性能、可扩展性强、支持 SQL 查询等特点。 ClickHouse 的主要特点包括&#xff1a; 列…

北斗卫星引领农机春耕新时代

北斗卫星引领农机春耕新时代 随着现代科技的快速发展&#xff0c;北斗卫星成为了农业领域不可或缺的利器。在农机自动驾驶系统的引领下&#xff0c;农机正逐渐实现自主操作&#xff0c;为农民节省了大量的时间和精力&#xff0c;并最大限度地提高了农作物的产量和质量。 北斗…

GEE高阶案例——利用eemont实现 GEE STAC 中任意栅格数据RASTER 的 STAC 信息

教程中主要是利用eemont包实现检查 GEE STAC 中任意 RASTER 数据集的 STAC 信息 简介 遥感影像是利用航空飞机、卫星等远距离无人机获取地球表面信息的技术,可以提供丰富的波段和属性信息。下面将详细介绍如何查看遥感影像的波段和属性信息。 1. 查看波段信息: 遥感影像通…