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)
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)
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]))
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)