本人较懒,故间断更新下常用的tf函数以供参考:
一、tf.reduce_sum( )
reduce_sum( ) 个人理解是降维求和函数,在 tensorflow 里面,计算的都是 tensor,可以通过调整 axis 的维度来控制求和维度。
参数:
- input_tensor:要减少的张量.应该有数字类型.
- axis:要减小的尺寸.如果为None(默认),则缩小所有尺寸.必须在范围[-rank(input_tensor), rank(input_tensor))内.
- keep_dims:如果为true,则保留长度为1的缩小尺寸.
- name:操作的名称(可选).
- reduction_indices:axis的废弃的名称.
返回:
该函数返回减少的张量.
numpy兼容性
相当于np.sum;
此处axis为tensor的阶数,使用该函数将消除tensor指定的阶axis,同时将该阶下的所有的元素进行累积求和操作。
看一个官方示例:
x = tf.constant([[1, 1, 1], [1, 1, 1]])tf.reduce_sum(x) # 6tf.reduce_sum(x, 0) # [2, 2, 2]tf.reduce_sum(x, 1) # [3, 3]tf.reduce_sum(x, 1, keep_dims=True) # [[3], [3]]tf.reduce_sum(x, [0, 1]) # 6
此函数计算一个张量的各个维度上元素的总和.
函数中的input_tensor是按照axis中已经给定的维度来减少的;除非 keep_dims 是true,否则张量的秩将在axis的每个条目中减少1;如果keep_dims为true,则减小的维度将保留为长度1.
如果axis没有条目,则缩小所有维度,并返回具有单个元素的张量.
二、tf.ones_like | tf.zeros_like
tf.ones_like(tensor,dype=None,name=None)
tf.zeros_like(tensor,dype=None,name=None)新建一个与给定的tensor类型大小一致的tensor,其所有元素为1和0,示例如下:tensor=[[1, 2, 3], [4, 5, 6]] x = tf.ones_like(tensor) print(sess.run(x))#[[1 1 1],# [1 1 1]]
三、tf.reduce_mean()
tf.reduce_mean 函数用于计算张量tensor沿着指定的数轴(tensor的某一维度)上的的平均值,主要用作降维或者计算tensor(图像)的平均值。
reduce_mean(input_tensor, axis=None, keep_dims=False, name=None, reduction_indices=None)
第一个参数input_tensor: 输入的待降维的tensor;
第二个参数axis: 指定的轴,如果不指定,则计算所有元素的均值;第三个参数keep_dims:是否降维度,设置为True,输出的结果保持输入tensor的形状,设置为False,输出结果会降低维度;第四个参数name: 操作的名称;第五个参数 reduction_indices:在以前版本中用来指定轴,已弃用;以一个维度是2,形状是[2,3]的tensor举例:
import tensorflow as tf x = [[1,2,3], [1,2,3]] xx = tf.cast(x,tf.float32) mean_all = tf.reduce_mean(xx, keep_dims=False)mean_0 = tf.reduce_mean(xx, axis=0, keep_dims=False)mean_1 = tf.reduce_mean(xx, axis=1, keep_dims=False) with tf.Session() as sess: m_a,m_0,m_1 = sess.run([mean_all, mean_0, mean_1]) print m_a # output: 2.0print m_0 # output: [ 1. 2. 3.]print m_1 #output: [ 2. 2.]
如果设置保持原来的张量的维度,keep_dims=True ,结果:
print m_a # output: [[ 2.]]print m_0 # output: [[ 1. 2. 3.]]print m_1 #output: [[ 2.], [ 2.]]
类似的函数还有:
- tf.reduce_sum :计算tensor指定轴方向上的所有元素的累加和;
- tf.reduce_max : 计算tensor指定轴方向上的各个元素的最大值;
- tf.reduce_all : 计算tensor指定轴方向上的各个元素的逻辑和(and运算);
- tf.reduce_any: 计算tensor指定轴方向上的各个元素的逻辑或(or运算);