tf.concat用来进行张量的拼接,tf.stack用来进行张量的堆叠,tf.split用来进行张量的分割,tf.unstack是tf.split的一种,也用来进行张量分割
1.tf.concat
参数axis代表将要合并的维度
# 假设a代表四个班的成绩(每班35人,8个科目),b代表2个班的成绩
a = tf.ones([4,35,8])
b = tf.ones([2,35,8])
# 使用concat进行合并得到6个班的成绩
c = tf.concat([a,b],axis=0)
# (6,35,8)
print(c.shape)
2.tf.stack(用于创建一个新的维度)
# 假设a代表A学校的四个班的成绩(每班35人,8个科目),b代表B学校四个班的成绩
a = tf.ones([4,35,8])
b = tf.ones([4,35,8])
# 使用stack进行合并得到6个班的成绩
c = tf.stack([a,b],axis=0)
# (2,4,35,8)
print(c.shape)
3.tf.unstack(对某维度进行等分)
a=tf.random.normal([2,10,6])
split1=tf.unstack(a,axis=1)
split1[0].shape
TensorShape([2, 6])
unstack对该维度上的tensor全部打散,划分成一个一个的维度,打散后该维度消失,若需要指定打散的数量,使用split
4.tf.split(按比例打散)
a=tf.random.normal([2,10,6])
split1,split2,split3=tf.split(a,[1,4,-1],1)
split1.shape,split2.shape,split3.shape
(TensorShape([2, 1, 6]), TensorShape([2, 4, 6]), TensorShape([2, 5, 6]))