Tensorflow常遇函数(一)
1.tf.concat(values, axis,name=‘concat’)
tf.concat用于将多个张量在某维度合并起来,类似于numpy.concatenate。第一个参数为待合并的多个张量列表,第二个参数需指定哪个维度上做合并。待合并的张量shape需要完全相同,并且产生的张量的阶数不会发生变化。
import tensorflow as tf
a=tf.constant([[1,2,3],[4,5,6]])#shape=2*3
b=tf.constan([[7,8,9],[10,11,12]])#shape=2*3
c=tf.concat([a,b],axis=0)
d=tf.concat([a,b],axis=1)
print(c)
print(d)
#c=[[1, 2, 3],
# [4, 5, 6],
# [7, 8, 9],
# [10,11,12]]
#d=[[1, 2, 3, 7, 8, 9],
# [4, 5, 6,10,11,12]]
可以看出:
当axis=0时,是在矩阵的第1维上进行拼接
当axis=1时,是在矩阵的第2维上进行拼接也就是在[1,2,3]的内部后面拼接另一个矩阵的第1维数据[7,8,9]得到[1,2,3,7,8,9]。
2.tf.stack(values, axis=0, name=‘stack’)
将一个维度为R的张量数组转变成一个维度为R+1的张量。即会在新的张量阶上合并,张量的阶数也会增加。
参数values:一个具有相同形状与数据类型的张量数组。
参数axis:stack就是要将一组相同形状的张量提高一个维度,axis就是这些张量里,将axis指定的维度用所有这些张量数组代替。如axis=2,表示指定在矩阵第3个维度,原来的元素用整个张量数组里的元素代替,即(A,B,C)转变成(A,B,N,C)。
a=tf.constant([[1,2,3],[4,5,6],[3,2,1]])#shape=3*3
b=tf.constan([[7,8,9],[10,11,12][9,8,7]])#shape=3*3
print (np.stack([a,b],axis=0))
[[[1,2,3],
[4,5,6],
[3,2,1]]
[[7,8,9],
[10,11,12],
[9, 8, 7]]]#shape=2*3*3
print (np.stack([a,b],axis=1))
[[[1,2,3],
[7,8,9]],
[[4,5,6],
[10,11,12]],
[[3,2,1],
[9,8,7]]]#shape=3*3*2