TensorFlow實戰之tf.truncated_normal與tf.random_normal
阿新 • • 發佈:2019-02-14
轉載自http://blog.csdn.net/u013713117/article/details/65446361
tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
- 1
從截斷的正態分佈中輸出隨機值。
生成的值服從具有指定平均值和標準偏差的正態分佈,如果生成的值大於平均值2個標準偏差的值則丟棄重新選擇。
在正態分佈的曲線中,橫軸區間(μ-σ,μ+σ)內的面積為68.268949%。
橫軸區間(μ-2σ,μ+2σ)內的面積為95.449974%。
橫軸區間(μ-3σ,μ+3σ)內的面積為99.730020%。
X落在(μ-3σ,μ+3σ)以外的概率小於千分之三,在實際問題中常認為相應的事件是不會發生的,基本上可以把區間(μ-3σ,μ+3σ)看作是隨機變數X實際可能的取值區間,這稱之為正態分佈的“3σ”原則。
在tf.truncated_normal中如果x的取值在區間(μ-2σ,μ+2σ)之外則重新進行選擇。這樣保證了生成的值都在均值附近。
引數:
- shape: 一維的張量,也是輸出的張量。
- mean: 正態分佈的均值。
- stddev: 正態分佈的標準差。
- dtype: 輸出的型別。
- seed: 一個整數,當設定之後,每次生成的隨機數都一樣。
- name: 操作的名字。
tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
- 1
從正態分佈中輸出隨機值。
引數:
- shape: 一維的張量,也是輸出的張量。
- mean: 正態分佈的均值。
- stddev: 正態分佈的標準差。
- dtype: 輸出的型別。
- seed: 一個整數,當設定之後,每次生成的隨機數都一樣。
- name: 操作的名字。
程式碼
a = tf.Variable(tf.random_normal([2,2],seed=1))
b = tf.Variable(tf.truncated_normal([2,2],seed=2))
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
print(sess.run(a))
print(sess.run(b))
輸出:
[[-0.81131822 1.48459876]
[ 0.06532937 -2.44270396]]
[[-0.85811085 -0.19662298]
[ 0.13895047 -1.22127688]]
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
指定seed之後,a的值不變,b的值也不變。