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 相关文章推荐
在Python中的Django框架中进行字符串翻译
Jul 27 Python
玩转python selenium鼠标键盘操作(ActionChains)
Apr 12 Python
python 读取excel文件生成sql文件实例详解
May 12 Python
python实现屏保计时器的示例代码
Aug 08 Python
python opencv摄像头的简单应用
Jun 06 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
Aug 07 Python
Python中关于浮点数的冷知识
Sep 22 Python
TensorFlow tensor的拼接实例
Jan 19 Python
利用Tensorflow构建和训练自己的CNN来做简单的验证码识别方式
Jan 20 Python
python 代码实现k-means聚类分析的思路(不使用现成聚类库)
Jun 01 Python
Python unittest discover批量执行代码实例
Sep 08 Python
浅谈Python数学建模之固定费用问题
Jun 23 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
新的一年,新的期待:DC在2020年的四部动画电影
2020/01/01 欧美动漫
phpize的深入理解
2013/06/03 PHP
php mysql_real_escape_string函数用法与实例教程
2013/09/30 PHP
thinkPHP+ajax实现统计页面pv浏览量的方法
2017/03/15 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
2017/07/20 PHP
PHP PDOStatement::closeCursor讲解
2019/01/30 PHP
简洁短小的 JavaScript IE 浏览器判定代码
2010/03/21 Javascript
分享27个jQuery 表单插件集合推荐
2011/04/25 Javascript
jquery用data方法获取某个元素上的事件
2014/06/23 Javascript
JavaScript中的replace()方法使用详解
2015/06/06 Javascript
jQuery+CSS3+Html5实现弹出层效果实例代码(附源码下载)
2016/05/16 Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
2016/09/13 Javascript
Node.js的环境安装配置(使用nvm方式)
2016/10/11 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
2016/12/22 Javascript
聊聊JavaScript如何实现继承及特点
2017/04/07 Javascript
基于react组件之间的参数传递(详解)
2017/09/05 Javascript
Angular实现表单验证功能
2017/11/13 Javascript
javascript回调函数详解
2018/02/06 Javascript
Vue响应式原理Observer、Dep、Watcher理解
2019/06/06 Javascript
深入了解query和params的使用区别
2019/06/24 Javascript
vue-cli 项目打包完成后运行文件路径报错问题
2019/07/19 Javascript
vue集成openlayers加载geojson并实现点击弹窗教程
2020/09/24 Javascript
[01:27:30]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
python 写入csv乱码问题解决方法
2016/10/23 Python
pandas dataframe添加表格框线输出的方法
2019/02/08 Python
详解Python用户登录接口的方法
2019/04/17 Python
对Python中TKinter模块中的Label组件实例详解
2019/06/14 Python
打包python 加icon 去掉cmd黑窗口方法
2019/06/24 Python
keras实现调用自己训练的模型,并去掉全连接层
2020/06/09 Python
美国最大的香水连锁店官网:Perfumania
2016/08/15 全球购物
雅诗兰黛澳大利亚官网:Estée Lauder澳大利亚
2019/05/31 全球购物
捐款倡议书范文
2014/02/02 职场文书
2014小学植树节活动总结
2014/03/10 职场文书
总经理岗位职责说明书
2014/07/30 职场文书
MySQL 隔离数据列和前缀索引的使用总结
2021/05/14 MySQL
Vue操作Storage本地化存储
2022/04/29 Vue.js