我必须在训练之前首先预训练网络。我用自己的会话在单独的文件中使用代码,但是第一次会话的变量仍然继续存在并导致问题(因为我在一个“主”文件中运行这两个文件)。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_。显然,这并不适用于此。感谢您提供样品。 –