基于维度的算术操作
TensorFlow中,tf.reduce_*一系列操作等都造成张量维度的减少。这一系列操作都可以对一个张量在维度上的元素进行操作,如按行求平均,求取张量中所有元素的乘积等。
常用的包括:tf.reduce_sum(加法)、tf.reduce_prod(乘法)、tf.reduce_min(最小)、tf.reduce_max(最大)、tf.reduce_mean(均值)、tf.reduce_all(逻辑和)、tf.reduce_any(逻辑或)和tf.reduce_logsumexp(log(sum(exp)))操作)等。
这些操作的使用方法都相似,下面只演示tf.reduce_sum的操作案例。
计算一个张量的各个维度上元素的总和
tf.reduce_sum(input_tensor, axis=None, keepdims=False,name=None):
input_tensor:输入张量;
axis:指定需要计算的轴,如果不指定,则计算所有元素的均值;
keepdims:是否降维度,设置为 True,输出的结果保持输入 tensor 的形状,设置为 False,输出结果会降低维度;
name:操作名称。
代码:
reduce_sample_1 = tf.constant([1,2,3,4,5,6],shape=[2,3])
print("原始数据",reduce_sample_1.numpy())
print("计算张量中所有元素的和(axis=None):",tf.reduce_sum(reduce_sample_1,axis=None).numpy())
print("按列计算,分别计算各列的和(axis=0):",tf.reduce_sum(reduce_sample_1,axis=0).numpy())
print("按行计算,分别计算各列的和(axis=1):",tf.reduce_sum(reduce_sample_1,axis=1).numpy())
输出:
原始数据 [[1 2 3]
[4 5 6]]
计算张量中所有元素的和(axis=None): 21
按行计算,取出行,分别计算各列的和(axis=0): [5 7 9]
按列计算,取出列,分别计算各列的和(axis=1): [ 6 15]