Tensorflow常见函数
1.tf.transpose()
tf.transpose(input, perm=[dimension_1, dimenaion_2,…,dimension_n]):
dimension_n 是整数,每个数对应相应的维度,用0,1,2来表示。这个函数主要适用于交换输入张量的不同维度用的。
如果input是二维,就相当是转置。
如果input是三维,perm = [2,1,0],就把输入张量的第三维度和第一维度交换。
a=tf.constant([[1,2,3],[4,5,6]])#shape=2*3
b=tf.constant([[[1,2,3],[4,5,6]],[[7,8,9,][10,11,12]]])#shape=2*2*3
print (tf.transpose(a,[1,0]).eval()) # 2*3-->3*2
[[1 4]
[2 5]
[3 6]]
print (tf.transpose(b,[2,0,1]).eval()) # 2*2*3-->3*2*2,先找出(1,4,7,10)然后组成2*2的形状
[[[ 1 4]
[ 7 10]]
[[ 2 5]
[ 8 11]]
[[ 3 6]
[ 9 12]]]
print(tf.transpose(a, perm=[0, 2, 1]))#shape=2*3*2
[[[1 4]
[2 5]
[3 6]]
[[7 10]
[8 11]
[9 12]]
2.np.hstack(tup)
按水平方向(列顺序)堆叠数组构成一个新的数组 堆叠的数组需要具有相同的维度参数:
tup:ndarrays数组序列,除了一维数组的堆叠可以是不同长度外,其它数组堆叠时,除了第二个轴的长度可以不同外,其它轴的长度必须相同。
原因在于一维数组进行堆叠是按照第一个轴进行堆叠的,其他数组堆叠都是按照第二个轴堆叠的。
a = np.array((1,2,3))
b = np.array((2,3,4))
np.hstack((a,b))
输出:
array([1, 2, 3, 2, 3, 4])
a = np.array([[1],[2],[3]])
b = np.array([[2],[3],[4]])
np.hstack((a,b))
输出:
array([[1, 2],
[2, 3],
[3, 4]])
以下代码会报错:
print np.hstack(([[1,2,3],[2,3,4]],[[1,2]]))
第一个数组是2行3列,而第二个数组是1行2列
所以报错
3.np.vstack(tup)
按垂直方向(行顺序)堆叠数组构成一个新的数组 堆叠的数组需要具有相同的维度 参数: tup:ndarrays数组序列,如果是一维数组进行堆叠,则数组长度必须相同;除此之外,其它数组堆叠时,除数组第一个轴的长度可以不同,其它轴长度必须一样。a = np.array([1, 2, 3])
b = np.array([2, 3, 4])
np.vstack((a,b))
输出:
array([[1, 2, 3],
[2, 3, 4]])
a = np.array([[1], [2], [3]])
b = np.array([[2], [3], [4]])
np.vstack((a,b))
输出:
array([[1],
[2],
[3],
[2],
[3],
[4]])
以下代码会出错:
print np.vstack(([[1,2,3],[3,4,3]],[[4,5]]))
除了第一维可以不一样,其他维必须相同,上述代码第二维不一样,所以报错