Как находить R^2 и MAE metrics в Pytorch?

    inputs_train_torch = torch.from_numpy(inputs_train).float()
    inputs_test_torch = torch.from_numpy(inputs_test).float()
    outputs_train_torch = torch.from_numpy(outputs_train).float()
    outputs_test_torch = torch.from_numpy(outputs_test).float()
    
    model = torch.nn.Sequential(
        torch.nn.Linear(3, 24),
        torch.nn.ReLU(),
        torch.nn.Linear(24, 24),
        torch.nn.ReLU(),
        torch.nn.Linear(24, 1)
        )
    criterion = torch.nn.MSELoss(reduction='mean')
    optimizer = torch.optim.Adam(model.parameters(), lr=0.09)
    for epoch in range(101):
        output = model(inputs_train_torch)
        loss = criterion(output, torch.reshape(outputs_train_torch, (5760, 1)))
        print('Epoch: ', epoch, 'Loss train: ', loss.item())
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
    for epoch in range(101):
        output = model(inputs_test_torch)
        loss = criterion(output, torch.reshape(outputs_test_torch, (2880, 1)))
        print('Epoch: ', epoch, 'Loss test: ', loss.item())
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()

Я уже нашел MSE, нужно найти MAE и R^2


Ответы (1 шт):

Автор решения: CrazyElf

Давайте вместе поищем. Гуглим сначала слово MSELoss, находим ссылку на документацию PyTorch на функцию MSELoss. Переходим на уровень выше, ищем там по слову MAE, находим функцию L1Loss - это и есть MAE как написано в её описании (насколько я помню терминологию мера L1 - это MAE, а L2 - это MSE, почему в Torch нет однообразия в названиях функций я не знаю).

С R^2 вот сложнее, в самом PyTorch я её сходу не нашёл, видимо нужно использовать например функцию R2Score из PyTorch Ignite.

→ Ссылка