Python 3.x 在训练预训练tensorflow模型的变量时调试优化运行

Python 3.x 在训练预训练tensorflow模型的变量时调试优化运行,python-3.x,debugging,tensorflow,jupyter-notebook,pre-trained-model,Python 3.x,Debugging,Tensorflow,Jupyter Notebook,Pre Trained Model,我加载一个预先训练好的模型,然后根据我的自定义损失只提取我想要优化(基本上是改变或微调)的可训练变量。问题是,当我向它传递一小批数据时,它只是挂起,没有任何进展。我使用Tensorboard进行可视化,但不知道在没有可用日志信息时如何调试。我在它周围放了一些基本的打印语句,但没有得到任何有用的信息 这是一段按顺序排列的代码 # Load and build the model model = skip_thoughts_model.SkipThoughtsModel(model_config,

我加载一个预先训练好的模型,然后根据我的自定义损失只提取我想要优化(基本上是改变或微调)的可训练变量。问题是,当我向它传递一小批数据时,它只是挂起,没有任何进展。我使用Tensorboard进行可视化,但不知道在没有可用日志信息时如何调试。我在它周围放了一些基本的打印语句,但没有得到任何有用的信息

这是一段按顺序排列的代码

# Load and build the model
model = skip_thoughts_model.SkipThoughtsModel(model_config, mode="train")
with tf.variable_scope("SkipThoughts"):
    model.build()
    theta = [v for v in tf.get_collection(tf.GraphKeys.MODEL_VARIABLES, scope='SkipThoughts') if "SkipThoughts" in v.name]

# F Representation using Skip-Thoughts model
opt_F = tf.train.AdamOptimizer(learning_rate).minimize(model.total_loss, var_list=[theta])

# Training
sess.run([opt_F], feed_dict = {idx: idxTensor})
模型来自于: 问题在于培训,即最后一步。我验证了θ列表不是空的,它有26个元素,比如。。。 SkipThoughts/解码器\u pre/gru\u cell/候选/层\u norm/w/测试版:0 Skiphoughts/解码器\u pre/gru\u cell/候选/层\u norm/w/伽马:0 技能思考/登录/权重:0 技巧性思维/逻辑/偏见:0 SkipThoughts/解码器\后/gru\ U单元/门/层\规范/w\ U h/测试版:0

而且,即使使用后,问题仍然存在。也许这真的需要很多时间,或者等待其他流程?所以,我也试着打破

tf.train.AdamOptimizer(learning_rate).minimize(model.total_loss, var_list=[theta]) 
踏入

gvs = tf.train.AdamOptimizer(learning_rate).compute_gradients(model.total_loss, var_list=theta) 
opt_F = opt.apply_gradients(gvs)
...
g = sess.run(gvs, feed_dict = {idx: idxTensor})
这样我就可以检查梯度是否是在第一个位置计算的,它被卡在了同一点上。除此之外,我还试着用一个以上的变量计算梯度,也试着用一维计算梯度,但问题仍然存在

我正在Azure集群上的IPython笔记本上运行这段代码,其中有1个GPU特斯拉K80。GPU的使用在整个执行过程中保持不变,并且没有内存不足错误

内核中断不起作用,唯一停止中断的方法是重新启动笔记本电脑。此外,如果我将此代码编译成Python文件,那么我也需要显式地终止该进程。然而,在任何这样的情况下,我都不会让堆栈跟踪知道它被卡住的确切位置!如何调试这样一个问题

在此方面的任何帮助和指点都将不胜感激