Я бы предложил следующие изменения:
for epoch in range(10):
for i, (X, y) in enumerate(train_loader):
model.train()
X, y = X.to(device), y.to(device)
pred = model(X)
loss1 = ce(pred, y)
for j in range(2):
model.eval()
X2, y2 = next(another_loader)
pred2 = model(X2)
new_loss = loss1
optimizer.zero_grad()
new_loss.backward()
optimizer.step()
Я бы также сказал, что вам не нужно new_loss = loss1
, но вы думаете, что вы включаете больше материала в свой оригинальный код, верно?
В любом случае, проверьте, помогают ли вам эти изменения.