[解決済み] tensorflowの名前スコープと変数スコープの違いは何ですか?
質問内容
これらの機能の違いは何ですか?
tf.variable_op_scope(values, name, default_name, initializer=None)
変数を作成するオペを定義するためのコンテキスト・マネージャを返します。 このコンテキストマネージャーは、与えられた値が同じグラフのものであることを確認し、そのグラフがデフォルトのグラフであることを確認し、名前スコープと変数スコープをプッシュします。
<ブロッククオート
tf.op_scope(values, name, default_name=None)
Python の op を定義するときに使用するコンテキスト・マネージャを返します。 このコンテキストマネージャは、与えられた値が同じグラフのものであることを検証し、そのグラフがデフォルトグラフであることを確認し、名前スコープをプッシュします。
<ブロッククオート
tf.name_scope(name)
のラッパーです。
Graph.name_scope()
はデフォルトのグラフを使用します。
参照
Graph.name_scope()
をご覧ください。
<ブロッククオート
tf.variable_scope(name_or_scope, reuse=None, initializer=None)
変数スコープのコンテキストを返します。 変数スコープを使用すると、新しい変数を作成したり、すでに作成されている変数を共有したりすることができます。詳しくは、変数スコープの使い方をご覧ください。ここでは、いくつかの基本的な例のみを紹介します。
解決するには?
まず、変数共有について簡単に紹介します。これは
TensorFlow
これは、コードの異なる部分でアクセスされた変数を、変数への参照を受け渡しすることなく共有することを可能にします。
メソッド
tf.get_variable
は、変数名を引数として、その名前の新しい変数を作成するか、以前に作成された変数を取得するために使用することができます。これは
tf.Variable
コンストラクタは呼び出されるたびに新しい変数を作成します (そして、そのような名前の変数がすでに存在する場合は、変数名にサフィックスを追加する可能性があります)。
変数共有の仕組みのために、別の種類のスコープ(変数スコープ)が導入されたのである。
その結果、2種類のスコープを持つことになる。
-
名前スコープ
を使用して作成された
tf.name_scope
-
変数スコープ
を使用して作成された
tf.variable_scope
どちらのスコープも、すべての操作に同じ効果があります。
tf.Variable
つまり、操作名や変数名の前にスコープが追加されます。
ただし、名前スコープが無視されるのは
tf.get_variable
. 次の例でそれを見ることができます。
with tf.name_scope("my_scope"):
v1 = tf.get_variable("var1", [1], dtype=tf.float32)
v2 = tf.Variable(1, name="var2", dtype=tf.float32)
a = tf.add(v1, v2)
print(v1.name) # var1:0
print(v2.name) # my_scope/var2:0
print(a.name) # my_scope/Add:0
を使用してアクセスした変数を配置する唯一の方法です。
tf.get_variable
のように、変数スコープを使用することです。
with tf.variable_scope("my_scope"):
v1 = tf.get_variable("var1", [1], dtype=tf.float32)
v2 = tf.Variable(1, name="var2", dtype=tf.float32)
a = tf.add(v1, v2)
print(v1.name) # my_scope/var1:0
print(v2.name) # my_scope/var2:0
print(a.name) # my_scope/Add:0
これにより、プログラムの異なる部分、異なる名前のスコープ内でも、簡単に変数を共有することができます。
with tf.name_scope("foo"):
with tf.variable_scope("var_scope"):
v = tf.get_variable("var", [1])
with tf.name_scope("bar"):
with tf.variable_scope("var_scope", reuse=True):
v1 = tf.get_variable("var", [1])
assert v1 == v
print(v.name) # var_scope/var:0
print(v1.name) # var_scope/var:0
アップデイト
バージョンr0.11現在。
op_scope
と
variable_op_scope
はいずれも
非推奨
で置き換えられ
name_scope
と
variable_scope
.
関連
-
[解決済み】Tensorflowは、Path変数が設定された状態でインストールされているにもかかわらず、「cudart64_90.dll」を見つけることができません。
-
Tensorflow protobufのバージョンエラー対策 (AttributeError: 'module' オブジェクトに 'Default' 属性がない)
-
tensorflow(6) mnist.train.next_batch() 関数解析
-
Tensorflowのエラーです。TypeError: 'NoneType'オブジェクトは呼び出し可能ではない
-
2021年最新。TensorFlow各GPUバージョン CUDAとcuDNN対応バージョン照合(最も簡潔なもの)。
-
tensorflowの学習における問題点
-
[解決済み] TensorFlowで2つのテンソルを水平に連結する方法とは?
-
[解決済み] Kerasのmodel.fit()とmodel.evaluate()の違いは何ですか?
-
[解決済み] tensorflowのtf.nn.max_poolのパディングの'SAME'と'VALID'の違いは何ですか?
-
[解決済み】TensorFlowとCUDAのバージョンの組み合わせで互換性があるのはどれ?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】TensorFlowで*.pbファイルを使用する方法とその動作は?
-
[解決済み] tensorboard: コマンドが見つかりません。
-
[解決済み] WSL2- $nvidia-smi コマンドが実行されない
-
ImportError: cannot import name 'get_config' How to solve this problem?
-
AttributeError: モジュール 'tensorflow' には 'placeholder' という属性がないことを解決する。
-
tensorflow import error ModuleNotFoundError: モジュール名 '_pywrap_tensorflow_internal' がありません。
-
[Proven Solution] AttributeError: module 'tensorflow' has no attribute '__version__'
-
[解決済み] [Solved] ImportError: libcublas.so.10.0: 共有オブジェクトファイルを開くことができません。そのようなファイルやディレクトリはありません
-
[解決済み] tf.contrib.seq2seq.sequence_loss のパラメータ。
-
[解決済み] Kerasでモデルウェイトを保存する:モデルウェイトとは?