API原型(TensorFlow 1.8.0):
tf.split(value, num_or_size_splits, axis=0, num=None, name=‘split’)
这个函数是用来切割张量的,返回的是list。
输入切割的张量和参数,返回切割的结果。
value传入的就是需要切割的张量。
这个函数有两种切割的方式:
以三个维度的张量为例,比如说一个20 * 30 * 40的张量my_tensor,就如同一个长20厘米宽30厘米高40厘米的蛋糕,每立方厘米都是一个分量。
有两种切割方式:
- 如果num_or_size_splits传入的是一个整数,这个整数代表这个张量最后会被切成几个小张量。此时,传入axis的数值就代表切割哪个维度(从0开始计数)。调用tf.split(my_tensor, 2,0)返回两个10 * 30 * 40的小张量。
- 如果num_or_size_splits传入的是一个向量,那么向量有几个分量就分成几份,切割的维度还是由axis决定。比如调用tf.split(my_tensor, [10, 5, 25], 2),则返回三个张量分别大小为 20 * 30 * 10、20 * 30 * 5、20 * 30 * 25。很显然,传入的这个向量各个分量加和必须等于axis所指示原张量维度的大小 (10 + 5 + 25 = 40)。
- axis=-1代表最后一个维度,例如
一个(2,2,3)的tensor,经过tf.split(x0, 3, axis=-1)后会分成3个(2,2,1)的list
tf.transpose转置
f.transpose(input, [dimension_1, dimenaion_2,…,dimension_n]):
这个函数主要适用于交换输入张量的不同维度用的,
如果输入张量是二维,就相当是转置。
如果张量是三维,就是用[dimension_1,…,dimension_n]来表示,如[0,1,2]。这个列表里的每个数对应相应的维度。如果是[2,1,0],就把输入张量的第三维度和第一维度交换。