Это может быть проблема с вложенными циклами, как указано в этом ответе .Они предлагают использовать return
, но тогда ваш цикл должен быть записан как функция.Если вам это не понравится, вы можете попробовать использовать различные уровни операторов прерывания, как показано в некоторых ответах.Используя конструкцию for, else ( объяснено здесь ), я думаю, что ваш код будет выглядеть следующим образом
for e in range(NUM_EPOCHS):
en_initial_states = encoder.init_states(BATCH_SIZE)
for batch, (source_seq, target_seq_in, target_seq_out) in enumerate(dataset.take(-1)):
loss = train_step(source_seq, target_seq_in,
target_seq_out, en_initial_states)
if batch % 100 == 0:
print('Epoch {} Batch {} Loss {:.4f}'.format(
e + 1, batch, loss.numpy()))
try:
test_target_text,net_words = predict()
except Exception:
continue
if loss <=0.0001:
break
else:
continue ###executed if inner loop did NOT break
break ###executed if inner loop DID break