1. 程式人生 > 程式設計 >tensorflow之變數初始化(tf.Variable)使用詳解

tensorflow之變數初始化(tf.Variable)使用詳解

預設本系列的的讀者已經初步熟悉tensorflow。

我們通過tf.Variable構造一個variable新增進圖中,Variable()建構函式需要變數的初始值(是一個任意型別、任意形狀的tensor),這個初始值指定variable的型別和形狀。通過Variable()建構函式後,此variable的型別和形狀固定不能修改了,但值可以用assign方法修改。

如果想修改variable的shape,可以使用一個assign op,令validate_shape=False.

通過Variable()生成的variables就是一個tensor,可以作為graph中其他op的輸入。另外,Tensor類過載的所有操作符都被轉載到此variables中,所以可以通過對變數呼叫方法,將節點新增到圖形中。

import tensorflow as tf

#創造variable.<initial-value>指定這個variable的type和shape
w = tf.Variable(<initial-value>,name=<optional-name>)

# 接著就可以把這個variable當做tensor運用在graph中.
y = tf.matmul(w,...another variable or tensor...)

z = tf.sigmoid(w + y)

# 通過`assign()`和相關方法給這個w賦值
w.assign(w + 1.0)
w.assign_add(1.0)

一個graph啟動之前所有的variables必須都要賦值,實際上,變數初始化操作op只是一個賦值op,是將variables的初始值賦給variables自身。

# 在session中啟動graph.
with tf.Session() as sess:
 # variable初始化.
 sess.run(w.initializer)
 # ...現在可以執行使用'w'的op...

給variables初始化最簡單的方法就是global_variables_initializer(),可以直接初始化所有variables:

# 初始化所有variables 的op
init_op = tf.global_variables_initializer()

# 在session中啟動graph.
with tf.Session() as sess:
 # 啟動這個op
 sess.run(init_op)
 # ...現在可以執行使用variables的op...

但有時一個變數的初始化依賴於其他變數的初始化,但是為了確保初始化順序不能錯,可以使用initialized_value()。

以上這篇tensorflow之變數初始化(tf.Variable)使用詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。