def test_feature_extraction(device_id):
    if cntk_device(device_id).type() != DeviceKind_GPU:
        pytest.skip('test only runs on GPU') # due to batch normalization in ResNet_18
    try_set_default_device(cntk_device(device_id))

    base_path = os.path.dirname(os.path.abspath(__file__))
    externalData = 'CNTK_EXTERNAL_TESTDATA_SOURCE_DIRECTORY' in os.environ
    if externalData:
        extPath = os.environ['CNTK_EXTERNAL_TESTDATA_SOURCE_DIRECTORY']
        print("Reading data and model from %s" % extPath)
        model_file = os.path.join(extPath, *"PreTrainedModels/ResNet/v1/ResNet_18.model".split("/"))
        map_file = os.path.join(extPath, *"Image/CIFAR/v0/cifar-10-batches-py/test_map.txt".split("/"))
    else:
        model_file = os.path.join(base_path, *"../../../../PretrainedModels/ResNet_18.model".split("/"))
        map_file = os.path.join(base_path, *"../../../../Examples/Image/DataSets/CIFAR-10/test_map.txt".split("/"))

    original_dir = os.curdir
    try:
        os.chdir(os.path.join(os.path.dirname(map_file), '..'))

        minibatch_source = create_mb_source(224, 224, 3, map_file)
        node_name = "z.x"
        output_file = os.path.join(base_path, "layerOutput.txt")
        eval_and_write(model_file, node_name, output_file, minibatch_source, num_objects=2)

        expected_output_file = os.path.join(base_path, "feature_extraction_expected_output.txt")
        output = np.fromfile(output_file)
        expected_output = np.fromfile(expected_output_file)

        assert np.allclose(output, expected_output, atol=TOLERANCE_ABSOLUTE)
    finally:
        os.chdir(original_dir)
def test_feature_extraction(device_id):
    if cntk_device(device_id).type() != DeviceKind_GPU:
        pytest.skip('test only runs on GPU') # due to batch normalization in ResNet_18
    try_set_default_device(cntk_device(device_id))

    base_path = os.path.dirname(os.path.abspath(__file__))
    externalData = 'CNTK_EXTERNAL_TESTDATA_SOURCE_DIRECTORY' in os.environ
    if externalData:
        extPath = os.environ['CNTK_EXTERNAL_TESTDATA_SOURCE_DIRECTORY']
        print("Reading data and model from %s" % extPath)
        model_file = os.path.join(extPath, *"PreTrainedModels/ResNet/v1/ResNet_18.model".split("/"))
        map_file = os.path.join(extPath, *"Image/CIFAR/v0/cifar-10-batches-py/test_map.txt".split("/"))
    else:
        model_file = os.path.join(base_path, *"../../../../Examples/Image/PretrainedModels/ResNet_18.model".split("/"))
        map_file = os.path.join(base_path, *"../../../../Examples/Image/DataSets/CIFAR-10/test_map.txt".split("/"))

    original_dir = os.curdir
    try:
        os.chdir(os.path.join(os.path.dirname(map_file), '..'))

        minibatch_source = create_mb_source(224, 224, 3, map_file)
        node_name = "z.x"
        output_file = os.path.join(base_path, "layerOutput.txt")
        eval_and_write(model_file, node_name, output_file, minibatch_source, num_objects=2)

        expected_output_file = os.path.join(base_path, "feature_extraction_expected_output.txt")
        output = np.fromfile(output_file)
        expected_output = np.fromfile(expected_output_file)

        assert np.allclose(output, expected_output, atol=TOLERANCE_ABSOLUTE)
    finally:
        os.chdir(original_dir)