コード例 #1
0
def test_fit_methods(
    X_wide,
    X_deep,
    target,
    method,
    X_wide_test,
    X_deep_test,
    X_test,
    pred_dim,
    probs_dim,
):
    wide = Wide(np.unique(X_wide).shape[0], pred_dim)
    deepdense = DeepDense(
        hidden_layers=[32, 16],
        dropout=[0.5, 0.5],
        deep_column_idx=deep_column_idx,
        embed_input=embed_input,
        continuous_cols=colnames[-5:],
    )
    model = WideDeep(wide=wide, deepdense=deepdense, pred_dim=pred_dim)
    model.compile(method=method, verbose=0)
    model.fit(X_wide=X_wide, X_deep=X_deep, target=target)
    preds = model.predict(X_wide=X_wide, X_deep=X_deep, X_test=X_test)
    if method == "binary":
        pass
    else:
        probs = model.predict_proba(X_wide=X_wide,
                                    X_deep=X_deep,
                                    X_test=X_test)
    assert preds.shape[0] == 100, probs.shape[1] == probs_dim
コード例 #2
0
def test_fit_with_deephead():
    wide = Wide(np.unique(X_wide).shape[0], 1)
    deepdense = DeepDense(
        hidden_layers=[32, 16],
        deep_column_idx=deep_column_idx,
        embed_input=embed_input,
        continuous_cols=colnames[-5:],
    )
    deephead = nn.Sequential(nn.Linear(16, 8), nn.Linear(8, 4))
    model = WideDeep(wide=wide,
                     deepdense=deepdense,
                     pred_dim=1,
                     deephead=deephead)
    model.compile(method="binary", verbose=0)
    model.fit(X_wide=X_wide,
              X_deep=X_deep,
              target=target_binary,
              batch_size=16)
    preds = model.predict(X_wide=X_wide, X_deep=X_deep, X_test=X_test)
    probs = model.predict_proba(X_wide=X_wide, X_deep=X_deep, X_test=X_test)
    assert preds.shape[0] == 32, probs.shape[1] == 2
コード例 #3
0
def test_predict_with_individual_component(wide, deepdense, deeptext,
                                           deepimage, X_wide, X_deep, X_text,
                                           X_img, target):

    model = WideDeep(wide=wide,
                     deepdense=deepdense,
                     deeptext=deeptext,
                     deepimage=deepimage)
    model.compile(method="binary", verbose=0)
    model.fit(
        X_wide=X_wide,
        X_deep=X_deep,
        X_text=X_text,
        X_img=X_img,
        target=target,
        batch_size=16,
    )
    # simply checking that runs and produces outputs
    preds = model.predict(X_wide=X_wide,
                          X_deep=X_deep,
                          X_text=X_text,
                          X_img=X_img)

    assert preds.shape[0] == 32 and "train_loss" in model.history._history
コード例 #4
0
        metrics=metrics,
    )

    X_wide_train, X_wide_test, X_deep_train, X_deep_test, y_train, y_test = train_test_split(
        X_wide, X_deep, target, test_size=0.2)

    model.fit(
        X_wide=X_wide_train,
        X_deep=X_deep_train,
        target=y_train,
        n_epochs=4,
        batch_size=64,
        val_split=0.2,
    )
    # # to save/load the model
    # torch.save(model, "model_weights/model.t")
    # model = torch.load("model_weights/model.t")

    preds = model.predict(X_wide_test, X_deep_test)
    accuracy = accuracy_score(y_test, preds)
    print(accuracy)
    # # to save/load the model
    # torch.save(model, "model_weights/model.t")
    # model = torch.load("model_weights/model.t")

    # # or via state dictionaries
    # torch.save(model.state_dict(), "model_weights/model_dict.t")
    # model = WideDeep(wide=wide, deepdense=deepdense)
    # model.load_state_dict(torch.load("model_weights/model_dict.t"))
    # # <All keys matched successfully>