PyTorch学习笔记(四)

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.9 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.10 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.11 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/740039.shtml

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

相关文章

在家不无聊,赚钱有门道:5个正规线上赚钱平台,轻松开启副业

随着网络技术的快速发展,越来越多的人开始寻求通过网络来探索兼职副业的可能性,期望实现额外的收入。在这个过程中,选择一个正规且可靠的线上兼职平台显得尤为关键。 为此小编精心网上盘点了5个正规且靠谱的线上兼职副业平台。这些平台不仅安…

双环PID控制详细讲解

参考博客: (1)PID双环控制(速度环和位置环) (2)PID控制(四)(单环与双环PID) (3)内外双环pid算法 0 单环PID 目标位置→系…

Promise图解,Pass

10-优化代码_哔哩哔哩_bilibili

2024年,真的别裸辞....

作为IT行业的大热岗位——软件测试,只要你付出了,就会有回报。说它作为IT热门岗位之一是完全不虚的。可能很多人回说软件测试是吃青春饭的,但放眼望去,哪个工作不是这样的呢?会有哪家公司愿意养一些闲人呢?…

随笔之浏览器打开一个网页的全部过程

用户输入网址(URL): 用户在浏览器地址栏中输入网址,例如:https://www.example.com。 dns解析 计算机尝试解析一个域名时,首先会检查本地 hosts 文件,看是否存在相应的映射。如果存在映射,计算…

数据结构 第2章:线性表

文章目录 2.1 线性表的定义和操作2.1.1 线性表的基本概念2.1.2 线性表的基本操作 2.2. 顺序表2.2.1. 顺序表的基本概念2.2.2. 顺序表的实现2.2.3. 顺序表的基本操作 2.3 链表2.3.1 单链表的基本概念2.3.2 单链表的实现2.3.3 单链表的插入2.3.4. 单链表的删除2.3.5. 单链表的查找…

mybatis-plus-generator 使用 velocity 生成前后台代码

操作步骤 1)准备mybatis-plus 生成代码的 vm文件 2)添加依赖 mybatis-plus-generator 代码生成器的依赖 3)执行工具方法生成代码 1、准备 mybatis-plus 生成代码的 vm文件 1)找vm模板 去工程的 external Libraries 找到 mybati…

Java SE入门及基础(38)

异常(Exception) 1. 概念 异常 来自官方的说明 An exception is an event, which occurs during the execution of a program, that disrupts the normal flow of the programs instructions. 异常是在程序执行期间发生的事件,该事件中断了程序指令的正常流程…

anaconda, conda, conda-forge

anaconda是python包管理器 conda-forge是conda源中的一个分支,是一个库,包含许多软件包(package)。当使用命令“conda install -c conda-forge some-package”时,“-c conda-forge”表示从conda-forge库中下载并安装名为“some-package”软件…

hasattr()函数的使用

在标准的Python中,hasattr() 函数用于检查对象是否具有指定的属性或方法。它接受两个参数:要检查的对象和要检查的属性或方法名称(以字符串形式)。该函数返回一个布尔值,指示对象是否具有指定的属性或方法。 下面是 h…

有趣的数学 毕达哥拉斯定理

随便找个学生,让他举出一位著名的数学家——如果他能想到的话,他往往会选择毕达哥拉斯。如果不是,也许他想到的是阿基米德。哪怕是杰出的艾萨克牛顿,在两位古代世界的巨星面前也只能叨陪末座了。阿基米德是一位思想巨人&#xff0…

Day18: 发送邮件、开发注册功能

在这里记一下。原来的html中的css和js路径下载不下来&#xff0c;需要换成&#xff1a; <link href"https://cdn.jsdelivr.net/npm/bootstrap5.3.3/dist/css/bootstrap.min.css" rel"stylesheet" integrity"sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6Y…

Python 一步一步教你用pyglet制作汉诺塔游戏(终篇)

目录 汉诺塔游戏 完整游戏 后期展望 汉诺塔游戏 汉诺塔&#xff08;Tower of Hanoi&#xff09;&#xff0c;是一个源于印度古老传说的益智玩具。这个传说讲述了大梵天创造世界的时候&#xff0c;他做了三根金刚石柱子&#xff0c;并在其中一根柱子上从下往上按照大小顺序摞…

Unsupervised RL:METRA: Scalable Unsupervised RL with Metric-Aware Abstraction

ICLR 2024 Oral paper Intro 无监督RL旨在发现潜在的行为帮助提高下游任务效率以往方法集中于探索以及基于互信息的技能发现(skill)。然而去前者在高危复杂空间实现困难&#xff0c;后者也容易因为缺乏激励导致探索能力不足。本文提出METRA核心观点认为与其在复杂状态空间处理…

[leetcode~dfs]1261. 在受污染的二叉树中查找元素

给出一个满足下述规则的二叉树&#xff1a; root.val 0 如果 treeNode.val x 且 treeNode.left ! null&#xff0c;那么 treeNode.left.val 2 * x 1 如果 treeNode.val x 且 treeNode.right ! null&#xff0c;那么 treeNode.right.val 2 * x 2 现在这个二叉树受到「污…

python apscheduler添加监听器listener,用于自动化任务的反馈

apscheduler可以通过添加监听器&#xff0c;得到定时任务的反馈。监听会监听到的是apscheduler.events&#xff0c;进入apscheduler/events.py文件中可以看到&#xff0c;使用常量对事件的定义&#xff1a; EVENT_SCHEDULER_STARTED EVENT_SCHEDULER_START 2 ** 0 EVENT_SCH…

Games101笔记-计算机图形学概述

光栅化&#xff1a;把三维空间的几何形体显示在屏幕上 实时&#xff1a;每秒30帧的画面 曲线和曲面&#xff1a; 如何表示一条光滑曲线&#xff0c;如何表示曲面如何用简单的曲面通过细分的方法得到更复杂的曲面在形状发生变化时&#xff0c;面要如何变化&#xff0c;如何保…

深入学习默认成员函数——c++指南

前言&#xff1a;类和对象是面向对象语言的重要概念。 c身为一门既面向过程&#xff0c;又面向对象的语言。 想要学习c&#xff0c; 首先同样要先了解类和对象。 本节就类和对象的几种构造函数相关内容进行深入的解析。 目录 类和对象的基本概念 封装 类域和类体 访问限定符…

力扣235. 二叉搜索树的最近公共祖先

思路&#xff1a;要利用好二叉搜索树的特性&#xff0c;中序遍历是有序的&#xff0c;也就是说最近的公共祖先 大小一定落在区间 [p,q] 或[q,p]。 1、当p和q都大于当前root值时&#xff0c;说明当前root值太小&#xff0c;需要更大才能让它落入区间范围&#xff0c;所以要往右子…

@Insert注解是怎么用的?

苍穹外卖第二天有这段注解&#xff1a; Insert("insert into employee(name, username, password, phone, sex, id_number, create_time, update_time, create_user, update_user,status) " "values ""(#{name},#{username},#{password},#{phone},#{…