日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

tf.Variable 和 tf.get_variable的区别(2)

發布時間:2024/1/23 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tf.Variable 和 tf.get_variable的区别(2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??????? 上上篇博文也寫了這個話題,這次自己又敲了一下代碼,再次研究了一下關于tf.Variable()?和?tf.get_variable()?的區別,?我就先不說太多,先直接看看代碼,再來總結分析,下面代碼中注釋部分為輸出結果。

with?tf.variable_scope('aa')?as?scope:
????w?=?tf.get_variable("a1",?[1,?2])
????var?=?tf.Variable([0],?name='var1',?dtype=tf.float32)
????va?=?tf.Variable([0],?name='var1',?dtype=tf.float32)
????print(w.name)???#?aa/a1:0
????print(var.name)??#?aa/var1:0
????print(va.name)??#?aa/var1_1:0
with?tf.variable_scope('aa',?reuse=True):??#?如果?reuse=False則會報錯
????b?=?tf.get_variable('a1')
????print(w.name)??#?aa/a1:0

????不難看出這就是我們常說的?作用域共享變量,在同一個?variable_scope下,如果存在同名變量,tf.Variable()會自動處理,使之不重名,從而不會報錯;tf.get_variable()?則必須聲明?reuse?=?True?。如果在開啟reuse=True的一個變量作用域里面,使用一個之前定義好的變量作用域,則會跳過當前變量的作用域,保持預先存在的作用域不變。?tf.variable_scope?對op_name?以及?variable_name?都會被加上域名前綴,eg.?w.name?==?aa/a1,我們再來看下一段代碼:

with?tf.variable_scope('foo'):
????with?tf.name_scope('bar'):
????????v?=?tf.get_variable('v',?[1])
????????b?=?tf.Variable([2],?name='b')
????????w?=?1.0?+?v
print(w.name)
assert?v.name?==?'foo/v:0'
assert?b.name?==?'foo/bar/b:0'
assert?w.name?==?'foo/bar/add:0'

????這段代碼什么都不會輸出(當然沒有輸出,hh)也不會報錯,?說明assert?語句都通過了。這時你對 tf.variable_scope?對op_name?以及?variable_name?都會被加上域名前綴?這句話是不是就懂了?另外你應該還會發現?name_scope?影響?tf.Variable?以及?op_name,不影響tf.get_variable(所謂影響是指是否加上域名前綴)。需要指出的是?name_scope?的作用是為變量劃分范圍,在可視化中,這表示為一個層級。下次有時間說說?tensorboard?的時候我們可以細細說來。

總結

以上是生活随笔為你收集整理的tf.Variable 和 tf.get_variable的区别(2)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。