Press "Enter" to skip to content

tensorflow+numpy 深度学习相关函数(持续更新)

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

tensorflow运算法则

 

import tensorflow as tf
tf.add(a,b)         #加法
tf.subtract(a,b)    #减法
tf.multiply(x,y)    #
tf.div(x,y)         #整除
tf.truediv(x,y)     #浮点数除法
tf.mod(x,y)         #取余

 

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:在以前版本中用来指定轴,已弃用;

举个例子:

 

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.0
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运算);

np.linalg.norm()——范数

 

inalg=linear(线性)+algebra(代数),norm则表示范数。

 

x_norm=np.linalg.norm(x, ord=None, axis=None, keepdims=False)

 

1. x: 表示矩阵(可以是一维)

 

2. ord:范数类型

 

向量的三种范数求法:

 

 

矩阵的三种范数求法:

 

 

3. axis:处理类型

 

 

4. keepding:是否保持矩阵的二维特性

 

True表示保持矩阵的二维特性,False相反

 

例子:

 

import numpy as np
x = np.array([
    [1, 2, 3],
    [2, 4, 6]])
print "默认参数(矩阵2范数,不保留矩阵二维特性)        :", np.linalg.norm(x)
print "矩阵2范数,保留矩阵二维特性:", np.linalg.norm(x, keepdims=True)
print "矩阵1范数(列和的最大值)   :", np.linalg.norm(x, ord=1,keepdims=True)
print "矩阵2范数(求特征值,然后求最大特征值得算术平方根):", np.linalg.norm(x, ord=2, keepdims=True)
print "矩阵∞范数(行和的最大值)   :", np.linalg.norm(x, ord=np.inf, keepdims=True)
print "矩阵每个行向量求向量的2范数:", np.linalg.norm(x, axis=1, keepdims=True)
print "矩阵每个列向量求向量的2范数:", np.linalg.norm(x, axis=0, keepdims=True)
print "矩阵每个行向量求向量的1范数:", np.linalg.norm(x, ord=1, axis=1, keepdims=True)
print "矩阵每个列向量求向量的1范数:", np.linalg.norm(x, ord=1, axis=0, keepdims=True)

 

输出结果为:

 

默认参数(矩阵2范数,不保留矩阵二维特性)        : 8.36660026534
矩阵2范数,保留矩阵二维特性: [[8.36660027]]
矩阵1范数(列和的最大值)   : [[9.]]
矩阵2范数(求特征值,然后求最大特征值得算术平方根): [[8.36660027]]
矩阵∞范数(行和的最大值)   : [[12.]]
矩阵每个行向量求向量的2范数: [[3.74165739]
 [7.48331477]]
矩阵每个列向量求向量的2范数: [[2.23606798 4.47213595 6.70820393]]
矩阵每个行向量求向量的1范数: [[ 6.]
 [12.]]
矩阵每个列向量求向量的1范数: [[3. 6. 9.]]

 

参考资料:

 

【1】 blog.csdn.net/Liang_xj/ar…

 

【2】 blog.csdn.net/dcrmg/artic…

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注