tensorflow+numpy 深度學習相關函式(持續更新)
阿新 • • 發佈:2020-12-24
技術標籤:Deep learning
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.]]
參考資料: