Advertisement
Guest User

Untitled

a guest
Dec 8th, 2019
330
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.57 KB | None | 0 0
  1. def train(num_epoch):
  2.     train_losses = []
  3.     test_losses = []
  4.     for i in range(num_epoch):
  5.         for X_batch, y_batch in batch_generator(X_train, y_train, 500):
  6.             # На лекции мы рассказывали, что дропаут работает по-разному во время обучения и реального предсказания
  7.             # Чтобы это учесть нам нужно включать и выключать режим обучения, делается это командой ниже
  8.             model.train(True)
  9.            
  10.             # Посчитаем предсказание и лосс
  11.             y_pred = model(torch.from_numpy(X_batch))
  12.             loss = loss_fn(y_pred, torch.from_numpy(y_batch))
  13.            
  14.             # зануляем градиент
  15.             optimizer.zero_grad()
  16.  
  17.             # backward
  18.             loss.backward()
  19.  
  20.             # ОБНОВЛЯЕМ веса
  21.             optimizer.step()
  22.            
  23.             # Запишем число (не тензор) в наши батчевые лоссы
  24.             train_losses.append(loss.item())
  25.            
  26.             # Теперь посчитаем лосс на тесте
  27.             model.train(False)
  28.             # Сюда опять же надо положить именно число равное лоссу на всем тест датасете
  29.             Y_pred = model(X_train)
  30.             test_losses.append(loss_fn(Y_pred,y_train).item())
  31.            
  32.     return train_losses, test_losses
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement