IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 张量创建和索引and切片 -> 正文阅读

[人工智能]张量创建和索引and切片

?

目录

创建张量

从 numpy中创建? ? ? ? import from numpy

从list中创建 ???????? import from list

生成未初始化的数据

生成初始化了的数据

设置默认类型????????set default type

常用api

full 方法应用

arange 方法应用

linspace 和 logspace

ones / zeros / eye 的使用

?randperm函数

索引与切片

索引

切片

起始,结束型

带步长

使用? ...? ? 优雅~

切取某个维度数据? ? ? ? select by specific index

select by mask

select by flatten index


创建张量

从 numpy中创建? ? ? ? import from numpy

原来的数据类型在创建后基本保持一一对应

a=np.array([2,3.3])
print(torch.from_numpy(a))        #从numpy导入的float是double类型

b=np.ones([2,3])
print(torch.from_numpy(b))


从list中创建 ???????? import from list

? ? ? ? 在数据量小的情况下可以使用

a=torch.tensor([2,3.4])
print(a)

b=torch.tensor([[2,3.4],[1,2.3]])   #使用列表创建2维张量
print(b)


生成未初始化的数据

几种方法

? ? ? ? torch.empty()? ? ? ? 顾名思义,给出shape就能生成随机数据

? ? ? ? torch.Tensor()? ? ? ? 给出shape 就能生成对应维度随机数据

? ? ? ? torch.IntTensor()? ? ? ? 生成对应维度整型随机数据

? ? ? ? torch.FloatTensor()? ? ? ? 生成对应维度浮点型随机数据

a=torch.empty(2,3)
print(a)

b1=torch.Tensor(2,3)
print(b1)
b2=torch.Tensor(2,3,3)
print(b2)

c=torch.IntTensor(2,3)
print(c)

d=torch.FloatTensor(2,3)
print(d)


生成初始化了的数据

随机初始化

? ? ? ? rand:从0~1之间随机取值,使数据均匀的分布在0和1之间,不包括1

? ? ? ? rand_like:给出一个tensor,他会把shape送进rand()操作

? ? ? ? randint(min,max,[ ]):均匀采样 [min~max) 之间的数,第三个参数是它的shape

正态分布类型

????????randn(),输入shape即可输出均值为0,方差为1的数?

a=torch.rand(3,3)
print(a)
b=torch.rand_like(a)
print(b)

a=torch.randint(1,9,[3,2])
print(a)


a=torch.randn(3,3)
print(a)

设置默认类型????????set default type

?使用torch.tensor()生成的数据类型默认为FloatTensor,若要改变默认,可用下面方法

torch.set_default_tensor_type(torch.DoubleTensor)    #输入类型

a=torch.tensor ([1.2,3])
print(a.type())            #改变前

torch.set_default_tensor_type(torch.DoubleTensor)

b=torch.tensor ([1.2,3])
print(b.type())            #改变后


常用api


full 方法应用

torch.full([ ],5):表示全部用5填充数据,[ ] 表示维度

a=torch.full([2,3],5)   #将2维数据都变为5
print(a)

b=torch.full([],5)      #什么都不写表示标量,0维
print(b)

c=torch.full([2],5)     #里面写一个数字表示是一维的,size为本身
print(c)


arange 方法应用

arrange(起始,结束,步长)? ? ? ? 生成等差数列

? ? ? ? 步长默认为1,起始默认为0,不包含结束

a = torch.arange(0,14)
print(a)

b = torch.arange(4,14,2)
print(b)


linspace 和 logspace

linspace(1,4,steps=4 )? ? ? ? ? 表示从1到4 均匀分为4块

logspace(1,4,steps=4)? ? ? ? ? ? ? ?表示先均匀分为 4 块得到相应数值,在对应成为 4 的幂返回

a = torch.linspace(0,10,steps=4)        #steps表示均匀分为几块
print(a)

b = torch.linspace(0,10,steps=11)
print(b)

c = torch.logspace(0,9,10)          #0~-9按一具体数值均分为10份,返回10的幂,幂为分割后的具体数值
print(c)                            #这里分割数值为1,返回10的0次到9次幂

d = torch.logspace(0,-9,10)         #0~-9按一具体数值均分为10份,返回10的幂,幂为分割后的具体数值
print(d)


ones / zeros / eye 的使用

? ? ? ? torch.ones( )? ? ? ? 给出shape全部赋值为1

? ? ? ? torch.zeros( )? ? ? ? 给出shape全部赋值为0

? ? ? ? ? ? ? ? ?以上两种可以使用_like()方法传入一个tensor使用

? ? ? ? torch.eye()? ? ? ? 给出shape或维度生成单位矩阵(对角矩阵)

a = torch.ones(2,2)    #全1
print(a)

b = torch.zeros(2,2)    #全0
print(b)

c = torch.eye(2,3)    #对角
print(c)
d = torch.eye(2)        #对角
print(d)

n = torch.ones_like(b)    #将b全1
print(n)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?


?randperm函数

torch.randperm(n)? ? ? ? ? ? ? ? 把 [ 0~n)这些数随机打乱输出

a = torch.randperm(2)
print(a)

b=torch.randperm(2)
print(b)


索引与切片

与Python中的差不多


索引

a = torch.rand(4,3,28,28)
print(a[0].shape)            #表示1,2,3的shape 
print(a[0,0].shape)        #表示2,3维
print(a[0,0,2,3])        #表示0维,是标量


切片

切片就是要遵循????????起始:结束:步长? ? ? ? 原则任意切,没什么不同,就是可以多切几个


起始,结束型

a = torch.rand(4,3,28,28)
print(a[:2].shape)          #表示第0维有2个元素
print(a[:2,:1,:,:].shape)   #第0维2个,第一维1个
print(a[:2,1:,:,:].shape)       #第0维2个,第1维第一个到最后一个
print(a[:2,-1:,:,:].shape)       #第一维最后一个到最后一个


带步长

a = torch.rand(4,3,28,28)
print(a[:,:,0:28:2,0:28:2].shape)   #步长为2
print(a[:,:,::2,::2].shape)         #步长为2


使用? ...? ? 优雅~

a = torch.rand(4,3,28,28)
m = a[...].shape        #全部都有
n = a[0,...].shape      #第0维第0个

o = a[:,1,...].shape    #第一维第1个
p = a[...,:2].shape     #最后一维前俩个


切取某个维度数据? ? ? ? select by specific index

a = torch.rand(4,3,28,28)
b = a.index_select(0,torch.arange(3)).shape   #取第0维的前三个
print(b)
c = a.index_select(1,torch.arange(1,2)).shape      #取第一维的第一个
print(c)
d = a.index_select(2,torch.arange(5)).shape       #取第二维的前5个
print(d)


select by mask

torch.masked_select(x,mask)? ? ? ? ? ? ? ? ?相当于对X进行掩摸操作

????????该函数主要用来选取x数据中的mask性质的数据,如mask=x.ge(0.5)表示选出大于0.5的所有数据,并且输出时将其转换为了1维的打平tensor数据

x = torch.randn(3,4)    #生成一个正态分布的tensor
mask = x.ge(0.5)        #条件:大于0.5的 1其余0
print(mask)
a = torch.masked_select(x,mask)     #判断X中满足条件的
print(a)
print(a.shape)


select by flatten index

?torch.take(a, torch.tensor([0,2,5])? ? ? ? 表示打平后取a中索引为 0,2,5 的数据

先将张量数据打平为一个1维的张量数据(依次排序下来成为一个数据列),然后按照索引数据

a = torch.tensor([[4,3,5],
                  [6,7,8]])
b = torch.take(a,torch.tensor([0,2,5]))
print(b)

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-01-29 23:05:20  更:2022-01-29 23:06:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 20:42:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码