1. ホーム
  2. tensorflow

[解決済み】Tensorflow: tf.get_variableはどのように動作するのでしょうか?

2022-01-25 17:18:05

質問

について読んだことがあります。 tf.get_variable これより 質問 と、tensorflowのサイトで公開されているドキュメントから少し引用しました。しかし、私はまだ明確ではなく、オンラインで答えを見つけることができませんでした。

どのように tf.get_variable はどのように機能するのでしょうか?例えば

var1 = tf.Variable(3.,dtype=float64)
var2 = tf.get_variable("var1",[],dtype=tf.float64)

という意味なのでしょうか? var2 もうひとつ と同様の初期化を行う変数です。 var1 ? それとも var2 のエイリアスです。 ヴァル1 (試してみましたが、そうではなさそうです)?

どのように ヴァル1 ヴァー2 の関連?

という変数がある場合、その変数はどのように構築されるのでしょうか? 取得 は、実際には存在しないのでしょうか?

解決方法は?

tf.get_variable(name) という新しい変数を作成します。 name (を追加します(もし name が現在のスコープに既に存在している場合、Tensorflowグラフに表示することができる。

あなたの例では パイソン という変数があります。 var1 .

のその変数名は テンソルフロー グラフは ** ではありません var1 であるが Variable:0 .

定義したノードにはそれぞれ名前がついていて、それを指定するか、tensorflowがデフォルトでつける(そして常に異なる)名前を指定することができます。このとき name の値が name プロパティを指定します。(すなわち print(var1.name) ).

2行目で Python変数 var2 その名前 テンソルフローのグラフで var1 .

スクリプト

import tensorflow as tf

var1 = tf.Variable(3.,dtype=tf.float64)
print(var1.name)
var2 = tf.get_variable("var1",[],dtype=tf.float64)
print(var2.name)

実際には印刷する。

Variable:0
var1:0

という変数(ノード)を定義したい場合。 var1 を作成し、そのノードへの参照を得るには、次のようにする。 できない 単に tf.get_variable("var1") という別の変数が作成されるからです。 var1_1 .

このスクリプト

var1 = tf.Variable(3.,dtype=tf.float64, name="var1")
print(var1.name)
var2 = tf.get_variable("var1",[],dtype=tf.float64)
print(var2.name)

を印刷します。

var1:0
var1_1:0

ノードへの参照を作成したい場合 var1 は、まず、あなたが。

  1. 置き換える必要があります。 tf.Variabletf.get_variable . で作成された変数は tf.Variable は共有できませんが、後者は可能です。

  2. を知ることができます。 scopevar1 があり、それを許可する reuse を参照宣言する際に、そのスコープの

コードを見るのが一番わかりやすい。

import tensorflow as tf

#var1 = tf.Variable(3.,dtype=tf.float64, name="var1")
var1 = tf.get_variable(initializer=tf.constant_initializer(3.), dtype=tf.float64, name="var1", shape=())
current_scope = tf.contrib.framework.get_name_scope()
print(var1.name)
with tf.variable_scope(current_scope, reuse=True):
    var2 = tf.get_variable("var1",[],dtype=tf.float64)
    print(var2.name)

を出力します。

var1:0
var1:0