Я смотрю на этот код .
. Для обучения lpr мы можем использовать train.py в папке lpr.
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.