我在pdb中运行Tensorflow的序列到序列教程来弄清楚它是如何工作的。我正在尝试在需要多行参数的函数内硬编码断点,这样我就不必通过所有参数进行调试。但是,pdb似乎只是跳过了硬编码的断点。
主文件是translate.py
,我在seq2seq_model.py
中调用构造函数。相关代码如下所示:
# Sampled softmax only makes sense if we sample less than vocabulary size.
pdb.set_trace()
if num_samples > 0 and num_samples < self.target_vocab_size:
w_t = tf.get_variable("proj_w",[self.target_vocab_size,size],dtype=dtype)
w = tf.transpose(w_t)
b = tf.get_variable("proj_b", [self.target_vocab_size], dtype=dtype)
output_projection = (w, b)
def sampled_loss(labels, inputs):
labels = tf.reshape(labels, [-1, 1])
# We need to compute the sampled_softmax_loss using 32bit floats to
# avoid numerical instabilities.
local_w_t = tf.cast(w_t, tf.float32)
local_b = tf.cast(b, tf.float32)
local_inputs = tf.cast(inputs, tf.float32)
return tf.cast(
tf.nn.sampled_softmax_loss(local_w_t, local_b, local_inputs, labels,
num_samples, self.target_vocab_size), dtype)
softmax_loss_function = sampled_loss
更新:当我在调试器中键入pdb.set_trace()
时,带有被调用函数的文件中的list
行不会出现。我认为这个问题与此有关。