tf.get_variable_scope() 共通の使用法
2022-02-16 20:26:59
我々は、tensorflowが一度グラフを構築すると、学習中にそれを変更することができないことを知っている。そして、一度入力がグラフに追加されると、データはパラメータのセットを通して流れ、そのパラメータのセットはその入力インターフェースから送り込まれたデータに対してのみ働くことができる。この時点で別のデータセット、つまりキューが与えられた場合、このキュー内のデータは前回の入力キューと同じルートを通るようにしたい、言い換えれば、次のような実装にしたい。
input_1 = tf.placeholder(...)
out_1 = model(input_1)
input_2 = tf.placeholder(...)
out_2 = model(input_2)
この場合、エラーになります。次のコードを見てみましょう。
import tensorflow as tf
import vgg
inputs_1 = tf.random_normal([10,224,224,3])
inputs_2 = tf.random_normal([10,224,224,3])
with tf.variable_scope('vgg_16') :
net ,end_points = vgg.vgg_16(inputs_1,100,False)
# tf.get_variable_scope().reuse_variables()
net_, end_points_ = vgg.vgg_16(inputs_2,100,False)
with tf.Session() as sess:
print("no error")
上記のコードが正しい場合、エラーなしで終了します。
しかし、エラーメッセージはこのようなものです。
ValueError: Variable vgg_16/vgg_16/conv1/conv1_1/weights already exists, disallowed.
Did you mean to set reuse=True or reuse=tf.AUTO_REUSE in VarScope?
すでに存在している変数だから、こうやってもう一度生成することはできないということです。実は、最初の入力が行って、最初の入力が送ったデータに対してのみ使用できる一連の変数を生成したからなのです。今度は2番目の入力が、1番目の入力に対応するパラメータを使いたいのですが、それは不可能です。そこで、このコメント行を追加することで解決します。
import tensorflow as tf
import vgg
inputs_1 = tf.random_normal([10,224,224,3])
inputs_2 = tf.random_normal([10,224,224,3])
with tf.variable_scope('vgg_16') :
net ,end_points = vgg.vgg_16(inputs_1,100,False)
tf.get_variable_scope().reuse_variables()
net_, end_points_ = vgg.vgg_16(inputs_2,100,False)
with tf.Session() as sess:
print("no error")
tf.get_variable_scope().reuse_variables() は現在の variable_scope の下で reuse = True に設定します、これはその名の通り、2つの入力が変数を共有できることを意味します。
関連
-
Running tensorflow program prompts Your CPU supports instructions that this TensorFlow binary was not compiled to use:
-
undefinedtensorflowお使いのCPUは、このTensorFlowバイナリが使用するようにコンパイルされていない命令をサポートしています。AVX2
-
undefinedエラーを解決してください。お使いのCPUは、このTensorFlowバイナリが使用するためにコンパイルされていない命令をサポートしています。AVX AVX2
-
EnvironmentErrorのため、パッケージをインストールできませんでした。[Errno 13] パーミッションが拒否された問題を解決しました。
-
TypeError: int() の引数は、文字列、バイトのようなオブジェクト、または数値でなければならず、'map' ではありません。
-
TensorFlowの問題:AttributeError:'NoneType'オブジェクトには'dtype'という属性がない。
-
TensorflowでProcess finished with exit code -1073741819 (0xC0000005)が発生した場合の解決策。
-
GPU版TensorFlowの正常なインストールをテストします。
-
TensorFlow学習 - Tensorflowオブジェクト検出API (win10, CPU)
-
Keras-Yolo v3 のエラーを解決する。AttributeError: モジュール 'keras.backend' には 'control_flow_ops' という属性がありません。
最新
-
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 実装 サイバーパンク風ボタン