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

文章目录

    • 2.8 torch.logspace函数讲解
    • 2.9 torch.ones函数
    • 2.10 torch.rand函数
    • 2.11 torch.randn函数
    • 2.12 torch.zeros函数

2.8 torch.logspace函数讲解

torch.logspace 函数在 PyTorch 中用于生成一个在对数尺度上均匀分布的张量(tensor)。这意味着张量中的元素是按照对数间隔排列的,而不是线性间隔。这对于创建在数值上跨越多个数量级的序列特别有用,例如,在机器学习模型的超参数搜索中,我们可能想要测试不同数量级的学习率。

torch.logspace 函数的原型如下:


torch.logspace(start, end, steps=100, base=10.0, 
dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor

参数解释:

start:序列的起始值(以底数为底的对数)。
end:序列的结束值(以底数为底的对数)。
steps:生成的样本数量,默认是 100。
base:对数的底数,默认是 10.0。这意味着 start 和 end 是以 10 为底的对数值。
如果是以自然对数(以 e 为底)为间隔,则设置 base=math.e。
dtype:返回张量的数据类型,如果未提供,则推断数据类型。
layout:返回张量的内存布局,默认是 torch.strided。
device:返回张量所在的设备,例如 CPU 或 GPU。
requires_grad:如果设置为 True,则张量将需要梯度,用于反向传播。

使用 torch.logspace 的例子:

import torch# 创建一个从 10^1 到 10^3(即 10 到 1000)之间,包含 5 个元素的张量,底数为 10
tensor = torch.logspace(1.0, 3.0, 5, base=10.0)print(tensor)

输出可能类似于:

tensor([  10.,   32.,  100.,  316., 1000.])

在这个例子中,start=1.0 对应于底数为 10 的 10(即 10^1),end=3.0 对应于底数为 10 的 1000(即 10^3)。steps=5 表示我们希望生成 5 个元素。结果是一个包含 5 个元素的张量,这些元素在 10 到 1000 之间,按照对数尺度均匀分布。

注意,当 steps 参数很大时,最后一个元素可能会略微超过 end 值,因为对数间隔不是严格的均匀分布。同样,当 steps 参数很小时,第一个元素可能会略微小于 start 值。

2.9 torch.ones函数

在PyTorch中,torch.ones 函数用于创建一个所有元素都设置为1的张量(Tensor)。这个函数接受与 torch.eye 类似的参数,允许你指定张量的形状(即行数和列数)。

下面是如何使用 torch.ones 创建一个全1张量的示例:

import torch# 创建一个3x3的全1矩阵
ones_matrix = torch.ones(3, 3)print(ones_matrix)

输出将是:

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

在这个例子中,torch.ones(3, 3) 创建了一个3x3的矩阵,其中所有元素都是1。
如果你想要创建一个不是方阵的全1张量,你可以分别指定行数和列数:

# 创建一个2x3的全1矩阵
ones_matrix_non_square = torch.ones(2, 3)print(ones_matrix_non_square)

输出将是:

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

在这个例子中,torch.ones(2, 3) 创建了一个2x3的矩阵,其中所有元素都是1。
同样,你也可以通过 dtype 参数指定张量的数据类型:

# 创建一个3x3的全1矩阵,数据类型为int64
ones_matrix_int = torch.ones(3, 3, dtype=torch.int64)print(ones_matrix_int)

这将输出一个3x3的矩阵,其中所有元素都是1,并且数据类型是torch.int64。
请注意,由于 torch.int64 是整数类型,所有元素将被设置为1,而不是浮点数1.0。如果你想要创建浮点数的全1张量,你应该使用 torch.float32 或 torch.float64(默认为 torch.float32)作为数据类型。

2.10 torch.rand函数

在PyTorch中,torch.rand 函数用于创建一个给定形状的张量(Tensor),其中每个元素都是从均匀分布 U(0, 1) 中随机抽取的。这意味着所有元素的值都在0到1之间(包括0但不包括1)。

下面是如何使用 torch.rand 创建一个随机张量的示例:

import torch# 创建一个3x3的随机张量
random_tensor = torch.rand(3, 3)print(random_tensor)

输出将是一个3x3的矩阵,其中的每个元素都是随机生成的,并且值在0到1之间:

tensor([[0.1234, 0.5678, 0.9101],[0.2345, 0.6789, 0.1230],[0.3456, 0.7890, 0.4567]])

请注意,每次调用 torch.rand 时都会生成一个新的随机张量,即使形状和大小相同。
如果你想要创建一个具有特定数据类型的随机张量,可以使用 dtype 参数。例如,要创建一个浮点数为 torch.float64 类型的随机张量,可以这样做:

random_tensor_double = torch.rand(3, 3, dtype=torch.float64)
print(random_tensor_double)

2.11 torch.randn函数

在PyTorch中,torch.randn 函数用于创建一个给定形状的张量(Tensor),其中每个元素都是从标准正态分布(均值为0,标准差为1)中随机抽取的。这意味着生成的张量中的值将遵循正态分布,并且平均来说,大部分值将接近0,但会有一些正值和负值。

下面是如何使用 torch.randn 创建一个随机张量的示例:

import torch# 创建一个3x3的随机张量,元素来自标准正态分布
random_tensor = torch.randn(3, 3)print(random_tensor)

输出将是一个3x3的矩阵,其中的每个元素都是随机生成的,并且符合标准正态分布:

tensor([[ 0.1234, -0.5678,  0.9101],[-0.2345,  0.6789, -0.1230],[ 0.3456, -0.7890,  0.4567]])

torch.randn 在深度学习和统计建模中特别有用,因为它可以帮助你生成符合正态分布的随机初始权重和偏差,这些权重和偏差在训练神经网络时通常会得到更好的性能。

2.12 torch.zeros函数

在PyTorch中,torch.zeros 函数用于创建一个所有元素都设置为0的张量(Tensor)。这个函数接受一个形状参数,允许你指定张量的维度。

下面是如何使用 torch.zeros 创建一个全0张量的示例:

import torch# 创建一个3x3的全0矩阵
zeros_matrix = torch.zeros(3, 3)print(zeros_matrix)

输出将是:

tensor([[0., 0., 0.],[0., 0., 0.],[0., 0., 0.]])

在这个例子中,torch.zeros(3, 3) 创建了一个3x3的矩阵,其中所有元素都是0。

你可以创建任意维度的全0张量,只需要提供相应的维度参数即可:

# 创建一个2维的全0张量,形状为 (4, 5)
zeros_tensor = torch.zeros(4, 5)print(zeros_tensor)

输出将是:

tensor([[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.]])

如果你想要指定张量的数据类型,可以使用 dtype 参数:

# 创建一个3x3的全0矩阵,数据类型为float64
zeros_matrix_float64 = torch.zeros(3, 3, dtype=torch.float64)print(zeros_matrix_float64)

输出将是:

tensor([[0., 0., 0.],[0., 0., 0.],[0., 0., 0.]], dtype=torch.float64)

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

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

相关文章

【vue2源码】模版编译

文章目录 一、mount 基本流程二、执行 $mount 方法三、模版编译1、入口代码2、parse2.1 parseHTML2.2 parseText 3、generategenElement 函数 4、createCompileToFunctionFn 4、mountComponent 一、mount 基本流程 在执行 _init (new Vue时) 的方法中,调用了 vm.$m…

力扣热题100_矩阵_240_搜索二维矩阵 II

文章目录 题目链接解题思路解题代码 题目链接 240. 搜索二维矩阵 II 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例 1: 输入&#xf…

pytorch DDP模式下, 获取数据的的preftech + stream

直接上代码 - DDP forward if self.device_ids:if len(self.device_ids) 1:inputs, kwargs self.to_kwargs(inputs, kwargs, self.device_ids[0])output self.module(*inputs[0], **kwargs[0])else:inputs, kwargs self.scatter(inputs, kwargs, self.device_ids)outputs …

GAMES104-现代游戏引擎 1

主要学习重点还是面向就业,重点复习八股和算法 每天早上八点到九点用来学习这个课程 持续更新中... 第一节 游戏引擎导论 第二节 引擎架构分层

OLLAMA:如何像云端一样运行本地大语言模型

简介:揭开 OLLAMA 本地大语言模型的神秘面纱 您是否曾发现自己被云端语言模型的网络所缠绕,渴望获得更本地化、更具成本效益的解决方案?那么,您的探索到此结束。欢迎来到 OLLAMA 的世界,这个平台将彻底改变我们与大型…

橡胶工厂5G智能制造数字孪生可视化平台,推进橡胶工业数字化转型

橡胶5G智能制造工厂数字孪生可视化平台,推进橡胶工业数字化转型。随着信息技术的迅猛发展和智能制造的不断推进,数字化转型已成为制造业转型升级的重要方向。橡胶工业作为传统制造业的重要领域,正面临着产业升级和转型的迫切需求。橡胶5G智能…

软考79-上午题-【面向对象技术3-设计模式】-结构型设计模式02

一、组合模式 1-1、意图 将对象组合成树型结构,以表示"部分-整体"的层次结构。Composite使得用户对单个对象和组 合对象的使用具有一致性。 示例:对象:文件、文件夹 1-2、结构 Component 为组合中的对象声明接口;在适…

决策树 | 分类树回归树:算法逻辑

目录 一. 决策树(Decision Tree)1. 决策树的构建1.1 信息熵(Entropy)1.1.1 信息量&信息熵 定义1.1.2 高信息熵&低信息熵 定义1.1.3 信息熵 公式 1.2 信息增益(Information Gain)1.2.1 信息增益的计算1.2.2 小节 2. 小节2.1 算法分类2.2 决策树算法分割选择2.3 决策树算…

C# 单例模式

单例模式介绍 单例模式只允许被其自身实例化一次,且向外部提供了一个访问该实例的接口。 通常来说,单例对象进行实例化时一般不带参数,因为如果不同的实例化请求传递的参数不同的话会导致问题的产生。 单例模式主要特点 全局唯一性&#xf…

提升物流效率,快递平台实战总结与分享

随着电商行业的蓬勃发展,物流配送服务变得愈发重要。快递平台作为连接电商企业和消费者的桥梁,扮演着至关重要的角色。本篇博客将分享快递平台实战经验,总结关键要点,帮助物流从业者提升物流效率、优化服务质量。 ### 快递平台实…

汽车网络基础知识 要点

在以太网开发中,常常会听到一些专业名词,例如PHY,MAC,MII,switch,下面是解释 PHY PHY 是物理接口收发器,它实现物理层。包括 MII/GMII (介质独立接口) 子层、PCS (物理编码子层) 、PMA (物理介…

SQLiteC/C++接口详细介绍之sqlite3类(十四)

返回目录:SQLite—免费开源数据库系列文章目录 上一篇:SQLiteC/C接口详细介绍之sqlite3类(十三) 下一篇:SQLiteC/C接口详细介绍之sqlite3类(十五) 43.sqlite3_preupdate_hook sqlite3_preup…

PHP获取并分析过期删除.cn域名3-5数字(无4非0开)/2-4字母(声母)/三杂等品类域名

用途:获取分析最近过期删除.cn域名中3-5数字(无4非0开)/2-4字母(声母)/三杂等品类域名 先创建rec文件夹,用于按天缓存域名列表(不自动创建哦) 推荐宝塔灯自带的定时任务访问本文件网址&#xff0c;每早5-6点执行 获取两天后删除的cn域名名单并提取几个有价值类目的域名 <…

什么可以让你快速穿越低谷?

1. 变环境 当我们对当前生活状态感到彻底失望&#xff0c;当我们看透了人世间的冷暖&#xff0c;见证了人性的撕裂与拉扯&#xff0c;就会意识到需要改变环境。这可能包括搬离现居之地&#xff0c;寻找新的斗争之地。就像寻找宝玉发光之地一样&#xff0c;我们需要找到能让自己…

基于springboot的高校化学试剂仓储管理系统

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…

VMware NSX Advanced Load Balancer (NSX ALB) 22.1.6 - 多云负载均衡平台

VMware NSX Advanced Load Balancer (NSX ALB) 22.1.6 - 多云负载均衡平台 应用交付&#xff1a;多云负载均衡、Web 应用防火墙和容器 Ingress 服务 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-nsx-alb-22/&#xff0c;查看最新版。原创作品&#xff0c;转载请…

194 基于matlab的日历GUI制作

基于matlab的日历GUI制作&#xff0c;可实时显示当前的日期和时间&#xff0c;精确到秒。非常漂亮&#xff0c;也很基础&#xff0c;学习GUI的不错程序&#xff0c;程序已调通&#xff0c;可直接运行。 194 matlab 日历制作 GUI可视化 - 小红书 (xiaohongshu.com)

sqlplus设置提示符

作为DBA&#xff0c;需要管理好多数据库&#xff0c;经常会有一台服务器安装多个oracle实例的情况&#xff0c;为避免误操作实例&#xff0c;我们需要在执行sqkplus前&#xff0c;先通过$ echo $ORACLE_SID或 SQL>select name from v$database查看当前实例&#xff0c;这样难…

前端小白的学习之路(CSS3 一)

提示&#xff1a;CSS3 是 Cascading Style Sheets&#xff08;层叠样式表&#xff09;的第三个主要版本&#xff0c;引入了许多新的特性和增强功能&#xff0c;用于设计和布局网页。本章记录CSS3新增选择器&#xff0c;盒子模型。 目录 一、C3新增选择器 1) 属性选择器 1.[c…

Python语言基础与应用-北京大学-陈斌-P40-39-基本扩展模块/上机练习:计时和文件处理-给算法计时-上机代码

Python语言基础与应用-北京大学-陈斌-P40-39-基本扩展模块/上机练习&#xff1a;计时和文件处理-给算法计时-上机代码 上机代码&#xff1a; # 基本扩展模块训练 给算法计时 def factorial(number): # 自定义一个计算阶乘的函数i 1result 1 # 变量 result 用来存储每个数的阶…