numpy計算函數
1、np.random.choice()
參數意思分別 是從a 中以概率P,隨機選擇3個, p沒有指定的時候相當於是一致的分佈
a1 = np.random.choice(a=5, size=3, replace=False, p=None)
非一致的分佈,會以多少的概率提出來
a2 = np.random.choice(a=5, size=3, replace=False, p=[0.2, 0.1, 0.3, 0.4, 0.0])
2、np.roll()
np.roll(a, shift, axis=None)
沿着給定軸滾動數組元素。超出最後位置的元素將會滾動到第一個位置。
#將a沿着axis的方向滾動shfit長度
3、np.reshape()
在不改變矩陣的數值前提下修改矩陣的形狀。
新數組的shape屬性應該要與原來數組的一致,即新數組元素數量與原數組元素數量要相等。一個參數爲-1時,那麼reshape函數會根據另一個參數的維度計算出數組的另外一個shape屬性值。
例子:
# z:
array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]])
# z.reshape(-1,2):
array([[1, 2],
[3, 4],
[5, 6],
[7, 8],
[9, 10],
[11, 12],
[13, 14],
[16,16]])
tf計算函數
1、tf.placeholder(dtype, shape=None, name=None)
placeholder,佔位符,在tensorflow中類似於函數參數,運行時必須傳入值。
dtype:數據類型。常用的是tf.float32,tf.float64等數值類型。
shape:數據形狀。默認是None,就是一維值,也可以是多維,比如[2,3], [None, 3]表示列是3,行不定。
name:名稱。
2、tf.unstack(value, num=None, axis=0, name=‘unstack’ )
value:代表需要分解的矩陣變量(其實就是一個多維數組,一般爲二維);
axis:指明對矩陣的哪個維度進行分解。axis=0按行分解,axis=1按列分解
例子:
c = tf.constant([[1,2,3], [4,5,6]])
d = tf.unstack(c, axis=0)
e = tf.unstack(c, axis=1)
d: array[[1,2,3], [4,5,6]]
e: array[[1,4], [2,5], [3,6]]
3、tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
用於從“服從指定正態分佈的序列”中隨機取出指定個數的值。
shape: 輸出張量的形狀,必選
mean: 正態分佈的均值,默認爲0
stddev: 正態分佈的標準差,默認爲1.0
dtype: 輸出的類型,默認爲tf.float32
seed: 隨機數種子,是一個整數,當設置之後,每次生成的隨機數都一樣
name: 操作的名稱
例子:
import tensorflow as tf
w1 = tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1))
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print(sess.run(w1))
# 結果:
[[-0.81131822 1.48459876 0.06532937]
[-2.4427042 0.0992484 0.59122431]]
4、tf.reduce_sum(input_tensor, axis=None, keepdims=None,name=None,reduction_indices=None, keep_dims=None)
input_tensor:待求和的tensor;
axis:指定的維,如果不指定,則計算所有元素的總和;
keepdims:是否保持原有張量的維度,設置爲True,結果保持輸入tensor的形狀,設置爲False,結果會降低維度,如果不傳入這個參數,則系統默認爲False;
name:操作的名稱;
reduction_indices:在以前版本中用來指定軸,已棄用;
keep_dims:在以前版本中用來設置是否保持原張量的維度,已棄用;
例子:
tensor:
[[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]],
[[ 13 14 15 16]
[ 17 18 19 20]
[ 21 22 23 24]]]
tf.reduce_sum(tensor, axis=0) axis=0 說明是按第一個維度進行求和。那麼求和結果shape是3*4
[[1+13 2+14 3+15 4+16]
[5+17 6+18 7+19 8+20]
[9+21 10+22 11+23 12+24]]
依次類推,如果axis=1,那麼求和結果shape是2*4,即:
[[ 1 + 5 + 9 2 + 6+10 3 + 7+11 4 + 8+12]
[13+17+21 14+18+22 15+19+23 16+20+24]]
如果axis=2,那麼求和結果shape是2*3,即:
[[1+2+3+4 5+6+7+8 9+10+11+12]
[13+14+15+16 17+18+19+20 1+22+23+24]]