トレーニングを受ける前に、まずネットワークをプリトレーニングする必要があります。私は独自のセッションで別々のファイルでコードを使用していますが、最初のセッションの変数は引き継がれて問題を引き起こしています(これらのファイルを両方とも 'メイン'ファイル内で実行しているため)。Tensorflow:変数のスコープを与える方法
トレーニングされたレイヤーを保存している私のプリトレインファイルを実行して、保存したレイヤーをロードするトレーニングファイルを実行するだけで、この問題を回避できます。しかし、これらの2つのことをワンステップ。どのように私は 'リンクを壊すことができ、グローバルスコープの不要な変数を避けることができますか?
「メイン」ファイルは次のようなものになります。私が集まるところでは
from util import pretrain_nn
from NN import Network
shape = [...]
layer_save_file = ''
data = get_data()
# Trains and saves layers
pretrain_nn(shape, data, layer_save_file)
# If I were to print all variables (using tf.all_variables)
# variables only used in pretrain_nn show up
# (the printing would be done inside `Network`)
NN = Network(shape, pretrain=True, layer_save_file)
NN.train(data)
# Doesn't work because apparently some variables haven't been initialized.
NN.save()
、私の最初の反応は、「変数が別のスクリプトに現れている」あなたはから 'やっていると仮定するだろうしますプリトレインインポート*。 –
サンプルコードを追加しましたが、どの点を作成しようとしているのか分かりません。 '*'はすべてのモジュールをインポートしますが、関数内のpython変数とは関係ありません。 – Nimitz14
私が言ったように、コードを見ることなく、盲目的な推測でした。私が作ろうとしていたのは、 "** GLOBAL_COUNTER **"が_util_の変数であれば、 "from util import *"は "** GLOBAL_COUNTER **"を_main_file.py_にインポートすることでした。明らかに、それはここでは当てはまりません。サンプルを提供していただきありがとうございます。 –