2021-06-11 pytorch基本语法
前言
pytorch是个好东西,它与tf的区别是,tf的布署性好,而pytorch布属性稍差。何为布署性?就是在实际应用中,可以用c调用、可以用java调用、用php调用...总之,支持的语言越多,布属性越好,这其实与模型尝试、模型训练没有半毛钱关系,何况,以2017年做分水岭,之后的项目全在tf2或pytorch上运行,因此提倡用pytorch,本文对最简单的pytorch进行梳理。
1 python变量和pytorch变量对照
2 如何定义pytorch张量
【1】生成浮点数或整数变量
- 用size生成
a = torch.FloatTensor(2,3) 或
a = torch.IntTensor(2,3)
- 用list生成(list = [2,3,4,5])
a = torch.FloatTensor([2,3,4,5]) 或
a = torch.IntTensor([2,3,4,5])
【2】生成浮点均匀分布随机张量
生成浮点数2X3的矩阵:分布【0,1】均匀
a = torch.rand(2,3)
【3】生成顺序表
import torch
a = torch.range(2,8,1)
【4】生成全零张量
import torch
a = torch.zeros(2,3)
【5】张量清空
将生成一个空张量
print( torch.empty(5, 3) )
【6】张量产生
x = x.new_ones(5, 3, dtype=torch.double)
print("x={}".format(x))
【7】形状复制的随机张量
x = x.new_ones(5, 3, dtype=torch.double)
print("x={}".format(x))x = torch.rand_like(x,dtype=torch.float)
【8】获取张量的元素值
# 获取某一个元素的值
print("x[1][1]={}".format(x[1][1]))
print("x[1][1].item()={}".format(x[1][1].item()))
【9】转换Torch tensor到numpy
a = torch.ones(6)
b = a.numpy()
【10】转换numpy到Torch tensor
a = np.ones(2)
b = torch.from_numpy(a)
【11】将本地的tensor定义到GPU内
# pytorch 直接将张量定义到cuda内存中
if torch.cuda.is_available():
device = torch.device("cuda")
y = torch.ones_like(x,device=device)
【12】直接创建一个与x大小相同的tensor,放于GPU上
print("\nx={},dtype is {}".format(x,x.dtype))
print("y=torch.ones_like(x,device=device)={},dtype is {}".format(y,y.dtype))
#z = x+y #RuntimeError: expected type torch.FloatTensor but got torch.cuda.FloatTensor一个在GPU上,一个在CPU上,无法运算
x = x.to(device) # 将x传到GPU上
print("x=x.to(device)={},dtype is {}".format(x,x.dtype))
z = x + y
print("z=x+y={},dtype is {}".format(z,z.dtype))
【13】 cpu数据和cuda数据合法性检验
x = torch.ones(5, 3, dtype=torch.double)print ( x.type() )x = x.cuda()print ( x.type() )
结果:
torch.DoubleTensor
torch.cuda.DoubleTensor
3 pytorch张量其它
1.用numel获取某张量的元素个数
a = torch.randn(1,2,3,4,5)
torch.numel(a)
>>>120
再来一个例子
a = torch.zeros(4,4)
torch.numel(a)
>>>16
2.测试某张量是否定义在GPU上
用python的Isinstance函数可以测量一个变量定义在内存(cpu),或显存(gpu)
data= torch.randn(1,2,3,4,5) 定义在cpu内存上
Isinstance(data,torch.cuda.doubleTensor)
>>>False
data = data.cuda() 将data定义到显存GPU上
Isinstance(data,torch.cuda.doubleTensor)
>>>True
4 张量上的运算
1绝对值
import torch
a = torch.randn(2,3)
b = torch.abs(a)
2 张量加法
import torch
a = torch.randn(2,3)
b = torch.randn(2,3)
c = torch.add(a,b)
3 张量裁剪
具体的裁剪过程是:使用变量中的每个元素分别和裁剪的上边界及裁剪的下边界的值进行比较,如果元素的值小于裁剪的下边界的值,该元素就被重写成裁剪的下边界的值;同理,如果元素的值大于裁剪的上边界的值,该元素就被重写成裁剪的上边界的值。
import torch
a = torch.randn(2,3)
b = torch.clamp(a,-0.1,0.1)
tensor([[ 0.0251, 1.8832, 1.5243],
[-0.1365, 1.2307, 0.0640]]) #裁剪前
tensor([[ 0.0251, 0.1000, 0.1000],
[-0.1000, 0.1000, 0.0640]]) #裁剪后
4 张量的除法
import torch
a = torch.randn(2,3)
b = torch.randn(2,3)
c = torch.div(a,b)
d = torch.randn(2,3)
e = torch.div(d,10)
print(e)
5 张量的乘法
import torch
a = torch.randn(2,3)
b = torch.randn(2,3)
c = torch.mul(a,b)
d = torch.randn(2,3)
e = torch.mul(d,10)
print(e)
6 张量的幂函数
import torch
a = torch.randn(2,3)
print(a)
b = torch.pow(a,2)
print(b)
7 矩阵的张量积
pytorch乘积相当于tf的matmul
import torch
a = torch.randn(2,3)
print(a)
b = torch.randn(3,2)
print(b)
b = torch.mm(a,b)
print(b)
8 矩阵和向量的积
import torch
a = torch.randn(2,3)
print(a)
b = torch.randn(3)
print(b)
c = torch.mv(a,b)
print(c)
9 in-place方法
in-place方法就是不增加额外内存空间,在现有空间直接运算并用结果替换的方法。
y.add_(x)
x.copy_(y)
10 tensor resize/reshape
将张量形状塑变成其它形状
x = torch.rand(4,4)
y = x.view(16)
以上运算都是对张量进行修理的的运算,还有定义在张量内部运算,以后将在实例中逐步展现。
2021-06-11 pytorch基本语法相关推荐
- 【离散数学】 SEU - 28 - 2021/06/11 - Lattice and Boolean Algebra
Discrete Mathematical Structures (6th Edition) 2021/06/09 - Lattice and Boolean Algebra Lattice and ...
- Mculover666的博客文章导航(嵌入式宝藏站)(2021.06.17更新)
一.MCU系列 1. 开发环境 [Keil MDK](一)Keil MDK 5.28 的下载.安装.破解 [Keil MDK](二)Keil MDK中芯片器件包的安装 [Keil MDK](三)Kei ...
- 2021双11上云狂欢节 | 爆款产品底价全面开售
一年一度的双11狂欢节终于来啦!怎样用最少的钱获得最多的福利?下面这份攻略收藏好,这波活动快冲! 双11主会场:http://click.aliyun.com/m/1000304310/ 01 领取双 ...
- 2021年11月国产数据库排行榜:openGauss闯入前三,Kingbase流行度与日俱增,TDengine厚积薄发
点击蓝字 关注我们 2021年11月的国产数据库流行度排行榜已在墨天轮发布,本月共有163家数据库参与排名.就前15名的总体情况来看,除openGauss反超OceanBase闯入前三,TDengin ...
- 武林大会之国产数据库风云榜-2021年11月
神秘能量篇: 话说在盘古开天之后,有一种神秘的能量出现于天地,后人称之为"数据",人们先后利用骨制品.绳结.纸张.算盘等工具尝试存储并使用这股神秘的力量,又在计算机发明之后,信息可 ...
- 2021年11月线上消费信贷市场用户洞察:头部效应明显,绿色金融成新风口
根据易观千帆数据显示,2021年11月,中国线上消费信贷市场用户活跃人数达到5697万人.尽管消费需求的下降叠加部分消费场景趋严致使近半年来活跃人数走低,但环比看已出现回升迹象,从7月份的-7.7%恢 ...
- 2021年11月墨天轮国产数据库排行榜:openGauss闯入前三,Kingbase流行度与日俱增,TDengine厚积薄发
2021年11月的国产数据库流行度排行榜已在墨天轮发布,本月共有163家数据库参与排名.就前15名的总体情况来看,除openGauss反超OceanBase闯入前三,TDengine厚积薄发来到第15 ...
- 2021年11月份中国最具影响力的50位钧瓷匠人排行榜
数据来源 钧瓷内参,钧瓷数据库 排名算法 上榜和排名算法与10项规则有关,其中和个人的知名度,影响力,用户评价,平台指数正相关: 制作流程 协同制作--协同评审--联合发布 制作成员 人民日报人民号, ...
- 2021年11月中国主要城市进出口总额排行榜:太原市进出口总额同比和环比均呈下降趋势(附月榜TOP35详单)
榜单解读: 2021年11月全国进出口总额为5793.39亿美元,同比增长26.06%,环比增长12.3%,出口额占进出口总额比重为56.19%,贸易差值为717.11亿美元,呈现贸易 ...
- 2021.4.11 字节跳动实习笔试题---情报解密
2021.4.11 字节跳动实习笔试题-情报解密 题目内容 题目内容: 给你一个字符串,该字符串中有数字,字母(字母只有大写字母)以及一些其他的字符(例如:%,.等),如果首字母为字母或者数字的话,就 ...
最新文章
- 深入Java中文编码乱码问题及最优解决方法
- MHA管理所有数据库服务器
- etherchannel
- e7xue.php漏洞_简要分析最近的dedecms通杀漏洞以及漏洞补丁的绕过
- ACM-ICPC北京赛区2017网络同步赛H
- 群晖 mysql 自动备份_宝塔定时备份网站及数据库至群晖FTP存储空间
- 抖音联合九大博物馆推出“云游”活动 网友可在家看展
- Java中Timer的用法
- 免费学python的网课-学习python的时候观看网课学习还是买书学习效率高?
- vb 获取设备音量_自制 Windows 10X 启动盘,提前体验微软折叠设备新系统
- 基于深度区域的金字塔神经网络用于铝合金表面各种缺陷的自动检测和多分类—论文笔记
- catia二次开发c语言,CATIA二次开发1_VB语言基础语法
- [DataAnalysis]基于统计假设检验的机器学习模型性能评估——泛化误差率的统计检验
- 那些活在浪里的创业者最终被拍成了电影
- 几本关于斯多葛主义 (Stoicism) 的书
- html、css、js粒子特效——前端
- Android中两个textview重叠,android – ViewFlipper中的Textview重叠问题..
- VScode 自定义主题颜色
- matplotlib bar3d画3d柱状图
- 两个坚持是什么_赛客倾诉:没有爱情的婚姻还能坚持多久?3位过来人说出了实话...
热门文章
- 强化学习(四)用蒙特卡罗法(MC)求解
- 最简单的贝叶斯分类器MATLAB实现
- uni-app读取html缓存,uni-app同步缓存值 设置 读取 删除(示例代码)
- 模板使用自定义类型_「Shopify模板」Shopify模板编辑Shopify模板代码更改教程
- 使用Decision Tree对MNIST数据集进行实验
- Impala:新一代开源大数据分析引擎--转载
- quartz 报错:java.lang.classNotFoundException
- 深入了解ibatis源码----简单ibatis示例代码
- android 组件(activity,service,content provider,broadcast receiver,intent)详解
- 【联邦学习】联盟学习到底是什么?他们画了部漫画……