Я следую и реализую код из этого короткого руководства по Torchtext, что удивительно ясно, учитывая плохую документацию по Torchtext.
Когда Итератор создан (пакетный генератор), он предлагает создать оболочку для создания более многократно используемого кода. (См. Шаг 5 в руководстве).
Код содержит удивительно длинную и странную строку, которую я не понимаю и которая вызывает SyntaxError: неверный синтаксис . Кто-нибудь знает, что происходит?
(проблемная строка начинается с: если self.y_vars & amp; amp; lt; g [...])
class BatchWrapper:
def __init__(self, dl, x_var, y_vars):
self.dl, self.x_var, self.y_vars = dl, x_var, y_vars # we pass in the list of attributes for x <g class="gr_ gr_3178 gr-alert gr_spell gr_inline_cards gr_disable_anim_appear ContextualSpelling ins-del" id="3178" data-gr-id="3178">and y</g>
def __iter__(self):
for batch in self.dl:
x = getattr(batch, self.x_var) # we assume only one input in this wrapper
if self.y_vars is <g class="gr_ gr_3177 gr-alert gr_gramm gr_inline_cards gr_disable_anim_appear Grammar replaceWithoutSep" id="3177" data-gr-id="3177">not</g> None: # we will concatenate y into a single tensor
y = torch.cat([getattr(batch, feat).unsqueeze(1) for feat in self.y_vars], dim=1).float()
else:
y = torch.zeros((1))
yield (x, y)
def __len__(self):
return len(self.dl)