大纲维度变换改变视图:tf.reshape(x, shape)
增、删维度:tf.expand_dims(x, axis)和tf.squeeze(x, axis)
变换维度:tf.transpose(x, perm)
复制数据:tf.tile(x, multiples)
广播
四则运算
乘方运算
指数和对数
矩阵运算
1. 维度变换
1.1 改变视图
一个张量有存储和视图两个概念。存储指将张量保存在一个连续的内存区域内。视图指我们理解存储的方式,视图并不会改变张量的存储顺序。
合法的视图操作不会改变张量的存储顺序。什么操作是合法的?设有一个batch的图像为[b,h,w,c],合法的视图操作包括:[b,h*w,c]
[b,h,w*c]
[b,h*w*c]
如果把[b,h,w,c]改为[b,w,h,c]或[b,c,h*w],就是不合法的视图操作,这些操作改变了张量的存储。
通过tf.reshape(x,shape),可以将张量的视图任意地、合法地改变。在shape里面,如果有-1,它指当前轴上长度需要根据张量总元素不变的法则自动推导。
例子1:
x=tf.range(9)
x=tf.reshape(x,[3,-1])
print(x) #可以看到,在reshape前后,张量的存储顺序没有变化。
outputs:
tf.Tensor(
[[0 1 2]
[3 4 5]
[6 7 8]], shape=(3, 3),