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搭建好后,查看运行的docker镜像: docker ps -a 进入运行的容器,命令如下: docker exec -it <容器ID> /bin/bash # 或者,直接用容器里面的命令,比如mysql镜像 docker exec -it <容器ID>…...
大语言模型(LLM) RAG概念
RAG(Retrieval-Augmented Generation)是一种用于自然语言处理的模型架构,特别是针对生成式任务。RAG模型结合了检索和生成两种方法,以提高生成式任务的性能。它将信息检索(Retrieval)和文本生成(…...
PHP使用AES进行加解密
前言 对接一个第三方平台,其使用AES对称加密 代码 //方式1 //加密 function enAES($originTxt, $keyQ6Mr6rDpn12iZb){return base64_encode(openssl_encrypt($originTxt, AES-128-ECB,$key, OPENSSL_RAW_DATA)); }//解密 function deAES($originTxt, $keyQ6Mr6rD…...
20240313寻找集成联调交付的具体方式
集成联调交付(Integrated Joint Debugging and Delivery)是软件开发过程中的一个阶段,主要涉及将不同的软件模块或组件整合在一起,并进行联合调试和测试,以确保它们能够作为一个整体正常工作。这个过程通常发生在开发周…...
makefile 学习
patsubst 函数 原型$(patsubst 原模式, 目标模式, 文件列表) 如果文件列表中没有匹配的字符串,就会把整个文件列表的值赋值给变量 // 如果当前目录下有 main.cpp test.cpp SRC $(wildcard *.cpp *.c) # 在工作目录下寻找所有c cpp 文件 …...
释放人工智能的力量:GPU服务器托管和高电机柜托管的关键作用
随着人工智能技术的不断发展,GPU服务器托管和高电机柜托管也变得愈发重要。这些技术在人工智能领域发挥着关键作用,为AI算法的训练和推理提供了强大的计算支持。 GPU服务器托管是指将GPU服务器放置在专门的数据中心中,通过云服务提供商提供的…...
70后姐妹上海创业,要IPO了
一种能与消费者高效互动的自动贩卖机,不仅于近日将一家上海公司送到港交所的门前,还让一对70后姐妹的身价超过13亿元。 在殷珏辉和妹妹殷珏莲的带领下,中国营销服务提供商趣致集团坐拥7543台自动贩卖机和超过5000万注册用户。通过为品牌方提…...
React Hooks、useState、useEffect 、react函数状态
Hooks Hooks 概念理解 学习目标: 理解 Hooks 的概念及解决的问题 什么是 hooks hooks 的本质: 一套能够使函数组件更强大、更灵活的(钩子) React 体系里组件分为类组件和函数组件 多年使用发现,函数组件是一个更加匹…...
wsl-oraclelinux 固定ip
wsl-oraclelinux 固定ip 0. 引言1. Windows 创建启动脚本2. 配置 wsl Oracle Linux 0. 引言 工作需要,安装了一个 wsl Oracle Linux 8.9,也想给它一个固定的 ip。 1. Windows 创建启动脚本 删除 PSScheduledJob, notepad $PSHOME\powersh…...
性能测试工具——wrk的安装与使用
前言 想和大家来聊聊性能测试,聊到了性能测试必须要说的是性能测试中的工具,在这些工具中我今天主要给大家介绍wrk。 介绍 wrk是一款开源的性能测试工具 ,简单易用,没有Load Runner那么复杂,他和 apache benchmar…...
使用tui-image-editor 图片编辑 标注图片
需求背景: 鼠标悬浮在图片上 出现编辑按钮 点击编辑 对该图片进行编辑(输入文案、涂鸦、标记、裁剪等) 可以体验一下它线上编辑器 Image-editor | TOAST UI :: Make Your Web Delicious! 使用 首先在你的前端项目中安装: 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锁?
注:以下讨论基于InnoDB引擎。 文章目录 问题引入猜想1:只加了一行写锁,锁住要修改的这一行。语义问题数据一致性问题 猜想2:要修改的这一行加写锁,扫描过程中遇到其它行加读锁猜想3:要修改的这一行加写锁&…...
Grass推出Layer 2 Data Rollup
Grass推出Layer 2 Data Rollup Grass邀请链接最新资讯 Grass邀请链接 欢迎使用我的邀请码进行注册: 邀请链接 如果你还不知道注册流程:详见Grass: 出售闲置带宽实现被动收入 最新资讯 简讯:2024年3月13日,Grass宣布正在建立基于Solana的La…...
[Java、Android面试]_04_进程、线程、协程
本人今年参加了很多面试,也有幸拿到了一些大厂的offer,整理了众多面试资料,后续还会分享众多面试资料。 整理成了面试系列,由于时间有限,每天整理一点,后续会陆续分享出来,感兴趣的朋友可收藏 文…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...
