def test_nested_multioutputs_train():
    model = multioutputs.MultiOutputs(
        multioutputs.MultiOutputs(LearnOutput(1.0), 2), 2)
    model.train([None], numpy.array([[[1, 2], [3, 4]]]))
    model.logging = False

    assert model.activate([]) == [[1, 2], [3, 4]]
def test_get_error_unusual_targets_shape():
    from learning import error

    model = multioutputs.MultiOutputs([
        helpers.SetOutputModel([1.0]),
        helpers.SetOutputModel([1.0, 1.0, 1.0])
    ])
    assert validation.get_error(model, [[]], [[[1.0], [1.0, 1.0, 1.0]]],
                                error_func=MeanSquaredError()) == 0.0
    assert validation.get_error(model, [[]], [[[1.0], [0.0, 0.0, 0.0]]],
                                error_func=MeanSquaredError()) == 0.5
def test_serialize_unserialize():
    dataset = (numpy.random.random((10, 10)), numpy.random.random((10, 2, 10)))

    model = multioutputs.MultiOutputs(MLP((10, 2, 10)), 2)
    unserialized_model = multioutputs.MultiOutputs.unserialize(
        model.serialize())

    assert isinstance(unserialized_model, multioutputs.MultiOutputs)
    assert (helpers.fix_numpy_array_equality([
        model.activate(inp_vec) for inp_vec in dataset[0]
    ]) == helpers.fix_numpy_array_equality(
        [unserialized_model.activate(inp_vec) for inp_vec in dataset[0]]))
def test_multioutputs_train():
    model = multioutputs.MultiOutputs(LearnOutput(1.0), 2)
    model.train([None], numpy.array([[-1, 1]]))

    assert model.activate([]) == [-1, 1]
def test_multioutputs_activate():
    model = multioutputs.MultiOutputs(helpers.SetOutputModel(1), 2)
    assert model.activate([None]) == [1, 1]
def test_multioutputs_list_of_models():
    model = multioutputs.MultiOutputs([LearnOutput(1.0), LearnOutput(1.0)])
    model.train([[None]], numpy.array([[-1, 1]]))

    assert model.activate([]) == [-1, 1]