Python3 Tensorlfow:增加或者减小矩阵维度的实现


Posted in Python onMay 22, 2020

1.增加维度

下面给出两个样例

样例1:

[1, 2, 3] ==> [[1],[2],[3]]

import tensorflow as tf

a = tf.constant([1, 2, 3])
b = tf.expand_dims(a,1)

with tf.Session() as sess:
 a_, b_ = sess.run([a, b])
 print('a:')
 print(a_)
 print('b:')
 print(b_)

输出结果

a:
[1 2 3]
b:
[[1]
 [2]
 [3]]

样例2:

[1, 2, 3] ==> [[1,2,3]]

import tensorflow as tf

a = tf.constant([1, 2, 3])
b = tf.expand_dims(a, 0)

with tf.Session() as sess:
 a_, b_ = sess.run([a, b])
 print('a:')
 print(a_)
 print('b:')
 print(b_)

输出结果:

a:
[1 2 3]
b:
[[1 2 3]]

2.降低维度

样例1:

[[1, 2, 3]] ==> [1, 2, 3]

import tensorflow as tf

a = tf.constant([[1, 2, 3]])
b = tf.squeeze(a)

with tf.Session() as sess:
 a_, b_ = sess.run([a, b])
 print('a:')
 print(a_)
 print('b:')
 print(b_)

输出结果

a:
[[1 2 3]]
b:
[1 2 3]

样例2:

[[1], [2], [3]] ==> [[1, 2, 3]

import tensorflow as tf

a = tf.constant([[1], [2], [3]])
b = tf.squeeze(a, 1)

with tf.Session() as sess:
 a_, b_ = sess.run([a, b])
 print('a:')
 print(a_)
 print('b:')
 print(b_)

补充知识:pytorch中squeeze()、unsqueeze(),以及一些高维数组操作

博主最近阅读YOLO底层代码,Torch中对多数组矩阵有很多高维操作,看过一边之后,记录一下,以防忘记。

torch.squeeze()

功能:取消为1的维度

squeeze(input, dim=None, out=None) -> Tensor

这里一般分不清dim的意思

举个例子:

input=(A , 1 , B , C ,1 , D)
squeeze(input)=(A,B,C,D)
input= (A, 1, B)

squeeze(input, 0)=(A, 1, B) 不会改变 squeeze(input, 1)=(A, B) 会改变

Python3 Tensorlfow:增加或者减小矩阵维度的实现

这里0, 1 ,2就分别代表 A, 1, B

torch.unsqueeze()

unsqueeze(input, dim, out=None) -> Tensor

功能: 在某一位置插入一维

这里面也是dim这个参数比较难理解

dim的取值是[- input.dim()-1, imput.dim()]

给定一个dim

input=(A , B , C , D)

input的维度input_dim为4, dim的取值[-5, 4]

unsqueeze(input, 0)=(1, A , B , C , D)
unsqueeze(input, 1)=(A , 1, B , C , D)
unsqueeze(input, -5)=(1, A , B , C , D)

Python3 Tensorlfow:增加或者减小矩阵维度的实现

看一个简单用例,size表示维度大小,10是取值范围,a=[:,:,:,4]表示取a最后一维的第四个元素(从0开始第四个),即取[0,0,3],[5,6,1],[0,6,8],[…], 判断大于5为true,否则为false。

注意:b的维度比a少了一维。

Python3 Tensorlfow:增加或者减小矩阵维度的实现

继续上一步,这里使用unsqueeze函数将b的维度扩展一维[2,2,3]------>[2,2,3,1] 这时b的最后一维只有一个元素, .expand_as将最后最后的元素扩展到a最后一维的个数

a[c] 表示取出为True的所有行在a中的元素

Python3 Tensorlfow:增加或者减小矩阵维度的实现

以上这篇Python3 Tensorlfow:增加或者减小矩阵维度的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用十张图详解TensorFlow数据读取机制(附代码)
Feb 06 Python
Python使用matplotlib绘制余弦的散点图示例
Mar 14 Python
解决每次打开pycharm直接进入项目的问题
Oct 28 Python
Python设计模式之命令模式原理与用法实例分析
Jan 11 Python
Django框架验证码用法实例分析
May 10 Python
redis数据库及与python交互用法简单示例
Nov 01 Python
python:目标检测模型预测准确度计算方式(基于IoU)
Jan 18 Python
python 链接sqlserver 写接口实例
Mar 11 Python
解决python多线程报错:AttributeError: Can't pickle local object问题
Apr 08 Python
Python带参数的装饰器运行原理解析
Jun 09 Python
python多线程和多进程关系详解
Dec 14 Python
详解matplotlib绘图样式(style)初探
Feb 03 Python
Python pandas如何向excel添加数据
May 22 #Python
python3.8.1+selenium实现登录滑块验证功能
May 22 #Python
在TensorFlow中实现矩阵维度扩展
May 22 #Python
Python多个装饰器的调用顺序实例解析
May 22 #Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
May 22 #Python
Tensorflow tf.tile()的用法实例分析
May 22 #Python
python代码实现将列表中重复元素之间的内容全部滤除
May 22 #Python
You might like
Dojo之路:如何利用Dojo实现Drag and Drop效果
2007/04/10 Javascript
jquery JSON的解析方式
2009/07/25 Javascript
jquery清空textarea等输入框实现代码
2013/04/22 Javascript
用JQuery 判断某个属性是否存在hasAttr的解决方法
2013/04/26 Javascript
JavaScript中创建类/对象的几种方法总结
2013/11/29 Javascript
js获取页面传来参数的方法
2014/09/06 Javascript
JS实现的4种数字千位符格式化方法分享
2015/03/02 Javascript
jQuery实现菜单式图片滑动切换
2015/03/14 Javascript
易操作的jQuery表单提示插件
2015/12/01 Javascript
AngularJS 使用$sce控制代码安全检查
2016/01/05 Javascript
jQuery height()、innerHeight()、outerHeight()函数的区别详解
2016/05/23 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
2016/06/01 Javascript
Angular.JS通过指令操作DOM的方法
2017/05/10 Javascript
JavaScript 跨域之POST实现方法
2018/05/07 Javascript
Koa代理Http请求的示例代码
2018/10/10 Javascript
Node.js assert断言原理与用法分析
2019/01/04 Javascript
JS实现使用POST方式发送请求
2019/08/30 Javascript
webpack的tree shaking的实现方法
2019/09/18 Javascript
layer.confirm()右边按钮实现href的例子
2019/09/27 Javascript
Vue数据双向绑定底层实现原理
2019/11/22 Javascript
python将文本转换成图片输出的方法
2015/04/28 Python
python框架django基础指南
2016/09/08 Python
对django2.0 关联表的必填on_delete参数的含义解析
2019/08/09 Python
python读取Excel表格文件的方法
2019/09/02 Python
python add_argument()用法解析
2020/01/29 Python
python用TensorFlow做图像识别的实现
2020/04/21 Python
StubHub巴西:购买和出售您的门票
2016/07/22 全球购物
英国香水店:The Perfume Shop
2017/03/27 全球购物
JRE、JDK、JVM之间的关系怎样
2012/05/16 面试题
Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型
2013/10/30 面试题
环境科学专业个人求职的自我评价
2013/11/28 职场文书
承办会议欢迎词
2014/01/17 职场文书
化学专业自荐信
2014/05/28 职场文书
晚会主持人开场白台词
2015/05/28 职场文书
干部考核工作总结
2015/08/12 职场文书
vue cli4中mockjs在dev环境和build环境的配置详情
2022/04/06 Vue.js