我正在研究这个code。
对于培训lpr,我们可以在lpr文件夹中使用train.py。
train.py使用trainer.py中的方法和类,例如CTCUtils, InputData, inference and LPRVocab.
我将打印内容放在LPRVocab
中,以查看代码的工作方式如下。
class LPRVocab:
@staticmethod
def create_vocab(train_list_path, val_list_path, use_h_concat=False, use_oi_concat=False):
print('create_vocab called ')
[vocab, r_vocab, num_classes] = LPRVocab._create_standard_vocabs(train_list_path, val_list_path)
if use_h_concat:
[vocab, r_vocab, num_classes] = LPRVocab._concat_all_hieroglyphs(vocab, r_vocab)
if use_oi_concat:
[vocab, r_vocab, num_classes] = LPRVocab._concat_oi(vocab, r_vocab)
return vocab, r_vocab, num_classes
@staticmethod
def _char_range(char1, char2):
"""Generates the characters from `char1` to `char2`, inclusive."""
for char_code in range(ord(char1), ord(char2) + 1):
yield chr(char_code)
# Function for reading special symbols
@staticmethod
def _read_specials(filepath):
characters = set()
with open(filepath, 'r') as file_:
for line in file_:
current_label = line.split(' ')[-1].strip()
characters = characters.union(re.findall('(<[^>]*>|.)', current_label))
return characters
@staticmethod
def _create_standard_vocabs(train_list_path, val_list_path):
print('_create_standard_vocabs called ')
chars = set().union(LPRVocab._char_range('A', 'Z')).union(LPRVocab._char_range('0', '9'))
print(chars)
print('for special characters')
chars = chars.union(LPRVocab._read_specials(train_list_path)).union(LPRVocab._read_specials(val_list_path))
print(chars)
print('for list characters')
chars = list(chars)
print(chars)
print('for sort characters')
chars.sort()
print(chars)
print('for append characters')
chars.append('_')
print(chars)
num_classes = len(chars)
print('num_classes '+str(num_classes))
vocab = dict(zip(chars, range(num_classes)))
print('vocab ')
print(vocab)
r_vocab = dict(zip(range(num_classes), chars))
r_vocab[-1] = ''
print('r_vocab ')
print(r_vocab)
return [vocab, r_vocab, num_classes]
但是我看不到任何打印内容。
然后我用
python -m pdb train.py
然后在trainer.py中设置断点。 断点永远不会被击中。 按键S也不会使其他文件详细。
为什么调试不起作用且打印无法打印到控制台? 我用的是python3.5。
答案 0 :(得分:0)
我建议以下内容:
无论您想调试的地方,将其放置:
import ipdb
ipdb.set_trace()
然后在ipython控制台上,创建您的类的实例,然后调用您需要调试的方法,它将停止在您的跟踪中