Tensorflow Math變數初始化

2021-08-02 08:53:07 字數 4826 閱讀 7309

對自行建立的變數以及一些方法中建立的內部使用的變數進行初始化的方法.

tensorflow中的變數初始化有兩類方法:

使用***x()方法生成乙個tensor, 將這個tensor作為tf.variable()中的initial_value引數的入參, 來初始化這個變數;

使用***x_initializer()建立乙個初始化方法, 指明一種初始化的方法, 但並不生成具體的tensor, 使用在tf.get_variable()和tf.variable_scope()等方法中, 其中的initializer引數指定為初始化方法, 則在環境中建立或獲取的變數都將使用這個方法進行初始化.

例如:

a = tf.variable(tf.random_uniform(shape=[2,2], minval=0.0, maxval=1.0, dtype=tf.float32), name="a")

b = tf.get_variable("b",

shape=[2,2],

initializer=tf.truncated_normal_initializer(mean=0.0, stddev=1.0, dtype=tf.float32))

with tf.variable_scope("test", initializer=tf.truncated_normal_initializer(mean=10.0, stddev=1.0, dtype=tf.float32)):

c = tf.get_variable("c", shape=[2,2])

with tf.session() as sess:

sess.run(tf.global_variables_initializer())

print("a:\n", a.eval())

print("b:\n", b.eval())

print("c:\n", c.eval())

'''結果:

a: [[ 0.93527687 0.17724955]

[ 0.93378794 0.20970833]]

b: [[ 0.26235873 -0.30409873]

[-1.76498365 -0.21139114]]

c: [[ 10.03858566 9.59233952]

[ 11.18356609 10.3871088 ]]

'''

'''

引數: tf.random_uniform()

shape: (must)初始化tensor的大小;

minval: 取值上限, tensor或與dtype相同的數值;

maxval: 取值下限, tensor或與dtype相同的數值;

dtype: 數值型別;

seed: 隨機種子;

name: op的名稱.

tf.random_uniform_initializer()

minval: 取值上限, tensor或與dtype相同的數值;

maxval: 取值下限, tensor或與dtype相同的數值;

dtype: 數值型別;

seed: 隨機種子;

輸出: tf.random_uniform():

初始化生成的tensor.

tf.random_uniform_initializer():

乙個initializer, 初始化變數的方法, 呼叫物件'__call__()'時生成初始化生成tensor.

'''

'''

引數: tf.truncated_normal()

shape: (must)初始化tensor的大小;

mean: 分布的均值, tensor或與dtype相同的數值;

stddev: 分布的標準差, tensor或與dtype相同的數值;

dtype: 數值型別;

seed: 隨機種子;

name: op的名稱.

tf.truncated_normal_initializer()

mean: 分布的均值, tensor或與dtype相同的數值;

stddev: 分布的標準差, tensor或與dtype相同的數值;

dtype: 數值型別;

seed: 隨機種子;

輸出: tf.truncated_normal():

初始化生成的tensor.

tf.truncated_normal_initializer():

乙個initializer, 初始化變數的方法, 呼叫物件'__call__()'時生成初始化生成tensor.

'''

'''

引數: tf.random_normal()

shape: (must)初始化tensor的大小;

mean: 分布的均值, tensor或與dtype相同的數值;

stddev: 分布的標準差, tensor或與dtype相同的數值;

dtype: 數值型別;

seed: 隨機種子;

name: op的名稱.

tf.random_normal_initializer()

mean: 分布的均值, tensor或與dtype相同的數值;

stddev: 分布的標準差, tensor或與dtype相同的數值;

dtype: 數值型別;

seed: 隨機種子;

輸出: tf.random_normal():

初始化生成的tensor.

tf.random_normal_initializer():

乙個initializer, 初始化變數的方法, 呼叫物件'__call__()'時生成初始化生成tensor.

'''

'''

引數: tf.zeros()

shape: (must)初始化tensor的大小;

dtype: 數值型別;

name: op的名稱.

tf.zeros_initializer()

dtype: 數值型別;

輸出: tf.zeros():

初始化生成的tensor.

tf.zeros_initializer():

乙個initializer, 初始化變數的方法, 呼叫物件'__call__()'時生成初始化生成tensor.

'''

'''

引數: tf.ones()

shape: (must)初始化tensor的大小;

dtype: 數值型別;

name: op的名稱.

tf.ones_initializer()

dtype: 數值型別;

輸出: tf.ones():

初始化生成的tensor.

tf.ones_initializer():

乙個initializer, 初始化變數的方法, 呼叫物件'__call__()'時生成初始化生成tensor.

'''

'''

引數: tf.constant()

value: (must)常數值, 可以為多維列表直接指定個元素的值;

shape: 初始化tensor的大小;

dtype: 數值型別;

name: op的名稱;

verify_shape: bool, false允許初始化時不指定shape大小.

tf.constant_initializer()

value: 常數值, 可以為多維列表直接指定個元素的值;

dtype: 數值型別;

verify_shape: bool, false允許初始化時不指定shape大小.

輸出: tf.constant():

初始化生成的tensor.

tf.constant_initializer():

乙個initializer, 初始化變數的方法, 呼叫物件'__call__()'時生成初始化生成tensor.

'''

'''

引數: factor: 預設為1.0, 校正縮放比例的成熟, 用於在不同啟用函式時進行調節;

seed: 隨機種子;

dtype: 數值型別.

輸出: 乙個initializer, 初始化變數的方法, 呼叫物件'__call__()'時生成初始化生成tensor.

'''

'''

引數: scale: 指定縮放因子, 正浮點數, 預設為1.0;

mode: 調整scale的方式, 在截斷正態分佈中調整標準差stddev引數, 在均勻分布中調整上下界限maxval;

distribution: 確定分布的形式, 'normal'表示截斷正態分佈, 'uniform'表示均勻分布;

seed: 隨機種子;

dtype: 資料型別, 只接受各種float型別.

輸出: 乙個initializer, 初始化變數的方法, 呼叫物件'__call__()'時生成初始化生成tensor.

'''

'''

引數: gain: 乘數因子, 對整體結果進行統一放大縮小;

dtype: 資料型別;

seed: 隨機種子.

輸出: 乙個initializer, 初始化變數的方法, 呼叫物件'__call__()'時生成初始化生成tensor.

'''

c 協變和抗變 C 中協變與抗變(逆變)

泛型在.net 2.0中正式的引入。在使用泛型的過程中,聯絡上物件導向的繼承性。往往很容易想當然敲出類似以下 list animallst new list 顯然這樣編譯是不通過的。雖然dog和animal之間有繼承性,但是list和list這兩個類之間並沒有繼承性。如果要解決這樣的問題,用上協變與...

協變和逆變

協變和逆變都是術語,前者指能夠使用比原始指定的派生型別的派生程度更大的型別,後者指能夠使用比原始指定的派生型別的派生程度更小的型別。using system using system.collections.generic using system.text class derived base s...

公變與專變

1 專變,是指專用變壓器供電模式,房屋售出後,專用變壓器作為小區內部公用設施,由業主委託物業公司等中介機構管理與維護,並代收電費。專變模式容易產生的問題是 1 小區電力配套設施由開發商自主建設,而供配電系統配置標準作為一種隱性的指標不被業主所重視和了解,很容易成為開發商節省投資的 重點物件 導致了小...