【问题标题】:How to add a Validation and Test Set in Pytorch Model?如何在 Pytorch 模型中添加验证和测试集?
【发布时间】:2020-04-25 03:16:08
【问题描述】:

我有一个非线性回归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()

【问题讨论】:

  • 对于初学者,您是否为您的数据实现了Dataset
  • 是的。 x = torch.from_numpy(x).float() y = torch.from_numpy(y).float()

标签: python python-3.x pytorch jupyter-lab


【解决方案1】:

有很多方法可以做到这一点。你可以使用@Shai suggested,我想添加我想做的。我经常使用train_test_split 将我的数据拆分为训练和测试,然后继续将我的训练和测试数据转换为TensorDataset

如果您喜欢更简单的解决方案,可以查看skorch,它是 pytorch 的 scikit learn 包装器。我发现它易于使用,更像 keras API,skorch 会在您开始训练时自动实现训练测试拆分,但您也可以将自定义训练和测试集传递给它。

【讨论】:

  • 泰。拆分数据集不是问题,问题是添加验证和测试分析代码。在我的案例中如何编写添加验证和测试分析的代码行?
  • @rerereL。 skorch 为您编写代码并将其记录在类似格式的表格中,以显示每个 epoch 中有效和训练损失/指标的进度。否则,如果您只使用 pytorch,那么您可以自己编写它,这并不难,它只取决于您要监控的内容。 github上有很多例子
【解决方案2】:

数据的训练/验证/测试拆分与模型“正交”。

要管理用于训练/测试的数据,您可能需要使用 pytorch 的 TensorDataset。然后您可能会发现Subset 可用于将数据集拆分为训练/验证/测试子集。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    • 2017-05-28
    • 2016-02-24
    • 2015-10-09
    • 2019-02-10
    • 2018-10-16
    相关资源
    最近更新 更多