张量形状的理解与相关操作

张量形状的理解与相关操作

一.张量的形状的判断

Drawing (1).png

这里的A,B,C分布表示维度0,1,2

那如何理解shape呢,由左图我们可以看到

和A这个方括号同维度的有[1 2],[4 5]两个,所以维度0的长度为2,

而和B同维度的有0,2两个,所以维度1的长度为2

所以左边张量的shape=[2,2]

同理右图的张量,

和A方括号同维度的只有[[1 2 3] [4 5 6]],所以维度0长度为1

和B方括号同维度的有[1 2 3], [4 5 6]两个,所以维度1长度为2

和C同维度的有1,2,3,所以维度2长度为3

所以shape=[1,2,3]

二. tf.squeeze(input, squeeze_dims=None, name=None),维度去除

1.去掉所有长度为1的维度(相当于去除那个维度的括号)。
举个栗子:


#coding=utf-8

import tensorflow as tf;  

import numpy as np;  

B = np.array([[[[1],[2],[3] ],[[4],[5],[6] ]]])

#去除维度0和维度3,因为这两个维度长度都为1  

y = tf.squeeze(B,0)  

with tf.Session() as sess:  

    print (sess.run(y),'\n') 

输出:


[[1 2 3]
 [4 5 6]]

2.也可以去掉指定索引的维度(该维度长度必须为1):


#coding=utf-8

import tensorflow as tf;  

import numpy as np;  

#shape=[1,2,3,1]

B = np.array([[[[1],[2],[3] ],[[4],[5],[6] ]]])

#去除维度0

y = tf.squeeze(B,[0])  

with tf.Session() as sess:  

    print (sess.run(y),'\n') 

输出:


[[[1]

  [2]

  [3]]

 [[4]

  [5]

  [6]]] 

三. tf.expand_dims(input, dim, name=None),扩展维度

作用:跟squeeze作用相反,它在维度dim上扩展一个长度为1的维度,原维度dim则被排在后面


#coding=utf-8

import tensorflow as tf;  

import numpy as np;  

B = np.array([[3,4],[5,6]])

# 在维度0的元素前面加括号

y = tf.expand_dims(B,0)  

y1 = tf.expand_dims(B,2)

#-1表示最后一维

y2 = tf.expand_dims(B,-1)  

print(B,'\n')

with tf.Session() as sess:  

    print ('y:shape=',y.shape,'\n',sess.run(y),'\n') 

    print ('y1:shape=',y1.shape,'\n',sess.run(y1),'\n') 

    print ('y2:shape=',y2.shape,'\n',sess.run(y2),'\n') 

输出:


y:shape= (1, 2, 2) 

 [[[3 4]

  [5 6]]] 

y1:shape= (2, 2, 1) 

 [[[3]

  [4]]

 [[5]

  [6]]] 

y2:shape= (2, 2, 1) 

 [[[3]

  [4]]

 [[5]

  [6]]]

四.tf.transpose(input, [dimension_1, dimenaion_2,..,dimension_n])

作用:交换维度

举个栗子:


A = np.array([[[1,2,3],[4,5,6]]])

#即:

[[ 

 [1 2 3]

 [4 5 6]

]]   

如果x=tf.transpose(A, [0,2,1])

1.那么首先找到维度0,2,1的长度


维度0的长度:  1

维度1的长度:  2

维度2的长度:  3

2.再按序写出0,2维的形状的张量:


[

    [ 

        [    ]

        [    ]

[    ] 

    ]

]

3.若x的最后一维长度比A最后一维的长度小,则取将同列的元素按序放入x的最后一维,否则将x的同行元素按序放入最后一维,这里x和A的最后一维长度分别为2,3,所以将同列写入最后一维,最后的结果为:


[[[1 4]

  [2 5]

  [3 6]]] 

代码验证:

import tensorflow as tf;  
import numpy as np;  

A = np.array([[[1,2,3],[4,5,6]]])  
x = tf.transpose(A, [0,2,1])  

y = tf.transpose(A, [0,1,2])  
with tf.Session() as sess:  
    print ('A:\n',A,'\n')  
    print ('x:\n',sess.run(x),'\n') 
    print ('y:\n',sess.run(y),'\n') 

输出:

A:
 [[[1 2 3]
  [4 5 6]]] 

x:
 [[[1 4]
  [2 5]
  [3 6]]] 

y:
 [[[1 2 3]
  [4 5 6]]]
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352

推荐阅读更多精彩内容

  • TF API数学计算tf...... :math(1)刚开始先给一个运行实例。tf是基于图(Graph)的计算系统...
    MachineLP阅读 3,461评论 0 1
  • 1. tf函数 tensorflow 封装的工具类函数 | 操作组 | 操作 ||:-------------| ...
    南墙已破阅读 5,112评论 0 5
  • 长歌短赋效诗仙,安坐海棠执教鞭。 旧友新朋同受益,人中妙笔著新篇。
    艾思阅读 535评论 19 31
  • 闺蜜在前段时间谈了恋爱,于是她天天在我耳边叨扰着人生的奇妙!刚开始的时候,我还会回应着她,后来听多了就没什么感觉了...
    失眠君阅读 271评论 0 1
  • 封装继承多态 封装: 是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的...
    AllenYukin阅读 1,837评论 1 1