Как добавить набор для проверки и тестирования в модель Pytorch? - PullRequest
0 голосов
/ 07 января 2020

У меня есть нелинейная регрессия Model ANN( X = [1000,3] , Y = [1000,8] ) с одним скрытым Layer(Nh = 6).

Как добавить валидацию (набор данных 10%) и набор тестов (набор данных 10%) в эту модель?

Модель:

N, D_in, H, D_out = x.shape[0], x.shape[1], 6, y.shape[1]

model = nn.Sequential(OrderedDict([ ('fc1', nn.Linear(D_in, H)), 
                                    #('Sig', nn.Sigmoid()),
                                    ('ISRU', ISRU()), # Add ISRU
                                    ('fc2', nn.Linear(H, D_out))]))

# Error -----
loss_fn = torch.nn.L1Loss(reduction='mean')

# Train -----
optimizer = torch.optim.Adam(model.parameters(), lr=1,eps=2**(-EPS))
epoch = 250
for t in range(epoch):
    # Forward pass: compute predicted y by passing x to the model.
    clear_output(wait=True)
    y_pred = model(X)

    # Compute and print loss.
    loss = loss_fn(y_pred, Y)
    if t % 100 == 99:
        print(t, loss.item())

    optimizer.zero_grad() ;
    loss.backward() ;
    optimizer.step() ;
if loss.item() < diff : lista = np.vstack((lista, [loss.item(),2,EPS])) ; diff = loss.item()

Ответы [ 2 ]

2 голосов
/ 07 января 2020

Обучающие / проверочные / тестовые разбиения данных "ортогональны" модели.

Для управления вашими данными для обучения / тестирования вы можете использовать Pytorch's TensorDataset. Тогда вы можете найти Subset полезным для разбиения набора данных на подмножества поезд / проверка / тестирование.

0 голосов
/ 07 января 2020

Есть много способов сделать это. Вы можете использовать то, что @ Shai предложил , я хочу добавить то, что я хотел бы сделать. Я часто использую train_test_split , чтобы разделить мои данные на поезда и тесты, а затем перейти к преобразованию моих данных поездов и тестов в TensorDataset

, если вам нравится более простое решение, Вы можете взглянуть на skorch это оболочка Scikit Learn для Pytorch. Я нахожу его простым в использовании и, более того, подобно API-интерфейсу keras, skorch автоматически реализует разделение теста поезда, когда вы начинаете тренировку, но вы также можете передать ему свой собственный поезд и набор тестов.

...