【Pytorch笔记】1. tensor的创建
参考视频:
 深度之眼官方账号:01-02-张量简介与创建
torch.tensor()
b = torch.tensor(data, dtype=None, device=None, requires_grad=False, pin_memory=False)
data:创建的tensor的数据来源,可以是list或numpy
 dtype:数据类型,默认与data一致
 device:所选设备,cuda/cpu
 requires_grad:是否需要梯度
 pin_memory:是否存在锁页内存(与转换效率有关,通常设置为False)
import numpy as np
import torcharr = np.ones((3, 3))
print("ndarray的数据类型:", arr.dtype)
t = torch.tensor(arr)
# t = torch.tensor(arr, device='cuda')
print(t)
输出:
ndarray的数据类型: float64
tensor([[1., 1., 1.],[1., 1., 1.],[1., 1., 1.]], dtype=torch.float64)
torch.from_numpy(ndarray)
功能:从numpy创建tensor
 注意:从torch.from_numpy创建的tensor与原ndarray共享内存,当修改其中一个的数据,另一个也会被改动。
import numpy as np
import torcharr = np.array([[1, 2, 3], [4, 5, 6]])
t = torch.from_numpy(arr)
print(t)
arr[0, 0] = 7
print(t)
输出:
tensor([[1, 2, 3],[4, 5, 6]], dtype=torch.int32)
tensor([[7, 2, 3],[4, 5, 6]], dtype=torch.int32)
torch.zeros()
功能:根据给定size创建全0的tensor
torch.zeros(*size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)
*size:创建的tensor的尺寸
 out:输出到哪个tensor当中
 dtype:创建的tensor中内容的类型
 layout:tensor在内存中的分布方式,目前支持torch.strided和torch.sparse_coo
 device:所在设备,gpu/cpu
 requires_grad:是否需要梯度
import torcht = torch.zeros((3, 3))     #不使用out参数创建
tt = torch.tensor([2.])
torch.zeros((3, 3), out=tt) #使用out参数输出到已有tensor
print(t, '\n', tt)
输出:
tensor([[0., 0., 0.],[0., 0., 0.],[0., 0., 0.]])tensor([[0., 0., 0.],[0., 0., 0.],[0., 0., 0.]])
有一点需要注意,如果像这样使用:
t = torch.tensor([2.])
p = torch.zeros((3, 3), out=t)
那么t和p会指向同一个地址。
torch.zeros_like()
功能:根据input的形状创建全0的tensor。
torch.zeros_like(input,dtype=None,layout=None,device=None,requires_grad=False)
input:创建新的tensor所用的形状的基准,生成的tensor和input的形状相同。
 注:input只能为tensor,不能是np.array。
 其余参数和torch.zeros()相同。
import numpy as np
import torchdata = torch.tensor(np.array([[1, 2], [3, 4]]))
t = torch.zeros_like(data)
print(t)
输出:
tensor([[0, 0],[0, 0]], dtype=torch.int32)
torch.ones()
功能:根据给定size创建全1的tensor,与torch.zeros()基本一样。
torch.ones(*size, out=None,dtype=None,layout=torch.strided,device=None,requires_grad=False)
torch.ones_like()
功能:根据input的形状创建全1的tensor,与torch.zeros_like()基本一样。
torch.ones_like(input, dtype=None,layout=None,device=None,requires_grad=False)
torch.full()
功能:根据给定size创建tensor,元素全部赋值为fill_value。
torch.full(size,fill_value,out=None,dtype=None,layout=torch.strided,device=None,requires_grad=False)
fill_value:传入的参数,full()将创建好的tensor全部赋值为fill_value。
import numpy as np
import torcht = torch.full(size=(3, 3), fill_value=4)
print(t)
输出:
tensor([[4, 4, 4],[4, 4, 4],[4, 4, 4]])
torch.arange()
功能:创建等差的一维tensor。
torch.arange(start=0,end,step=1,out=None,dtype=None,layout=torch.strided,device=None,requires_grad=False)
范围是[start, end),左闭右开的,step为步长。其他的参数与上面的函数一样。
import numpy as np
import torcht = torch.arange(start=3, end=6, step=1)
print(t)
输出:
tensor([3, 4, 5])
torch.linspace()
功能:创建均分的1维tensor。
 linspace: Linear space,类比下面的logspace。
torch.linspace(start=0,end,steps=100,out=None,dtype=None,layout=torch.strided,device=None,requires_grad=False)
范围是[start, end],是闭区间(和arange不同)。steps为生成的tensor的长度。
import numpy as np
import torcht = torch.linspace(start=2, end=10, steps=4)
print(t)
输出:
tensor([ 2.0000,  4.6667,  7.3333, 10.0000])
torch.logspace()
功能:创建对数均分的1维tensor。
 logspace: Log space,类比上面的linspace。
torch.logspace(start,end,steps=100,base=10.0,out=None,dtype=None,layout=torch.strided,device=None,requires_grad=False)
start、end、steps与linspace相同。base指对数函数的底,默认为10。
 和linspace不同的是,我们通过start, end, steps枚举出来的数列,是tensor的内容外面要套一个 l o g b a s e log_{base} logbase。反过来讲,我们枚举的就是以base为底的那些幂数。
 可以参考下面的代码:
import numpy as np
import torcht = torch.logspace(start=1, end=3, steps=3, base=10.0)
print(t)
输出:
tensor([  10.,  100., 1000.])
torch.eye()
功能:创建单位对角矩阵,是2维tensor。默认为方阵。
torch.eye(n,m=None,out=None,dtype=None,layout=torch.strided,device=None,requires_grad=False)
n、m:矩阵行数、列数。通常我们只需要设置n。
import numpy as np
import torcht = torch.eye(n=3)
p = torch.eye(n=3, m=4)
print(t)
print(p)
输出:
tensor([[1., 0., 0.],[0., 1., 0.],[0., 0., 1.]])
tensor([[1., 0., 0., 0.],[0., 1., 0., 0.],[0., 0., 1., 0.]])
torch.normal()
功能:根据给定的均值 μ \mu μ和标准差 σ \sigma σ,通过 N ( μ , σ ) N(\mu,\sigma) N(μ,σ)生成对应尺寸的随机数(具体如何对应尺寸,下面会有说明)。
torch.normal(mean,std,out=None)
mean:均值;std:标准差。
 均值和标准差的类型,既可以是float,也可以是tensor。此时出现了4种情况,先看示例代码。
import numpy as np
import torcht1 = torch.normal(mean=2, std=3, size=(2, 3))
print("t1:\n", t1)
t2 = torch.normal(mean=torch.arange(1., 3.), std=torch.arange(3., 5.))
print("t2:\n", t2)
t3 = torch.normal(mean=1., std=torch.arange(1., 5.))
print("t3:\n", t3)
t4 = torch.normal(mean=torch.arange(1., 4.), std=2.)
print("t4:\n", t4)
输出:
t1:tensor([[-0.1495,  0.2061,  3.0486],[ 6.1257,  1.6023,  1.1515]])
t2:tensor([-5.4967,  7.4201])
t3:tensor([ 3.3218,  0.7347, -3.6644,  3.4812])
t4:tensor([2.2250, 1.1026, 0.9171])
mean和std都是float
见示例代码中t1。
 此时我们必须要再加一个参数size,表示我们要生成的tensor的尺寸。生成的t1中每一个元素都是由 N ( m e a n , s t d ) N(mean,std) N(mean,std)生成的一个随机数。
mean和std都是tensor
见示例代码中t2。
 经过尝试,需要mean和std的shape相同,这样生成的tensor的对应位置就是由mean和std中对应位置的均值和标准差随机出来的数。
mean是float,std是tensor
见示例代码中t3。
 生成的tensor和std的shape相同,对应的位置是由mean、std中的对应位置的标准差随机出来的数。
mean是tensor,std是float
见示例代码中t4。
 生成的tensor和mean的shape相同,对应的位置是由mean中的对应位置的均值、std随机出来的数。
torch.randn()
功能:生成标准正态分布 N ( 0 , 1 ) N(0,1) N(0,1)。
torch.randn(*size, out=None,dtype=None,layout=torch.strided,device=None,requires_grad=False)
import numpy as np
import torcht = torch.randn((2, 3))
print(t)
输出:
tensor([[ 0.2370, -1.4351, -0.0624],[ 0.7974,  1.2915, -1.0052]])
torch.randn_like()
功能:生成与给定tensor同样尺寸的标准正态分布tensor。(类比torch.zeros_like()和torch.ones_like())
import numpy as np
import torchtmp = torch.ones((2, 3))
t = torch.randn_like(tmp)
print(t)
输出:
tensor([[-0.3384, -0.8061,  0.7020],[ 0.1602,  0.6525, -0.6860]])
torch.rand()、torch.rand_like()
功能:在区间[0,1)上生成均匀分布,示例略。
torch.randint()、torch.randint_like()
功能:在区间[low, high)生成整数均匀分布。
torch.randperm()
功能:生成从0到n-1的随机排列,n是张量的长度。
torch.randperm(n,out=None,dtype=torch.int64,layout=torch.strided,device=None,requires_grad=False)
import numpy as np
import torcht = torch.randperm(5)
print(t)
输出:
tensor([3, 2, 1, 0, 4])
torch.bernoulli()
功能:以input为概率,生成伯努利分布(0-1分布,两点分布)
torch.bernoulli(input,*,generator=None,ont=None)
input为概率值,为tensor。
import numpy as np
import torchp = torch.rand((3, 3))
t = torch.bernoulli(p)
print("p:\n", p)
print("t:\n", t)
输出:
p:tensor([[0.6881, 0.7921, 0.4212],[0.6857, 0.4809, 0.4009],[0.2400, 0.5160, 0.1303]])
t:tensor([[1., 1., 1.],[1., 1., 0.],[0., 0., 0.]])
相关文章:
【Pytorch笔记】1. tensor的创建
参考视频: 深度之眼官方账号:01-02-张量简介与创建 torch.tensor() b torch.tensor(data, dtypeNone, deviceNone, requires_gradFalse, pin_memoryFalse)data:创建的tensor的数据来源,可以是list或numpy dtype:数据…...
 
Maven 基础之安装和命令行使用
Maven 的安装和命令行使用 1. 下载安装 下载解压 maven 压缩包(http://maven.apache.org/) 配置环境变量 前提:需要安装 java 。 在命令行执行如下命令: mvn --version如出现类似如下结果,则证明 maven 安装正确…...
 
运动耳机需要具备哪些功能、挂耳式运动蓝牙耳机推荐
作为运动爱好者,长时间的运动很容易枯燥,所以我会选择佩戴耳机来缓解运动的枯燥感,一款好的运动耳机可以让运动变得更加激情,还可以更好的享受运动的乐趣。 但现在的运动耳机产品实在是五花八门,到底什么样的运动蓝牙耳…...
 
【MCU】SD NAND芯片之国产新选择
文章目录 前言传统SD卡和可贴片SD卡传统SD卡可贴片SD卡 实际使用总结 前言 随着目前时代的快速发展,即使是使用MCU的项目上也经常有大数据存储的需求。可以看到经常有小伙伴这样提问: 大家好,请问有没有SD卡芯片,可以直接焊接到P…...
 
java 多线程
01.多线程类java.lang.Thread 这里继承Thread类的方法是比较常用的一种,如果说你只是想起一条线程。没有什么其它特殊的要求,那么可以使用Thread.(笔者推荐使用Runable,后头会说明为什么)。下面来看一个简单的实例&…...
 
ConsoleApplication17_2项目免杀(Fiber+VEH Hook Load)
加载方式FiberVEH Hook Load Fiber是纤程免杀,VEH是异常报错,hook使用detours来hook VirtualAlloc和sleep,通过异常报错调用实现主动hook 纤程Fiber的概念:纤程是比线程的更小的一个运行单位。可以把一个线程拆分成多个纤程&#…...
 
【Vue3 知识第五讲】条件渲染、列表渲染知识详解
文章目录 一、条件渲染1.1 概述1.2 演示代码 二、列表渲染2.1 使用 指令 v-for 遍历数组2.2 **使用 指令 v-for 遍历对象** 十、案例作业十一、总结 在前端开发过程中,条件和循环是经常被用到的逻辑。vue中封装了自己的组件渲染指令,可以更加方便的帮助开…...
vite+vue3从0开始搭建一个后管项目【学习随记二】
创建项目安装插件可以去【学习随记一】看下 1.路由配置 **文件路径是router/index.ts** import { createRouter, createWebHistory } from vue-router import { UserStore, userMenu } from /pinia import routes from ./routes import MainRouter from ./MainRouterconst ro…...
 
Linux的内存理解
建议 Mysql机器 尽量不要硬swap,如果是ssd磁盘还好。Free命令 free 命令显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存 输出简介: Mem 行(第二行)是内存的使用情况。Swap 行(第三行)是交换空间的使用情况。total 列显示系统总的可用物理内存和交换…...
 
财务数据分析?奥威BI数据可视化工具很擅长
BI数据可视化工具通常是可以用户各行各业,用于不同主题的数据可视化分析,但面对财务数据分析这块难啃的骨头,能够好好地完成的,还真不多。接下来要介绍的这款BI数据可视化工具不仅拥有内存行列计算模型这样的智能财务指标计算功能…...
 
趣味微项目:玩转Python编程,轻松学习快乐成长!
💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 在学习Python编程的旅程…...
总结安卓Preference使用过程中注意的问题
近期在做新项目中接触到了Preference,这是一种用户界面元素,用于存储和展示应用程序的各种设置和用户偏好。该控件几年前google就已经发布了只是一直没机会应用,其实用起来还是挺方便的,使用过程中遇到了几个问题在此记录下。 1、…...
 
Laf 中大猫谱:让每一只流浪猫都有家
猫谱简介 中大猫谱是一款辅助校园流浪猫救助的开源小程序项目,服务端使用 Laf 云开发。 猫谱主要功能包括:猫咪信息登记、照片分享、拍照识猫、公告和留言等。项目创立的初衷,是解决校园猫猫交流群里的一个常见问题:问猫猫是谁。…...
uniapp 使用mqtt 报错 socketTask onOpen is not a function
1. 报错的解决方法 在man.js文件添加这个 // #ifndef MP // 处理 wx.connectSocket promisify 兼容问题,强制返回 SocketTask uni.connectSocket (function(connectSocket) {return function(options) {console.log(options)options.success options.success ||…...
 
Docker部署RustDesk Server 设置开机自启
三、Docker安装 Docker官方和国内daocloud都提供了一键安装的脚本,使得Docker的安装更加便捷。 官方的一键安装方式: curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 国内 daocloud一键安装命令: curl -sSL https://…...
ESLint如何在vue3项目中配置和使用
目录 问题描述: 配置: 注意: 问题描述: 在用vite创建vue3项目时已经选择了添加ESLint,创建完成后使用 pnpm install命令(或者npm i)安装了项目依赖之后,ESLint在项目中需要怎样配…...
Frida-hook:微信数据库的破解
Frida-hook:微信数据库的破解 Frida-hook:微信数据库的破解1. 准备条件2. 用frida获取key2.1 静态分析微信apk文件2.2 frida hook: 3. 用sqlcipher打开数据库: Frida-hook:微信数据库的破解 我们可以从root过的手机中,找到微信相关数据库&am…...
 
【Unity每日一记】WheelColider组件汽车游戏的关键
👨💻个人主页:元宇宙-秩沅 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 秩沅 原创 👨💻 收录于专栏:uni…...
 
项目-IM
tim-server tim-server启动类实现CommandLineRunner接口,重写run()方法 run()方法开启一个线程,创建zk持久父节点,创建临时顺序子节点,将netty-server信息写入 1.1 用户登录 1.2 gateway向认证授权中心请求token 1.3 从zookee…...
 
2023年口腔医疗行业研究报告
第一章 行业概况 1.1 定义 口腔医疗行业是以口腔医疗服务消费为基础,包含医疗及消费双重属性,是 为满足口腔及颌面部疾病的预防和诊疗、口腔美容等需求提供相关医疗服务的行业。 该行业的主要参与者包括口腔保健专业人员(如牙医、口腔外科…...
 
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
 
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
 
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
 
以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...
 
深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
