我必須在訓練之前首先預訓練網絡。我用自己的會話在單獨的文件中使用代碼,但是第一次會話的變量仍然繼續存在並導致問題(因爲我在一個「主」文件中運行這兩個文件)。Tensorflow:如何給變量範圍
我可以通過簡單地運行我的pretrain文件來解決這個問題,該文件保存經過訓練的圖層,然後運行加載保存的圖層的訓練文件。但是,能夠在一個步驟中完成這兩件事情。我怎樣才能'斷開鏈接'並避免具有全局範圍的不需要的變量?
「主」文件看起來是這樣的:
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()
沒有一個代碼片段,我最初的反應「變量顯示不同的腳本了」將假定您從做' pretrain導入*'。 –
添加了示例代碼,儘管我沒有看到您想要創建的內容。 '*'會導入所有模塊,它與函數中的python變量無關。 – Nimitz14
就像我說的,這是一個盲目的猜測,沒有看到代碼。我試圖做的是如果「** GLOBAL_COUNTER **」是_util_中的變量,那麼'from util import *'會將「** GLOBAL_COUNTER **」導入_main_file.py_。顯然,這並不適用於此。感謝您提供樣品。 –