На собеседованиях часто просят найти ошибки в коде, связанном с обучением нейросетей. Давайте потренируемся.
На картинке кусок кода, в котором есть несколько ошибок. Посмотреть в тексте можно на странице.
Пишите найденные ошибки и идеи, как можно улучшить код в комментариях 👇
🍕 За правильные ответы отправим авторам большие пиццы😄
(доставка по РФ :)
Завтра в 16:00 по мск подведем итоги и выложим правильные ответы 🙂
def train(
train_dataset: torch.utils.data.Dataset,
test_dataset: torch.utils.data.Dataset,
dim_inner: int,
num_classes: int,
batch_size: int,
lr: float,
):
...
model = nn.Sequential(nn.Linear(features, dim_inner),
nn.ReLU(),
nn.BatchNorm1d(dim_inner),
nn.Linear(dim_inner, num_classes),
nn.Softmax()
).cuda()
train_dataloader = DataLoader(train_dataset, batch_size=batch_size)
test_dataloader = DataLoader(test_dataset, batch_size=batch_size)
loss_fn = nn.CrossEntropyLoss(reduction = 'sum')
opt = optim.SGD(model.parameters(), lr=lr)
test_losses = []
for epoch in tqdm(range(epoch)):
for x, y in train_dataloader:
opt.zero_grad()
output = model(x)
loss = loss_fn(output, torch.argmax(y, dim=1))
loss.backward()
opt.step()
for x, y in test_dataloader:
output = model(x)
loss = loss_fn(output, torch.argmax(y, dim=1))
test_losses.append(loss)
...