张量常用函数

TensorFlow中,可以通过张量的ndim和shape成员属性获得张量的维度数和形状。

函数 说明 例子
tf.reshape(x, shape) 改变张量的形状 tf.reshape(x, [4,2,2])
tf.expand_dims(x, axis) 增加一个长度为1的维度 tf.expand_dims(x, 2)
tf.squeeze(x, axis) 删除一个长度为1的维度 tf.squeeze(x, 1)
tf.transpose(x, perm) 交换张量的维度 tf.transpose(x, perm=[0,3,1,2])
tf.tile(x, multiples) 完成数据在指定维度上的复制操作,multiples分别指定了每个维度上面的复制倍数,对应位置为1表明不复制,为2表明新长度为原来长度的2倍,以此类推。注意,会创建一个新的变量来保存复制后的变量 tf.tile(x, multiples=[2, 1])
tf.broadcast_to(x, new_shape) 显示完成数据的广播操作 x=tf.random.normal([32,1]) tf.broadcast_to(x, [2,32,32,3])

加、减、乘、除 tf.add() tf.subtract() tf.multiply() tf.divide()
矩阵相乘 tf.matmul(a,b)
指数 tf.pow(x,a) x**a
自然指数 tf.exp(x)
自然对数 tf.math.log(x)
平方 tf.square(x)
平方根 tf.sqrt(x)

张量的合并可以使用拼接(Concatenate)和堆叠(Stack)操作实现。

拼接操作并不会产生新的维度,仅在现有的维度上合并,而堆叠会创建新维度。

拼接可以通过tf.concat(tensor, axis)函数
堆叠可以通过tf.stack(tesnsors, axis)函数
拼接:设张量A保存了某学校4个班级的成绩册,每个班级35个学生,共8门科目成绩,这张量A的shape为[4,35,8];同样的方式,张量B保存了其他6个班级的成绩册,shape为[6,35,8]。通过拼接这2份成绩册,便可得到学校所有班级的成绩册,记为张量C,shape为[10,35,8]。
堆叠:如果在合并数据时,希望创建一个新的维度,则需要使用tf.stack操作。考虑张量A保存了某个班级的成绩册,shape为[35,8],张量B保存了另一班级的成绩册,shape为[35,8]。合并这2个班级的数据时,则需要创建一个新维度,定义为班级维度,新维度可以选择放置在任意位置,一般根据大小维度的经验法则,将较大概念的班级维度放置在学生维度之前,这合并后的张量新的shape为[2,35,8]。

import tensorflow as tf

a = tf.random.normal([4, 35, 8])
b = tf.random.normal([6, 35, 8])
c = tf.concat([a, b], axis=0)
print("拼接后的shape:", c.shape)

x = tf.random.normal([35, 8])
y = tf.random.normal([35, 8])
z = tf.stack([x, y], axis=0)
print("堆叠后的shape:", z.shape)

输出结果:

拼接后的shape: (10, 35, 8)
堆叠后的shape: (2, 35, 8)

分割:合并操作的逆过程,将一个张量分拆为多个张量

1、分割使用tf.split(x, num_or_size_splits, axis)函数,注意:切割后的shape不变
x参数:待分割的张量
num_or_size_splits参数:切割方案。当num_or_size_splits为单个数值时,表示等长切割为10份;当num_or_size_splits为List时,List的每个元素表示每份的长度,如[2,4,2,2]表示切割为4份,每份的长度一次是2,4,2,2
axis参数:指定分割的维度索引号
2、如果希望在某个维度上全部按长度为1的方式分割,还可以使用tf.unstack(x,axis)函数。这种方式是tf.split的一种特殊情况,切割长度固定为1,只需要指定切割维度的索引号即可

import tensorflow as tf

x = tf.random.normal([10, 35, 8])
y = tf.split(x, [4, 2, 4], 0)
z = tf.unstack(x, axis=0)
print("split后的shape:", y[0].shape)
print("unstack后的shape:", z[0].shape)

输出结果:

split后的shape: (4, 35, 8)
unstack后的shape: (35, 8)

统计函数

1、向量范数:tf.norm(x,ord)


范数.png

2、通过tf.reduce_max、tf.reduce_min、tf.reduce_mean、tf.reduce_sum函数可以求解出张量在某个维度上的最大、最小、均值、和
3、通过tf.argmax(x,axis)和tf.argmin(x,axis)可以求解在axis轴上,x的最大值、最小值所对应的索引号

比较函数

比较函数.png

填充

填充:tf.pad(x, paddings)函数,参数padding是包含了多个[left, right]的嵌套方案List。注意:tf.pad函数利用0进行填充。
以28×28大小的图像为例,如果网络层所接受的数据高宽为32×32,这将28×28大小填充到32×32,可以选择在图像矩阵的上下左右方向各填充2个单元

import tensorflow as tf
x = tf.random.normal([4, 28, 28, 3])
y = tf.pad(x, [[0,0], [2,2], [2,2], [0,0]])
print("填充前的shape:", x.shape)
print("填充后的shape:", y.shape)
# 输出结果
填充前的shape: (4, 28, 28, 3)
填充后的shape: (4, 32, 32, 3)

数据限幅

在TensorFlow中,可以通过tf.maximum(x,a)实现数据的下限幅,即x∈[a,+∞);可以通过tf.minimum(x,a)实现数据的上限幅,即x∈(-∞,a];通过使用tf.clip_by_value(x, min, max)函数实现上下限幅。

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