Переменная ошибка (ы) O'Reilly Программирование PyTorch - PullRequest
0 голосов
/ 21 октября 2019

Я читаю публикацию О'Рейли за сентябрь 2019 года «Программирование Pytorch ..», описывающую простую линейную нейронную сеть для классификации изображений.

В открывающей модели есть ошибка в имени переменной (нетбеспокоит) target против targets, однако есть то, что кажется странным упущением объявления переменной, train_iterator (а также dev_iterator, не показано).

Я хочу знатьЧто это была за переменная train_iterator, которую они (я предполагаю) намеревались?

p27

def train(model, optimiser, loss_fn, train_loader, val_loader, epochs=20, device='cpu'):
    for epoch in range(epochs):
        training_loss = 0.0
        valid_loss = 0.0
        model.train()
        for batch in train_loader:
            optimizer.zero_grad()
            inputs, target = batch # Bug here for 'target'
            inputs = inputs.to(device)
            target = targets.to(device)
            output = model(inputs)
            loss = loss_fin(output, target)
            loss.backward()
            optimizer.step()
            training_loss += loss.data.item()
        training_loss /= len(train_iterator) # What is train_iterator?

, поэтому,

    inputs, target = batch

должно быть

    inputs, targets = batch

На шаге проверки ниже шага обучения (не показан):

    inputs, targets = batch
    ...
    targets = targets.to(device)

Это не важно, а код просто присваивается Cudas (GPU) или CPU.

Переменная train_iterator определяет потерю тренировки (важная диагностика). Я предполагаю, что между эпохой и пакетным итератором должен быть объявлен итератор, или это в обучающем цикле?

Примечания train_loader просто ссылается на загрузчик данных Pytorch. Модель относится к 3 линейным слоям с функцией активации ReLU.

...