当前位置: 首页 > news >正文

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)

相关文章:

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)。这意味着张量中…...

C++/CLI学习笔记3(快速打通c++与c#相互调用的桥梁)

c/cli变量和操作符 3.1:什么是变里 变量是存储数据以便应用程序临时使用的内存位置,具有名称、类型和值。变量值在应用程序执行期间可能改变,变量名也是。变量使用前必须声明,即指定类型和提供名称。变量的类型决定了值的范围以及能执行的操…...

unity

Unity官方下载_Unity最新版_从Unity Hub下载安装 | Unity中国官网 Unity Remote - Unity 手册 登陆账号,找到一个3d 免费资源 3D Animations & Models | Unity Asset Store unity 里面window->package Manager 里面可以看到自己的asset ,下载后…...

考研复习C语言初阶(3)

目录 一.函数是什么? 二.C语言中函数的分类 2.1库函数 2.2自定义函数 三.函数的参数 3.1实际参数(实参) 3.2 形式参数(形参) 四.函数的调用 4.1 传值调用 4.2 传址调用 五. 函数的嵌套调用和链式访问 5.1 嵌套调用 5…...

CCF 202009-3 点亮数字人生(拓扑排序)

题目背景 土豪大学的计算机系开了一门数字逻辑电路课,第一个实验叫做“点亮数字人生”,要用最基础的逻辑元件组装出实际可用的电路。时间已经是深夜了,尽管实验箱上密密麻麻的连线已经拆装了好几遍,小君同学却依旧没能让她的电路正…...

Docker笔记-进入运行中的镜像,查看日志等操作

docker搭建好后&#xff0c;查看运行的docker镜像&#xff1a; docker ps -a 进入运行的容器&#xff0c;命令如下&#xff1a; docker exec -it <容器ID> /bin/bash # 或者&#xff0c;直接用容器里面的命令&#xff0c;比如mysql镜像 docker exec -it <容器ID>…...

大语言模型(LLM) RAG概念

RAG&#xff08;Retrieval-Augmented Generation&#xff09;是一种用于自然语言处理的模型架构&#xff0c;特别是针对生成式任务。RAG模型结合了检索和生成两种方法&#xff0c;以提高生成式任务的性能。它将信息检索&#xff08;Retrieval&#xff09;和文本生成&#xff08…...

PHP使用AES进行加解密

前言 对接一个第三方平台&#xff0c;其使用AES对称加密 代码 //方式1 //加密 function enAES($originTxt, $keyQ6Mr6rDpn12iZb){return base64_encode(openssl_encrypt($originTxt, AES-128-ECB,$key, OPENSSL_RAW_DATA)); }//解密 function deAES($originTxt, $keyQ6Mr6rD…...

20240313寻找集成联调交付的具体方式

集成联调交付&#xff08;Integrated Joint Debugging and Delivery&#xff09;是软件开发过程中的一个阶段&#xff0c;主要涉及将不同的软件模块或组件整合在一起&#xff0c;并进行联合调试和测试&#xff0c;以确保它们能够作为一个整体正常工作。这个过程通常发生在开发周…...

makefile 学习

patsubst 函数 原型$(patsubst 原模式&#xff0c; 目标模式&#xff0c; 文件列表) 如果文件列表中没有匹配的字符串&#xff0c;就会把整个文件列表的值赋值给变量 // 如果当前目录下有 main.cpp test.cpp SRC $(wildcard *.cpp *.c) # 在工作目录下寻找所有c cpp 文件 …...

释放人工智能的力量:GPU服务器托管和高电机柜托管的关键作用

随着人工智能技术的不断发展&#xff0c;GPU服务器托管和高电机柜托管也变得愈发重要。这些技术在人工智能领域发挥着关键作用&#xff0c;为AI算法的训练和推理提供了强大的计算支持。 GPU服务器托管是指将GPU服务器放置在专门的数据中心中&#xff0c;通过云服务提供商提供的…...

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

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

React Hooks、useState、useEffect 、react函数状态

Hooks Hooks 概念理解 学习目标&#xff1a; 理解 Hooks 的概念及解决的问题 什么是 hooks hooks 的本质&#xff1a; 一套能够使函数组件更强大、更灵活的&#xff08;钩子&#xff09; React 体系里组件分为类组件和函数组件 多年使用发现&#xff0c;函数组件是一个更加匹…...

wsl-oraclelinux 固定ip

wsl-oraclelinux 固定ip 0. 引言1. Windows 创建启动脚本2. 配置 wsl Oracle Linux 0. 引言 工作需要&#xff0c;安装了一个 wsl Oracle Linux 8.9&#xff0c;也想给它一个固定的 ip。 1. Windows 创建启动脚本 删除 PSScheduledJob&#xff0c; notepad $PSHOME\powersh…...

性能测试工具——wrk的安装与使用

前言 想和大家来聊聊性能测试&#xff0c;聊到了性能测试必须要说的是性能测试中的工具&#xff0c;在这些工具中我今天主要给大家介绍wrk。 ​介绍 wrk是一款开源的性能测试工具 &#xff0c;简单易用&#xff0c;没有Load Runner那么复杂&#xff0c;他和 apache benchmar…...

使用tui-image-editor 图片编辑 标注图片

需求背景&#xff1a; 鼠标悬浮在图片上 出现编辑按钮 点击编辑 对该图片进行编辑&#xff08;输入文案、涂鸦、标记、裁剪等&#xff09; 可以体验一下它线上编辑器 Image-editor | TOAST UI :: Make Your Web Delicious! 使用 首先在你的前端项目中安装&#xff1a; np…...

C++面试题和笔试题(五)

一、 #include <iostream> using namespace std; class Base { public: Base(int j) : i(j) {} virtual ~Base() {} void func1() { i * 10; func2(); } int getvalue() { return i; } protected: virtual void func2() { i; } protected: int i;…...

Mysql:行锁,间隙锁,next-key锁?

注&#xff1a;以下讨论基于InnoDB引擎。 文章目录 问题引入猜想1&#xff1a;只加了一行写锁&#xff0c;锁住要修改的这一行。语义问题数据一致性问题 猜想2&#xff1a;要修改的这一行加写锁&#xff0c;扫描过程中遇到其它行加读锁猜想3&#xff1a;要修改的这一行加写锁&…...

Grass推出Layer 2 Data Rollup

Grass推出Layer 2 Data Rollup Grass邀请链接最新资讯 Grass邀请链接 欢迎使用我的邀请码进行注册: 邀请链接 如果你还不知道注册流程&#xff1a;详见Grass: 出售闲置带宽实现被动收入 最新资讯 简讯&#xff1a;2024年3月13日&#xff0c;Grass宣布正在建立基于Solana的La…...

[Java、Android面试]_04_进程、线程、协程

本人今年参加了很多面试&#xff0c;也有幸拿到了一些大厂的offer&#xff0c;整理了众多面试资料&#xff0c;后续还会分享众多面试资料。 整理成了面试系列&#xff0c;由于时间有限&#xff0c;每天整理一点&#xff0c;后续会陆续分享出来&#xff0c;感兴趣的朋友可收藏 文…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...