示例#1
0
def test_inner_concatenate_data_should_merge_2d_with_3d():
    # Given
    data_inputs_3d, expected_outputs_3d = _create_data_source(SHAPE_3D)
    data_inputs_2d, expected_outputs_2d = _create_data_source(SHAPE_2D)
    data_container_2d = DataContainer(data_inputs=data_inputs_2d,
                                      expected_outputs=expected_outputs_2d)
    data_container_3d = DataContainer(data_inputs=data_inputs_3d, expected_outputs=expected_outputs_3d) \
        .add_sub_data_container('2d', data_container_2d)

    # When
    p = Pipeline(
        [InnerConcatenateDataContainer(sub_data_container_names=['2d'])])

    data_container_3d = p.handle_transform(data_container_3d,
                                           ExecutionContext())

    # Then
    assert data_container_3d.data_inputs.shape == (SHAPE_3D[0], SHAPE_3D[1],
                                                   SHAPE_3D[2] + 1)
    assert data_container_3d.expected_outputs.shape == (SHAPE_3D[0],
                                                        SHAPE_3D[1],
                                                        SHAPE_3D[2] + 1)
    assert np.array_equal(data_container_3d.data_inputs[..., -1],
                          data_container_2d.data_inputs)
    assert np.array_equal(data_container_3d.expected_outputs[..., -1],
                          data_container_2d.expected_outputs)
示例#2
0
def test_inner_concatenate_data_should_merge_1d_with_3d():
    # Given
    data_inputs_3d, expected_outputs_3d = _create_data_source(SHAPE_3D)
    data_inputs_1d, expected_outputs_1d = _create_data_source(SHAPE_1D)
    data_container_1d = DataContainer(data_inputs=data_inputs_1d,
                                      expected_outputs=expected_outputs_1d)
    data_container = DataContainer(data_inputs=data_inputs_3d, expected_outputs=expected_outputs_3d) \
        .add_sub_data_container('1d', data_container_1d)

    # When
    p = Pipeline(
        [InnerConcatenateDataContainer(sub_data_container_names=['1d'])])

    data_container = p.handle_transform(data_container, ExecutionContext())

    # Then
    broadcasted_data_inputs_1d = np.broadcast_to(
        np.expand_dims(data_container_1d.data_inputs, axis=-1),
        shape=(SHAPE_3D[0], SHAPE_3D[1]))
    broadcasted_expected_outputs_1d = np.broadcast_to(
        np.expand_dims(data_container_1d.expected_outputs, axis=-1),
        shape=(SHAPE_3D[0], SHAPE_3D[1]))

    assert np.array_equal(data_container.data_inputs[..., -1],
                          broadcasted_data_inputs_1d)
    assert np.array_equal(data_container.expected_outputs[..., -1],
                          broadcasted_expected_outputs_1d)

    assert data_container.data_inputs.shape == (SHAPE_3D[0], SHAPE_3D[1],
                                                SHAPE_3D[2] + 1)
    assert data_container.expected_outputs.shape == (SHAPE_3D[0], SHAPE_3D[1],
                                                     SHAPE_3D[2] + 1)
示例#3
0
def test_handle_predict_should_handle_transform_with_initial_is_train_mode_after_predict(
):
    tape_fit = TapeCallbackFunction()
    tape_transform = TapeCallbackFunction()
    p = Pipeline([
        TestOnlyWrapper(
            CallbackWrapper(MultiplyByN(2), tape_transform, tape_fit)),
        TrainOnlyWrapper(
            CallbackWrapper(MultiplyByN(4), tape_transform, tape_fit))
    ])
    data_container = DataContainer(data_inputs=np.array([1, 1]),
                                   expected_outputs=np.array([1, 1]))

    p.handle_predict(data_container=data_container.copy(),
                     context=ExecutionContext())
    data_container = p.handle_transform(data_container, ExecutionContext())

    assert np.array_equal(data_container.data_inputs, np.array([4, 4]))
示例#4
0
def test_outer_concatenate_data_should_merge_2d_with_3d():
    # Given
    data_inputs_3d, expected_outputs_3d = _create_data_source(SHAPE_3D)
    data_inputs_2d, expected_outputs_2d = _create_data_source(SHAPE_2D)
    data_container_2d = DataContainer(data_inputs=data_inputs_2d,
                                      expected_outputs=expected_outputs_2d)
    data_container = DataContainer(data_inputs=data_inputs_3d, expected_outputs=expected_outputs_3d) \
        .add_sub_data_container('2d', data_container_2d)

    # When
    p = Pipeline([ZipBatchDataContainer(sub_data_container_names=['2d'])])

    data_container = p.handle_transform(data_container, ExecutionContext())

    # Then
    for i, (first_di,
            second_di) in enumerate(zip(data_inputs_3d, data_inputs_2d)):
        assert np.array_equal(data_container.data_inputs[i][0], first_di)
        assert np.array_equal(data_container.data_inputs[i][1], second_di)

    for i, (first_eo, second_eo) in enumerate(
            zip(expected_outputs_3d, expected_outputs_2d)):
        assert np.array_equal(data_container.expected_outputs[i][0], first_eo)
        assert np.array_equal(data_container.expected_outputs[i][1], second_eo)