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分割TXT文件成4K的TXT文件
May 23 Python
python中类的一些方法分析
Sep 25 Python
Python3通过Luhn算法快速验证信用卡卡号的方法
May 14 Python
python dataframe向下向上填充,fillna和ffill的方法
Nov 28 Python
安装docker-compose的两种最简方法
Jul 30 Python
Windows系统Python直接调用C++ DLL的方法
Aug 01 Python
基于python判断目录或者文件代码实例
Nov 29 Python
Python使用循环神经网络解决文本分类问题的方法详解
Jan 16 Python
Python类和实例的属性机制原理详解
Mar 21 Python
Python unittest如何生成HTMLTestRunner模块
Sep 08 Python
python实现AHP算法的方法实例(层次分析法)
Sep 09 Python
pdf论文中python画的图Type 3 fonts字体不兼容的解决方案
Apr 24 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
一个简单的PHP&MYSQL留言板源码
2020/07/19 PHP
使用 eAccelerator加速PHP代码的方法
2007/09/30 PHP
PHP中实现获取IP和地理位置类分享
2015/02/10 PHP
php程序内部post数据的方法
2015/03/31 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
2016/09/11 PHP
PHP receiveMail实现收邮件功能
2018/04/25 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
2019/05/06 PHP
基于jQuery的自动完成插件
2011/02/03 Javascript
基于编写jQuery的无缝滚动插件
2014/08/02 Javascript
jquery实现TAB选项卡鼠标经过带延迟效果的方法
2015/07/27 Javascript
JS+CSS相对定位实现的下拉菜单
2015/10/06 Javascript
JS使用正则表达式实现关键字替换加粗功能示例
2016/08/03 Javascript
浅谈js中对象的使用
2016/08/11 Javascript
原生javascript实现图片放大镜效果
2017/01/18 Javascript
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
2017/04/11 jQuery
原生JS实现层叠轮播图
2017/05/17 Javascript
JavaScript实现多叉树的递归遍历和非递归遍历算法操作示例
2018/02/08 Javascript
JavaScript 九种跨域方式实现原理
2019/02/11 Javascript
JavaScript实现京东快递单号查询
2020/11/30 Javascript
一篇文章看懂JavaScript中的回调
2021/01/05 Javascript
Python中判断输入是否为数字的实现代码
2018/05/26 Python
python实现简易动态时钟
2018/11/19 Python
解决安装pycharm后不能执行python脚本的问题
2019/01/19 Python
pandas DataFrame 删除重复的行的实现方法
2019/01/29 Python
python实现一行输入多个值和一行输出多个值的例子
2019/07/16 Python
wxpython绘制音频效果
2019/11/18 Python
Python字符编码转码之GBK,UTF8互转
2020/02/09 Python
Python的PIL库中getpixel方法的使用
2020/04/09 Python
为什么会有内存对齐
2016/10/10 面试题
大学生四个方面的自我评价
2013/09/19 职场文书
个人自我评价分享
2013/12/20 职场文书
《哪吒闹海》教学反思
2014/02/28 职场文书
php微信小程序解包过程实例详解
2021/03/31 PHP
Html5同时支持多端sdk的小技巧
2021/11/17 HTML / CSS
一篇文章告诉你如何实现Vue前端分页和后端分页
2022/02/18 Vue.js
实战Python爬虫爬取酷我音乐
2022/04/11 Python