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

文章目录

  • 7 元素级别的数学运算
    • 7.1 torch.abs() 函数
    • 7.2 torch.cos() 函数
    • 7.3 torch.acos() 函数
    • 7.4 torch.add()函数

7 元素级别的数学运算

7.1 torch.abs() 函数

在PyTorch中,torch.abs 函数用于计算张量中每个元素的绝对值。这个函数会返回一个新的张量,其中包含输入张量中每个元素的绝对值。

函数签名如下:

torch.abs(input, *, out=None) → Tensor

参数解释:

  • input (Tensor): 输入张量。
  • out (Tensor, optional): 输出张量。如果提供,则结果将写入这个张量中,并且函数将返回这个张量。

下面是一个使用 torch.abs 的例子:

import torch# 创建一个张量
x = torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0])# 计算绝对值
y = torch.abs(x)# 打印结果
print(y)

输出将是:

tensor([2.0000, 1.0000, 0.0000, 1.0000, 2.0000])

在这个例子中,torch.abs 函数计算了输入张量 x 中每个元素的绝对值,并将结果存储在 y 中。

在神经网络中,绝对值函数通常不用作激活函数,但在某些情况下,例如计算损失函数时,可能需要用到绝对值。此外,torch.abs 也可以用于一般的数学运算,比如计算张量之间的差异或进行归一化等。

7.2 torch.cos() 函数

在PyTorch中,torch.cos 函数用于计算张量中每个元素的余弦值。这个函数会返回一个新的张量,其中包含输入张量中每个元素的余弦值。

函数签名如下:

torch.cos(input, *, out=None) → Tensor

参数解释:

  • input (Tensor): 输入张量。
  • out (Tensor, optional): 输出张量。如果提供,则结果将写入这个张量中,并且函数将返回这个张量。

下面是一个使用 torch.cos 的例子:

import torch# 创建一个张量
x = torch.tensor([0.0, π/2, π, 3*π/2, 2*π])# 计算余弦值
y = torch.cos(x)# 打印结果
print(y)

请注意,在上面的代码中,π(pi)是一个数学常量,代表圆周率。在Python中,通常使用import math来访问math.pi。然而,在PyTorch张量中,你可以直接使用torch.tensor(math.pi)来创建一个包含π值的张量。

由于π(pi)是一个特殊的数学常量,它并不是Python语言的一部分。在上面的例子中,我假设你想要表示圆周率π,但在Python代码中并没有正确地定义它。在Python中,你需要从math模块导入π,如下所示:

import torch
import math# 创建一个张量,使用math.pi来表示圆周率
x = torch.tensor([0.0, math.pi/2, math.pi, 1.5 * math.pi, 2 * math.pi])# 计算余弦值
y = torch.cos(x)# 打印结果
print(y)

输出将会是:

tensor([ 1.0000,  0.0000, -1.0000, -0.0000,  1.0000])

在这个修正后的例子中,我们导入了math模块并使用math.pi来表示圆周率。然后,我们创建了一个张量x,其中包含了几个与π相关的值,并使用torch.cos计算了它们的余弦值。由于余弦函数是周期性的,所以cos(0) = 1,cos(π/2) = 0,cos(π) = -1,cos(1.5π) = 0,cos(2π) = 1。

7.3 torch.acos() 函数

在PyTorch中,torch.acos 函数用于计算张量中每个元素的反余弦值(arc cosine),也就是余弦函数的逆运算。torch.acos 返回的是每个输入值的反余弦值,范围在 [0, π] 弧度之间。

函数签名如下:

torch.acos(input, *, out=None) → Tensor

参数解释:

  • input (Tensor): 输入张量,其值应该在 [-1, 1] 范围内,因为反余弦函数的定义域是 [-1, 1]。
  • out (Tensor, optional): 输出张量。如果提供,则结果将写入这个张量中,并且函数将返回这个张量。

下面是使用 torch.acos 的一个例子:

import torch# 创建一个张量
x = torch.tensor([1.0, 0.5, 0.0, -0.5, -1.0])# 计算反余弦值
y = torch.acos(x)# 打印结果
print(y)

输出将会是:

tensor([0.0000, 1.0472, 1.5708, 2.0944, 3.1416])

在这个例子中,torch.acos 函数计算了输入张量 x 中每个元素的反余弦值,并将结果存储在 y 中。注意,torch.acos 的输入值必须在 [-1, 1] 范围内,否则将会抛出错误。

在神经网络中,torch.acos 可能不常用作激活函数,但在某些特定的计算任务中,比如处理与角度或三角关系有关的数据时,它可能会很有用。

其他三角函数用法相同不一一列举了

7.4 torch.add()函数

在PyTorch中,torch.add 是一个函数,用于将两个张量(tensors)相加。这个函数有几种不同的使用方式,包括就地(in-place)操作和非就地(non-in-place)操作。

函数签名如下:

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

参数解释:

  • input (Tensor): 第一个张量。
  • alpha (Number, optional): 乘数因子,与other张量相乘后再加到input上。默认为1。
  • other (Tensor or Number): 第二个张量或标量。如果other是一个张量,那么它的形状必须与input兼容(broadcastable)。如果other是一个标量,那么它会被加到input的每一个元素上。
  • out (Tensor, optional): 输出张量。如果提供,则结果将写入这个张量中,并且函数将返回这个张量。

下面是一些使用 torch.add 的例子:

例子 1: 两个张量相加

import torch# 创建两个形状相同的张量
x = torch.tensor([1.0, 2.0, 3.0])
y = torch.tensor([4.0, 5.0, 6.0])# 使用torch.add相加
result = torch.add(x, y)# 打印结果
print(result)

输出:

tensor([5., 7., 9.])

例子 2: 使用标量与张量相加

import torch# 创建一个张量
x = torch.tensor([1.0, 2.0, 3.0])# 使用标量与张量相加
result = torch.add(x, 2)# 打印结果
print(result)

输出:

tensor([3., 4., 5.])

例子 3: 就地操作

import torch# 创建一个张量
x = torch.tensor([1.0, 2.0, 3.0])# 使用torch.add进行就地操作
torch.add(x, 2, out=x)# 打印结果
print(x)

输出:

tensor([3., 4., 5.])

在这个例子中,x 被修改了,因为 out=x 指定了输出应该写回到 x 中。

注意:在大多数情况下,你可以使用 += 运算符来进行非就地相加操作,例如 x += y,这通常是更简洁的写法。然而,对于某些操作,尤其是当你需要避免潜在的原地修改时,使用 torch.add 函数可能更为明确和安全。

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

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

相关文章

python爬虫实战——抖音

目录 1、分析主页作品列表标签结构 2、进入作品页前 判断作品是视频作品还是图文作品 3、进入视频作品页面,获取视频 4、进入图文作品页面,获取图片 5、完整参考代码 6、获取全部作品的一种方法 本文主要使用 selenium.webdriver(Firef…

Java与Go:Map

Map(也可以成为字典,映射表)是一种数据结构,用于存储键值对(key-value pairs)。它是一种抽象的数据类型并且允许通过键来快速查找和访问与之相关联的值。在Java和Go中,Map提供了一种非常方便的方…

文章管理AI在架构设计中的关键作用

随着信息技术的飞速发展,人工智能(AI)已逐渐成为各行业的创新引擎。在内容管理领域,文章管理AI的崛起不仅改变了传统的内容生产方式,更在架构设计层面展现出其独特的价值和潜力。本文旨在深入探讨文章管理AI在架构设计…

AJAX学习日记——Day 2

一、Bootstrap 1、功能&#xff1a;不离开当前页面&#xff0c;显示单独内容 2、导入&#xff1a; 1、导入bootstrap.css<link href"https://cdn.jsdelivr.net/npm/bootstrap5.3.0-alpha1/dist/css/bootstrap.min.css" rel"stylesheet" integrity&qu…

手机网络连接性能API接口:查询手机网络连接性能状态

手机在网状态查询服务是一项非常方便的服务&#xff0c;可以帮助我们随时了解一个手机号码的在网状态。不论是查询自己的手机号码&#xff0c;还是查询他人的手机号码&#xff0c;这个服务都可以帮助我们获取准确的信息。今天&#xff0c;我想和大家介绍一个非常好用的手机在网…

力扣100题—持续更新

目录 LC141环形列表(easy)题目描述方法1&#xff1a;快慢指针&#xff08;1&#xff09;思路&#xff08;2&#xff09;python代码&#xff08;3&#xff09;复杂度分析 LC881救生艇&#xff08;medium&#xff09;题目描述方法1&#xff1a;双指针-对撞指针&#xff08;1&…

C++三级2021考题

我家的门牌号 #include<bits/stdc.h> using namespace std; int n,m,sum0; int a[100]; void f(int); int x(int); int main() {int s;cin>>n;for(int i1;true;i){s(1i)*i/2;for(int j1;j<i;j){if(s-2*jn){cout<<j<<i;return 0;}}}return 0; } voi…

柚见第十二期(随机匹配)

随机匹配 目的 为了帮大家更快地发现和自己兴趣相同的朋友 问题 匹配 1 个还是匹配多个&#xff1f; 答&#xff1a;匹配多个&#xff0c;并且按照匹配的相似度从高到低排序 怎么匹配&#xff1f;&#xff08;根据什么匹配&#xff09; 答&#xff1a;标签 tags 还可以根据 us…

分享一下自己总结的7万多字java面试笔记和一些面试视频,简历啥的,已大厂上岸

分享一下自己总结的7万多字java面试笔记和一些面试视频&#xff0c;简历啥的&#xff0c;已大厂上岸 自己总结的面试简历资料&#xff1a;https://pan.quark.cn/s/8b602fe53b58 文章目录 SSMspringspring 的优点&#xff1f;IoC和AOP的理解**Bean 的生命周期****列举一些重要…

20个最佳ChatGPT创业提示

20 Best ChatGPT Prompts for Start-Ups 在初创企业不断变化的生态系统中&#xff0c;利用像 ChatGPT 这样的尖端工具可以成为改变游戏规则的因素。初创企业以其敏捷性和创新性而闻名&#xff0c;总是在寻找提高效率、创造力和竞争力的方法。ChatGPT 凭借其先进的功能&#xf…

leetcode2684--矩阵中移动的最大次数

1. 题意 矩阵中一个位置只能从左上一、左、左下一格子转移而来&#xff0c;且当前值一定大于转移之前的值&#xff1b; 求从第一列开始的最大转移步数。 矩阵中移动的最大次数 2. 题解 思路 由于状态只能从左向右转移&#xff0c;所以同一个位置被搜索到后&#xff0c;第一…

一命通关差分

本章节是前缀和的延申 一命通关前缀和-CSDN博客https://blog.csdn.net/qq_74260823/article/details/136530291?spm1001.2014.3001.5501 一命通关前缀和 公交车 引入 还是利用我们在前缀和中所采用的例子——公交车。 有一辆公交车&#xff0c;一共上下了N批乘客&#xff1a…

【Vue3】源码解析-Runtime

文章目录 系列文章packages/runtime-dom/src/index.ts初始化创建renderermount \src\runtime-core\component.jsh.tspackages/runtime-core/src/renderer.ts挂载及卸载DOM节点render packages/runtime-dom/src/nodeOps.tspackages/runtime-core/src/apiCreateApp.ts创建appmoun…

前端UNIAPP端webview嵌入H5使用说明文档

一、关闭webView窗口 plus.webview.close( id_wvobj, aniClose, duration, extras ); 功能说明 关闭已经打开的Webview窗口&#xff0c;需先获取窗口对象或窗口id&#xff0c;并可指定关闭窗口的动画及动画持续时间。 参数说明 参数是否必须参数类型/固定值说明id_wvobj是…

GPT-3后的下一步:大型语言模型的未来方向

摘要&#xff1a; 本文将概述GPT-3后的下一步&#xff1a;大型语言模型的未来方向&#xff0c;包括技术发展趋势、应用场景、挑战与机遇。 引言&#xff1a; GPT-3是OpenAI于2020年发布的一款大型语言模型&#xff0c;它在自然语言处理领域取得了突破性进展。GPT-3的出现标志…

全国农产品价格分析预测可视化系统设计与实现

全国农产品价格分析预测可视化系统设计与实现 【摘要】在当今信息化社会&#xff0c;数据的可视化已成为决策和分析的重要工具。尤其是在农业领域&#xff0c;了解和预测农产品价格趋势对于农民、政府和相关企业都至关重要。为了满足这一需求&#xff0c;设计并实现了全国农产…

RabbitMQ 面试题及答案整理,最新面试题

RabbitMQ的核心组件有哪些&#xff1f; RabbitMQ的核心组件包括&#xff1a; 1、生产者&#xff08;Producer&#xff09;&#xff1a; 生产者是发送消息到RabbitMQ的应用程序。 2、消费者&#xff08;Consumer&#xff09;&#xff1a; 消费者是接收RabbitMQ消息的应用程序…

哥斯拉流量webshell分析-->ASP/PHP

哥斯拉流量webshell分析 哥斯拉是继菜刀、蚁剑、冰蝎之后的又一个webshell利器&#xff0c;这里就不过多介绍了。 哥斯拉GitHub地址&#xff1a;https://github.com/BeichenDream/Godzilla 很多一线师傅不太了解其中的加解密手法&#xff0c;无法进行解密&#xff0c;这篇文章…

Vue.js基础

表单输入绑定 基础用法 v-model 指令在表单 <input>、<textarea>及 <select> 元素上创建双向数据绑定。 v-model 本质上不过是语法糖。它负责监听用户的输入事件以更新数据&#xff0c;并对一些极端场景进行一些特殊处理。 vue 模板语法包括两大类 插值语法…

Java算法之数论基础

Java算法之数论基础 一、最大公约数&#xff08;Greatest Common Divisor, GCD&#xff09; 在Java中&#xff0c;我们可以使用欧几里得算法&#xff08;辗转相除法&#xff09;来求两个数的最大公约数&#xff1a; 辗转相除法&#xff08;欧几里得算法&#xff09; 辗转相…