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

pytorch(3)创建Tensor

一、系列文章目录

(1)梯度下降
(2)手写数字识别引入&Pytorch 数据类型
(3)创建Tensor
(4)Broadcasting
(5)Tensor
(6)Tensor统计
(7)Where和Gather
(8)函数的梯度
(9)loss函数;自动求导


文章目录

  • 一、系列文章目录
  • 二.创建Tensor
    • 1. 从numpy中引入
    • 2. 从list中引入
    • 3. 未初始化
    • 4. 随机初始化
    • 5. full
    • 6. arange/linspace
    • 7. ones/zero/eye
    • 8. randperm & 切片&索引
    • 9. 改变
            • view/reshape 完全一样
            • squeeze/unsqueeze压缩和扩张维度
            • transpose/t/permute
            • expand/repeat


二.创建Tensor

1. 从numpy中引入

import torch
import numpy as np
a = np.array([2,3.3])
torch.from_numpy(a)  #不要写成 form

Out[13]: tensor([2.0000, 3.3000], dtype=torch.float64)

a = np.ones([3,3])  #指定形状,用1填充
torch.from_numpy(a)

Out[15]: 
tensor([[1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.]], dtype=torch.float64)

2. 从list中引入

torch.tensor([2,3.2]) #区分:FloatTensor 指定shape  用小写指定数据
Out[16]: tensor([2.0000, 3.2000])

torch.FloatTensor(2,3)
Out[18]: 
tensor([[5.1027e-08, 4.9116e-14, 2.4979e-38],
        [2.3518e-38, 1.5046e-36, 1.7636e+25]])#未初始化也有数字哦,所以要注意替换掉这个数字,防止报错

3. 未初始化

同上

4. 随机初始化

rand rand_like randint randn

rand 0-1之间均匀sample 设置shape例如(3,3)
rand_like 对象是一个tensor
randint 三个参数 最小值(包括),最大值(不包括),shape(例如[3,3])
randn 正态分布 设置shape例如(3,3)

5. full

torch.full([2,3],8) 
Out[22]: 
tensor([[8., 8., 8.],
        [8., 8., 8.]])
        
torch.full([],8)  #标量
Out[23]: tensor(8.)

6. arange/linspace

arange
设置范围,生成等差数列,默认公差1

torch.arange(0,10)
Out[24]: tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

第三位参数设置公差

linspace
设置范围和数量,等分切割

torch.linspace(0,10,steps=4)  #不是step哦
Out[26]: tensor([ 0.0000,  3.3333,  6.6667, 10.0000])

logspace
生成10的x次方

7. ones/zero/eye

eye 对角是1 只能接受1or2个参数

torch.ones_like(a) a是tensor

8. randperm & 切片&索引

randperm 随即打散 设置number 即有几个数字

a = torch.rand(2,3)
a
Out[5]: 
tensor([[0.8746, 0.1088, 0.2276],
        [0.0799, 0.4809, 0.4474]])
       
idex = torch.randperm(2)
idex
Out[7]: tensor([0, 1])

a[idex]
Out[9]: 
tensor([[0.8746, 0.1088, 0.2276],
        [0.0799, 0.4809, 0.4474]])
a=torch.rand(4,3,28,28) #4张图片,3个通道,28x28
a[0]  #第一张图片
a[:2]# 从0开始不包括2,即0,1   只对第一个参数有效
a[:2,1:,-1:,:]  #纯:表示全部, 
#1: 从1到最后   -1是反向检索,  ... -3-2-1
a=torch.rand(4,2)
a
Out[28]: 
tensor([[0.0452, 0.3856],
        [0.3025, 0.4022],
        [0.7373, 0.3566],
        [0.0446, 0.7041]])

a[0:4:2]#连在一起没有逗号
Out[29]: 
tensor([[0.0452, 0.3856],
        [0.7373, 0.3566]])
# 0:28:2     从0到28,不包括28,每隔2个取一次
a[0:4:3]
Out[30]: 
tensor([[0.0452, 0.3856],
        [0.0446, 0.7041]])

a.index_select(0,torch.tensor([0,2])).shape#list必须转化成tensor  
					   #表示第0个维度,第0个和第2个
Out[14]: torch.Size([2, 3, 2, 2])

a[...].shape#代表除了标明的范围,其余所有都是all
Out[15]: torch.Size([4, 3, 2, 2])
a[0,...].shape #如果用冒号+逗号非常麻烦
Out[16]: torch.Size([3, 2, 2])
a[0,...,::2].shape
Out[18]: torch.Size([3, 2, 1])

9. 改变

view/reshape 完全一样
a.view(_,_)    size一样就行
squeeze/unsqueeze压缩和扩张维度
a.unsqueeze(   )  dim是数字,范围是[-dim-1,dim+1)
squeeze  只能压缩1
b=torch.rand(32)
f=torch.rand(4,32,14,14)
b=b.unsqueeze(0).unsqueeze(2).unsqueeze(3)
b.shape
Out[28]: torch.Size([1, 32, 1, 1])
transpose/t/permute
.t只适用于矩阵,即2维
transpose只能改一次顺序
permute可以彻底改变顺序
expand/repeat
expand 改变数据理解方式(推荐,速度快节约内存)
repeat   数据增加

expand()参数为扩张结果
条件:dimention一致;只能从1扩张成n,不能扩张234...
repeat()参数为重复的次数
会改变原数据,一般不用
expand_as(A)  A为一个tensor
a=torch.rand(4,32,14,14)
b.shape
Out[30]: torch.Size([1, 32, 1, 1])
b.expand(4,32,-1,14).shape  #-1表示不变
Out[33]: torch.Size([4, 32, 1, 14])
b.expand(4,32,-1,14).shape
Out[33]: torch.Size([4, 32, 1, 14])
b.expand(-1,32,-1,-4).shape  # -4这是个bug  

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • pytorch(4)Broadcasting
  • 李亚石先生生前力作欣赏---花草
  • pytorch(5)Tensor
  • 李亚石先生生前力作欣赏---桂林山水
  • pytorch(6)Tensor统计
  • 千万不要死于无知——前言
  • pytorch(7)Where和Gather
  • 千万不要死于无知——平衡饮食
  • pytorch(8)函数的梯度
  • MOOC python数据分析(1)Numpy
  • MOOC python数据分析(2)数据存取/随机数函数
  • 千万不要死于无知——有氧运动
  • 【GAN】生成对抗网络
  • 千万不要死于无知——心理状态
  • MOOC python数据分析(3)PIL库/图像处理
  • (三)从jvm层面了解线程的启动和停止
  • Angular 2 DI - IoC DI - 1
  • cookie和session
  • Js基础知识(四) - js运行原理与机制
  • SQLServer之创建显式事务
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 每天一个设计模式之命令模式
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 回归生活:清理微信公众号
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • $L^p$ 调和函数恒为零
  • (02)Hive SQL编译成MapReduce任务的过程
  • (1)(1.13) SiK无线电高级配置(五)
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (2)MFC+openGL单文档框架glFrame
  • (C语言)字符分类函数
  • (初研) Sentence-embedding fine-tune notebook
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)springboot教学评价 毕业设计 641310
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (九)信息融合方式简介
  • (原創) 物件導向與老子思想 (OO)
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • .CSS-hover 的解释
  • .Net 知识杂记
  • .net(C#)中String.Format如何使用
  • .NET中的Exception处理(C#)
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • @Autowired @Resource @Qualifier的区别
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • [.NET]桃源网络硬盘 v7.4
  • [].shift.call( arguments ) 和 [].slice.call( arguments )
  • [04] Android逐帧动画(一)
  • [20150629]简单的加密连接.txt
  • [Android] Android ActivityManager