На собеседованиях часто просят найти ошибки в коде, связанном с обучением нейросетей. Давайте потренируемся.

На картинке кусок кода, в котором есть несколько ошибок. Посмотреть в тексте можно на странице.

Пишите найденные ошибки и идеи, как можно улучшить код в комментариях 👇

🍕 За правильные ответы отправим авторам большие пиццы😄

(доставка по РФ :)

Завтра в 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)
	...