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

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 函数可能更为明确和安全。

  • 16
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Pytorch是机器学习中的一个重要框架,它与TensorFlow一起被认为是机器学习的两大框架。Pytorch学习可以从以下几个方面入手: 1. Pytorch基本语法:了解Pytorch的基本语法和操作,包括张量(Tensors)的创建、导入torch库、基本运算等\[2\]。 2. Pytorch中的autograd:了解autograd的概念和使用方法,它是Pytorch中用于自动计算梯度的工具,可以方便地进行反向传播\[2\]。 3. 使用Pytorch构建一个神经网络:学习使用torch.nn库构建神经网络的典型流程,包括定义网络结构、损失函数、反向传播和更新网络参数等\[2\]。 4. 使用Pytorch构建一个分类器:了解如何使用Pytorch构建一个分类器,包括任务和数据介绍、训练分类器的步骤以及在GPU上进行训练等\[2\]。 5. Pytorch的安装:可以通过pip命令安装Pytorch,具体命令为"pip install torch torchvision torchaudio",这样就可以在Python环境中使用Pytorch了\[3\]。 以上是一些关于Pytorch学习笔记,希望对你有帮助。如果你需要更详细的学习资料,可以参考引用\[1\]中提到的网上帖子,或者查阅Pytorch官方文档。 #### 引用[.reference_title] - *1* [pytorch自学笔记](https://blog.csdn.net/qq_41597915/article/details/123415393)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Pytorch学习笔记](https://blog.csdn.net/pizm123/article/details/126748381)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊猫Devin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值