tensorflow的變數作用域

2022-06-08 09:15:14 字數 1478 閱讀 2666

一、由來

深度學習中需要使用大量的變數集,以往寫**我們只需要做全域性限量就可以了,但在tensorflow中,這樣做既不方便管理變數集,有不便於封裝,因此tensorflow提供了一種變數管理方法:變數作用域機制

二、兩個重要api

tf.get_variable(name, shape=none)        # 根據給定的名字建立或返回乙個變數

tf.variable_scope(name_or_scope, reuse=none)  # 將name_or_scope下的所有變數組成乙個命名空間  

三、解讀

先說第乙個api

tf.get_variable(name, shape=none)這個方法在建立變數時與tf.variable()完全相同,區別在於它還會搜尋是否有同名變數;

1

import

tensorflow as tf23

4 with tf.variable_scope('

const'):

5 a = tf.get_variable('

a', [1], initializer=tf.constant_initializer(1.))

再說第二個api

這個方法最重要的引數時reuse,有三個取值:none、true、tf.auto_reuse

reuse = none:繼承父類的reuse標誌

reuse = true:只能復用,不能建立

1

import

tensorflow as tf23

4 with tf.variable_scope('

const'):

5 a = tf.get_variable('

a', [1])

67 with tf.variable_scope('

const

', reuse=tf.auto_reuse):

8 b = tf.get_variable('

a', [1])910

print(a==b) #

true

reuse = tf.auto_reuse:沒有就建立,有了就復用,這是最安全的用法

1

import

tensorflow as tf23

4def

test():

5 with tf.variable_scope('

const

', reuse=tf.auto_reuse):

6 a = tf.get_variable('

a', [1])78

returna9

10 x = test() #

沒有就建立

11 y = test() #

有了就復用

12print(x==y) #

true

Tensorflow 模組的作用

1,在機器學習中,我們常常需要把訓練好的模型儲存起來,這樣在進行決策時直接將模型讀出,而不需要重新訓練模型,這樣就大大節約了時間。python提供的pickle模組就很好地解決了這個問題,它可以序列化物件並儲存到磁碟中,並在需要的時候讀取出來,任何物件都可以執行序列化操作。pickle模組中最常用的...

Tensorflow 變數的共享

tensorflow exp example sparse tensor classification train validate.py 當你需要train的過程中validate的時候,如果用placeholder來接收輸入資料 那麼乙個compute graph可以完成這個任務。如果你用的是t...

Tensorflow 變數的共享

tensorflow exp example sparse tensor classification train validate.py 當你需要train的過程中validate的時候,如果用placeholder來接收輸入資料 那麼乙個compute graph可以完成這個任務。如果你用的是t...