【发布时间】:2016-06-25 17:32:36
【问题描述】:
我必须先对网络进行预训练,然后再对其进行训练。我使用带有自己会话的单独文件中的代码来执行此操作,但是第一个会话中的变量仍然会被转移并导致问题(因为我在一个“主”文件中运行这两个文件)。
我可以通过简单地运行我的预训练文件来保存训练的层,然后运行我的训练文件来加载保存的层来解决这个问题。但是能够一步完成这两件事会很好。如何“断开链接”并避免具有全局范围的不需要的变量?
“主”文件如下所示:
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()
【问题讨论】:
-
如果没有代码 sn-p,我对“变量显示在不同的脚本中”的最初反应是假设您正在执行
from pretrain import *。 -
添加了示例代码,虽然我不明白你想要表达什么观点。
*将导入所有模块,它与函数中的 python 变量无关。 -
就像我说的,这是一个盲目的猜测,没有看到代码。我想要说明的一点是,如果“GLOBAL_COUNTER”是util 中的一个变量,那么
from util import *会将“GLOBAL_COUNTER”导入main_file.py。但是,显然,这不适用于这里。感谢您提供样品。
标签: python tensorflow