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

文章目录

    • 7.14 torch.fmod() 函数
    • 7.15 torch.remainder() 函数
    • 7.16 torch.frac() 函数
    • 7.17 torch.round() 函数

7.14 torch.fmod() 函数

在PyTorch中,torch.fmod 函数用于计算张量(tensor)中每个元素除以另一个张量或标量后的浮点余数1。

函数签名如下:

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

参数解释:

  • input (Tensor): 需要进行取余操作的输入张量。
  • divisor (Tensor or float): 除数,可以是与张量 input 形状相同的张量,也可以是一个标量。
  • out (Tensor, optional): 输出张量。如果提供,则结果将写入这个张量中,并且函数将返回这个张量。

torch.fmod 函数会返回一个新的张量,其中包含了输入张量 input 中每个元素除以 divisor 后的浮点余数。如果 divisor 是一个标量,那么它会被广播到与 input 相同的形状。如果 divisor 是一个张量,那么它必须具有与 input 相同的形状,或者可以广播到与 input 相同的形状。

以下是一个使用 torch.fmod 的例子:

import torch# 创建一个张量
x = torch.tensor([3.0, 5.0, 7.0])# 使用标量进行取余操作
y = torch.fmod(x, 2.0)# 打印结果
print(y)

输出将会是:

tensor([1., 1., 1.])

在这个例子中,torch.fmod 函数计算了张量 x 中每个元素除以标量 2.0 后的浮点余数,并将结果存储在 y 中。

你也可以使用与张量形状相同的 divisor:

# 创建一个张量
x = torch.tensor([3.0, 5.0, 7.0])# 使用形状相同的张量进行取余操作
divisor = torch.tensor([2.0, 3.0, 4.0])
y = torch.fmod(x, divisor)# 打印结果
print(y)

输出将会是:

tensor([1.0000, 2.0000, 3.0000])

在这个例子中,divisor 是一个与张量 x 形状相同的张量,torch.fmod 函数分别计算了 x 中每个元素除以 divisor 中对应元素后的浮点余数。

7.15 torch.remainder() 函数

在 PyTorch 中,torch.remainder 函数用于计算张量(tensor)中每个元素除以另一个张量或标量后的余数。这个函数与 torch.fmod 类似,但两者在处理负数和零时的行为有所不同。

函数签名如下:

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

参数解释:

  • input (Tensor): 需要进行取余操作的输入张量。
  • divisor (Tensor or float): 除数,可以是与张量 input 形状相同的张量,也可以是一个标量。
  • out (Tensor, optional): 输出张量。如果提供,则结果将写入这个张量中,并且函数将返回这个张量。

torch.remainder 使用 Python 的 % 运算符来计算余数,这意味着它的行为符合 Python 的整数除法规则。具体来说,当 divisor 是正数时,torch.remainder 的行为类似于 torch.fmod。但是,当 divisor 是负数时,torch.remainder 会返回一个与 divisor 符号相同的余数,而 torch.fmod 则总是返回一个正余数。

以下是一个使用 torch.remainder 的例子:

import torch# 创建一个张量
x = torch.tensor([5, -5, 3, -3])# 使用标量进行取余操作
y = torch.remainder(x, 2)# 打印结果
print(y)

输出将会是:

tensor([1, -1, 1, -1])

在这个例子中,torch.remainder 函数计算了张量 x 中每个元素除以 2 后的余数。由于 divisor 是正数 2,所以结果和 torch.fmod 相同。

然而,如果 divisor 是负数,torch.remainder 的行为将会有所不同:

# 使用负数标量进行取余操作
y = torch.remainder(x, -2)# 打印结果
print(y)

输出将会是:

tensor([-1, 1, -1, 1])

在这个例子中,由于 divisor 是负数 -2,torch.remainder 返回了一个与 divisor 符号相同的余数。

需要注意的是,在处理可能包含零的除法时,torch.remainder 和 torch.fmod 的行为可能也有所不同,因为零不能作为除数。在这种情况下,你应该确保你的代码能够妥善处理这种情况,避免除以零的错误。

7.16 torch.frac() 函数

在PyTorch中,torch.frac 函数用于计算张量(tensor)中每个元素的分数部分,即每个元素减去其向下取整后的值。

函数签名如下:

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

参数解释:

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

torch.frac 会返回一个新的张量,其中每个元素都是输入张量中对应元素的分数部分。

以下是一个使用 torch.frac 的例子:

import torch# 创建一个张量
x = torch.tensor([3.7, -2.2, 5.0, 0.0])# 计算张量中每个元素的分数部分
y = torch.frac(x)# 打印结果
print(y)

输出将会是:

tensor([0.7000, 0.7999, 0.0000, 0.0000])

在这个例子中,torch.frac 函数计算了张量 x 中每个元素的分数部分。可以看到,结果张量 y 中的每个元素都是 x 中对应元素减去其向下取整后的值。例如,3.7 的向下取整是 3,所以其分数部分是 3.7 - 3 = 0.7。同样地,-2.2 的向下取整是 -3,所以其分数部分是 -2.2 - (-3) = 0.8(注意这里由于向下取整,符号不会改变),以此类推

7.17 torch.round() 函数

在PyTorch中,torch.round() 函数用于将张量(tensor)中的每个元素四舍五入到最接近的整数。这意味着如果元素的值在两个整数之间,它将向上或向下取整,具体取决于它距离哪个整数更近。

函数签名如下:

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

参数解释:

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

torch.round() 返回一个新的张量,其中包含了输入张量中每个元素四舍五入后的结果。

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

import torch# 创建一个张量
x = torch.tensor([1.2, -2.7, 3.5, -4.4])# 对张量进行四舍五入
y = torch.round(x)# 打印结果
print(y)

输出将会是:

tensor([ 1., -3.,  4., -4.])

在这个例子中,torch.round() 函数将张量 x 中的每个元素四舍五入到了最接近的整数,并将结果存储在 y 中。可以看到,1.2 四舍五入后变成了 1,-2.7 四舍五入后变成了 -3,3.5 四舍五入后变成了 4,而 -4.4 四舍五入后变成了 -4。

需要注意的是,torch.round() 函数在处理浮点数时可能会引入一些微小的误差,因为浮点数的表示本身就不是完全精确的。然而,在大多数情况下,这些误差是可以忽略不计的。

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

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

相关文章

复习知识点

1. Java常用API 1.1 String类 在java中,String类代表字符串,字符串是常量的,不能被改变。如果想改变字符串。可以用字符串的缓冲区,StringBuffer、StringBuilder 1.1.1 String类的创建方式 第一种(常用&#xff09…

一文搞懂PCL中自定义点云类型的构建与函数使用

上周猛男快乐开发时遇到个bug,要用pcl的函数对自定义的点云进行处理。一起解决问题时遇到了很多问题,解决后整理出来分享给各位参考,以免踩一样的坑😊。文章中自定义的点我用PointT来表示,自定义点云一般指的是pcl::Po…

什么是UUID?

UUID(Universally Unique Identifier)即通用唯一识别码,主要用于在分布式环境中生成全局唯一标识符的标准方法。 UUID是一个128位的数字,通常用32个十六进制数表示,并且按照特定格式显示, 例如&#xff1a…

Linux命令行学习之操作文件和目录

目录 通配符 mkdir – 创建目录 cp – 复制文件和目录 mv – 移动和重命名文件 rm – 删除文件和目录 ln – 创建链接 硬链接 符号链接 本文介绍Linux用于操作文件和目录的命令,介绍的命令有: cp – 复制文件和目录mv – 移动/重命名文件和目录…

文件上传漏洞------一句话木马原理解析

目录 一、实验环境 二、实验过程 构造一句话木马 一句话木马的使用: 木马原理解析: 一、实验环境 小皮面板搭建:upload-labs靶场 二、实验过程 构造一句话木马 这是一个最简单的一句话木马,我们用GET传参接受了两个参数,其最终目的是构造出:ass…

【SQLite数据库】的使用

SQLite数据库 文章目录 SQLite数据库0、linux基础知识补充1、SQLite简介1.1 SQLite & MySQL 的优缺点比较1.2 常见的嵌入式数据库 2、数据库的基本命令和用法2.1 创建数据库2.2 创建一张表格2.3 插入一条数据2.4 增加一列2.5 删2.6 改2.7 查看数据库 3、数据库编程3.1 实验…

牛客网-SQL大厂面试题-1.各个视频的平均完播率

题目:各个视频的平均完播率 DROP TABLE IF EXISTS tb_user_video_log, tb_video_info; CREATE TABLE tb_user_video_log (id INT PRIMARY KEY AUTO_INCREMENT COMMENT 自增ID,uid INT NOT NULL COMMENT 用户ID,video_id INT NOT NULL COMMENT 视频ID,start_time dat…

【爬虫介绍】了解爬虫的魅力

爬虫 爬虫(Spider)是一种自动化程序,通过模拟人的行为,在互联网上收集、抓取和提取信息。爬虫通常用于网站数据抓取、搜索引擎索引、数据分析和挖掘等领域。 爬虫可以自动访问网页,按照预定的规则抓取网页上的文本、…

python-0009-django对数据的增删改

shell 在虚拟环境中,可以使用python manage.py shell,打开命令行。在命令行中,所见即所得,相当于执行代码片段 对象 from django.db import models# Create your models here.class BookInfo(models.Model):name models.CharF…

小车倒立摆系统线性化,离散化处理

一、线性化 从上一篇文章小车倒立摆物理建模与simulink仿真-CSDN博客 我们推导出了倒立摆小车的运动微分方程: 方程里包含了正弦,余弦运算,因此这个系统是非线性的,不容易控制。 我们的控制目标是把倒立摆直立在小车上(角度在0附…

移动云行动:5.5G技术引领数字化转型

刚刚结束的全国两会上,有人大代表建议应尽快发挥5G-A(5.5G)优势,加快试点城市布局。此前,中国移动已宣布将在300多个城市启动5.5G商用部署。在通信技术的历史长河中,4G改变了我们的生活方式,而5…

电感基础篇(一)(建议收藏)

大家好,我是砖一。 今天给大家分享一下电感的基础知识,希望对你有用~ 一,什么是电感 电感就是一根导线和磁性材料。 任意一根导线都是电感,只不过电感量很小,加上磁芯是为了控制电感量的大小,比如说我们…

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

Navicat 在数据库管理中的主要用途有哪些? Navicat 是一款数据库管理工具,其主要用途包括: 1、多数据库支持: Navicat 支持多种数据库连接,包括 MySQL、Oracle、PostgreSQL、SQLite、SQL Server 等,方便用…

安卓UI面试题 51-55

51. 如何解决 Android手机圆角失效问题? 通过 background-clip:padding-box为失效的元素设置样式 52. 简述下面是属于 GLSurFaceView 特性的是 ? A、管理一个 surface,这个 surface 就是一块特殊的内存,能直接排版到 android 的视图view 上。 B、管理一个 EGL display,它…

Python中的增强现实(AR)技术和应用

增强现实(AR)是一种技术,它允许用户在真实环境中与虚拟物体进行交互。在Python中实现AR应用通常涉及使用专门的AR库和框架,这些库和框架提供了创建和渲染虚拟内容的工具。 一个流行的AR框架是ARKit(对于iOS设备&#…

基于springboot+vue实现疫情防控物资调配系统项目【项目源码】计算机毕业设计

基于springbootvue实现疫情防控物资调配系统演示 B/S结构的介绍 在确定了项目的主题和研究背景之后,就要确定本系统的架构了。主流的架构有两种,一种是B/S架构,一种是C/S架构。C/S的全称是Client/Server,Client是客户端的意思&am…

Java技术栈 —— RBAC权限模型

什么是RBAC?全称为基于角色的访问控制(Role-Based Access Control),也就是不同角色权限不同。 参考文章或视频链接[1] 【【IT老齐217】简单粗暴讲解RBAC四级角色权限模型】[2] 【【IT老齐217】简单粗暴讲解RBAC四级角色权限模型】

JVM虚拟机:通过jconsole远程连接解决JVM报错

本文重点 前面我们介绍过的一些工具都是使用命令行的方式来帮助我们完成,本文我们将使用一种图形化界面的方式来远程连接,然后完成关于JVM的检测任务。 jconsole jconsole是一个JVM的检测工具,这个工具任何安装了Java的电脑上都有的&#…

70后姐妹上海创业,要IPO了

一种能与消费者高效互动的自动贩卖机,不仅于近日将一家上海公司送到港交所的门前,还让一对70后姐妹的身价超过13亿元。 在殷珏辉和妹妹殷珏莲的带领下,中国营销服务提供商趣致集团坐拥7543台自动贩卖机和超过5000万注册用户。通过为品牌方提…

Apache Paimon系列之:主键表

Apache Paimon系列之:主键表 一、主键表1.Bucket2.LSM Trees3.Compaction 二、数据分布1.固定Bucket2.动态Bucket3.正常动态Bucket模式4.跨分区更新插入动态存储桶模式 三、Merge Engine1.Deduplicate2.部分更新3.序列组4.聚合部分更新5.聚合6.Retract7.First Row 四…