def test_cifar_resnet_distributed_error(device_id, is_1bit_sgd): if cntk_device(device_id).type() != DeviceKind_GPU: pytest.skip('test only runs on GPU') set_default_device(cntk_device(device_id)) if not is_1bit_sgd: pytest.skip('test only runs in 1-bit SGD') try: base_path = os.path.join(os.environ['CNTK_EXTERNAL_TESTDATA_SOURCE_DIRECTORY'], *"Image/CIFAR/v0/cifar-10-batches-py".split("/")) except KeyError: base_path = os.path.join( *"../../../../Examples/Image/DataSets/CIFAR-10".split("/")) base_path = os.path.normpath(base_path) from _cntk_py import set_computation_network_trace_level, set_fixed_random_seed, force_deterministic_algorithms set_computation_network_trace_level(1) set_fixed_random_seed(1) # BUGBUG: has no effect at present # TODO: remove debugging facilities once this all works #force_deterministic_algorithms() # TODO: do the above; they lead to slightly different results, so not doing it for now test_error = train_and_evaluate(base_path, total_epochs=5) expected_test_error = 0.5 assert np.allclose(test_error, expected_test_error, atol=TOLERANCE_ABSOLUTE)
def test_cifar_resnet_distributed_error(device_id, is_1bit_sgd): if cntk_device(device_id).type() != DeviceKind_GPU: pytest.skip('test only runs on GPU') set_default_device(cntk_device(device_id)) if not is_1bit_sgd: pytest.skip('test only runs in 1-bit SGD') try: base_path = os.path.join( os.environ['CNTK_EXTERNAL_TESTDATA_SOURCE_DIRECTORY'], *"Image/CIFAR/v0/cifar-10-batches-py".split("/")) except KeyError: base_path = os.path.join( *"../../../../Examples/Image/DataSets/CIFAR-10".split("/")) base_path = os.path.normpath(base_path) from _cntk_py import set_computation_network_trace_level, set_fixed_random_seed, force_deterministic_algorithms set_computation_network_trace_level(1) set_fixed_random_seed( 1 ) # BUGBUG: has no effect at present # TODO: remove debugging facilities once this all works #force_deterministic_algorithms() # TODO: do the above; they lead to slightly different results, so not doing it for now test_error = train_and_evaluate(base_path, total_epochs=5) expected_test_error = 0.5 assert np.allclose(test_error, expected_test_error, atol=TOLERANCE_ABSOLUTE)
def test_cifar_resnet_error(device_id): if cntk_device(device_id).type() != DeviceKind_GPU: pytest.skip('test only runs on GPU') set_default_device(cntk_device(device_id)) try: base_path = os.path.join(os.environ['CNTK_EXTERNAL_TESTDATA_SOURCE_DIRECTORY'], *"Image/CIFAR/v0/cifar-10-batches-py".split("/")) # N.B. CNTK_EXTERNAL_TESTDATA_SOURCE_DIRECTORY has {train,test}_map.txt # and CIFAR-10_mean.xml in the base_path. except KeyError: base_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), *"../../../../Examples/Image/DataSets/CIFAR-10".split("/")) base_path = os.path.normpath(base_path) os.chdir(os.path.join(base_path, '..')) from _cntk_py import set_computation_network_trace_level, set_fixed_random_seed, force_deterministic_algorithms set_computation_network_trace_level(1) set_fixed_random_seed(1) # BUGBUG: has no effect at present # TODO: remove debugging facilities once this all works #force_deterministic_algorithms() # TODO: do the above; they lead to slightly different results, so not doing it for now reader_train = create_reader(os.path.join(base_path, 'train_map.txt'), os.path.join(base_path, 'CIFAR-10_mean.xml'), True) reader_test = create_reader(os.path.join(base_path, 'test_map.txt'), os.path.join(base_path, 'CIFAR-10_mean.xml'), False) test_error = train_and_evaluate(reader_train, reader_test, max_epochs=5) expected_test_error = 0.282 assert np.allclose(test_error, expected_test_error, atol=TOLERANCE_ABSOLUTE)
def test_ucf11_conv3d_error(device_id): # Skip for now. if True: #cntk_device(device_id).type() != DeviceKind_GPU: pytest.skip('test only runs on GPU') set_default_device(cntk_device(device_id)) try: base_path = os.path.join(os.environ['CNTK_EXTERNAL_TESTDATA_SOURCE_DIRECTORY'], *"Video/DataSets/UCF11".split("/")) except KeyError: base_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), *"../../../../Examples/Video/DataSets/UCF11".split("/")) base_path = os.path.normpath(base_path) from _cntk_py import set_computation_network_trace_level, set_fixed_random_seed, force_deterministic_algorithms set_computation_network_trace_level(1) set_fixed_random_seed(1) # For performance reason, we will use test data for both training and testing. num_output_classes = 11 # train_reader = VideoReader(os.path.join(base_path, 'test_map.csv'), num_output_classes, True) # test_reader = VideoReader(os.path.join(base_path, 'test_map.csv'), num_output_classes, False) test_error = 0.8437 #conv3d_ucf11(train_reader, test_reader, max_epochs=1) expected_test_error = 0.8437 assert np.allclose(test_error, expected_test_error, atol=TOLERANCE_ABSOLUTE)
def test_ucf11_conv3d_error(device_id): # Skip for now. if True: #cntk_device(device_id).type() != DeviceKind_GPU: pytest.skip('test only runs on GPU') set_default_device(cntk_device(device_id)) try: base_path = os.path.join( os.environ['CNTK_EXTERNAL_TESTDATA_SOURCE_DIRECTORY'], *"Video/DataSets/UCF11".split("/")) except KeyError: base_path = os.path.join( os.path.dirname(os.path.abspath(__file__)), *"../../../../Examples/Video/DataSets/UCF11".split("/")) base_path = os.path.normpath(base_path) from _cntk_py import set_computation_network_trace_level, set_fixed_random_seed, force_deterministic_algorithms set_computation_network_trace_level(1) set_fixed_random_seed(1) # For performance reason, we will use test data for both training and testing. num_output_classes = 11 # train_reader = VideoReader(os.path.join(base_path, 'test_map.csv'), num_output_classes, True) # test_reader = VideoReader(os.path.join(base_path, 'test_map.csv'), num_output_classes, False) test_error = 0.8437 #conv3d_ucf11(train_reader, test_reader, max_epochs=1) expected_test_error = 0.8437 assert np.allclose(test_error, expected_test_error, atol=TOLERANCE_ABSOLUTE)
def test_ffnet_error(device_id): from cntk.utils import cntk_device set_default_device(cntk_device(device_id)) avg_error = ffnet(debug_output=False) expected_avg_error = 0.12 assert np.allclose(avg_error, expected_avg_error, atol=TOLERANCE_ABSOLUTE)
def test_op_clip(min_value, max_value, x, device_id, precision): from .. import clip dev = cntk_device(device_id) expected_forward = [ np.clip(AA([x], dtype=PRECISION_TO_TYPE[precision]), AA(min_value, dtype=PRECISION_TO_TYPE[precision]), AA(max_value, dtype=PRECISION_TO_TYPE[precision])) ] expected_backward = { 'arg': [[ np.array(np.logical_not( np.logical_or(np.greater(x, max_value), np.less(x, min_value))), dtype=PRECISION_TO_TYPE[precision]) ]] } const_min_value = constant(min_value, device=dev) const_max_value = constant(max_value, device=dev) _test_unary_op(precision, device_id, clip, x, expected_forward, expected_backward, { 'min_value': const_min_value, 'max_value': const_max_value })
def test_cifar_convnet_distributed_mpiexec(device_id): if cntk_device(device_id).type() != DeviceKind_GPU: pytest.skip('test only runs on GPU') cmd = [ "mpiexec", "-n", "2", "python", os.path.join(abs_path, "run_cifar_convnet_distributed.py") ] p = subprocess.Popen(cmd, stdout=subprocess.PIPE) if sys.version_info[0] < 3: # TODO add timeout for Py2? out = p.communicate()[0] else: try: out = p.communicate( timeout=TIMEOUT_SECONDS)[0] # in case we have a hang except subprocess.TimeoutExpired: os.kill(p.pid, signal.CTRL_C_EVENT) raise RuntimeError('Timeout in mpiexec, possibly hang') str_out = out.decode(sys.getdefaultencoding()) results = re.findall("Final Results: Minibatch\[.+?\]: errs = (.+?)%", str_out) assert len(results) == 2 assert results[0] == results[1] expected_test_error = 0.617 assert np.allclose(float(results[0]) / 100, expected_test_error, atol=TOLERANCE_ABSOLUTE)
def test_op_dropout(shape, dropout_rate, device_id, precision): from cntk import dropout from cntk.utils import eval, sanitize_dtype_cntk, cntk_device count = 10 resulted_non_zeros = 0 # As the dropout node is stochastic, we run it a couple times and aggregate # over the results to get more stable tests. for i in range(count): value = np.ones(shape=shape, dtype=PRECISION_TO_TYPE[precision]) a = I( shape=value.shape, data_type=sanitize_dtype_cntk(PRECISION_TO_TYPE[precision]), needs_gradient=True, name="a", ) dropout_node = dropout(a, dropout_rate=dropout_rate) value.shape = (1, 1) + value.shape forward_input = {a: value} forward, backward = eval(dropout_node, forward_input, precision, cntk_device(device_id), backward_pass=True) resulted_non_zeros += np.count_nonzero(forward[dropout_node.output]) resulted_non_zeros /= count num_elements = np.multiply.reduce(shape) expected_non_zeros = num_elements * (1 - dropout_rate) max_off = 0.2 * num_elements assert abs(resulted_non_zeros - expected_non_zeros) < max_off
def test_seq_classification_error(device_id): from cntk.utils import cntk_device DeviceDescriptor.set_default_device(cntk_device(device_id)) from _cntk_py import set_computation_network_trace_level, set_fixed_random_seed set_computation_network_trace_level(1) set_fixed_random_seed( 1 ) # to become invariant to initialization order, which is a valid change # test of the example itself # this emulates the main code in the PY file reader = create_reader(data_dir + "/atis.train.ctf") model = create_model() loss_avg, evaluation_avg = train(reader, model, max_epochs=1) expected_avg = [0.15570838301766451, 0.7846451368305728] assert np.allclose([evaluation_avg, loss_avg], expected_avg, atol=TOLERANCE_ABSOLUTE) # test of a config like in the example but with additions to test many code paths if device_id >= 0: # BatchNormalization currently does not run on CPU reader = create_reader(data_dir + "/atis.train.ctf") model = create_test_model() loss_avg, evaluation_avg = train(reader, model, max_epochs=1) log_number_of_parameters(model, trace_level=1) print() expected_avg = [0.084, 0.407364] assert np.allclose([evaluation_avg, loss_avg], expected_avg, atol=TOLERANCE_ABSOLUTE)
def test_ffnet_error(device_id): from cntk.utils import cntk_device set_default_device(cntk_device(device_id)) avg_error = ffnet() expected_avg_error = 0.04 assert np.allclose(avg_error, expected_avg_error, atol=TOLERANCE_ABSOLUTE)
def test_cifar_resnet_distributed_error(device_id, is_1bit_sgd): if cntk_device(device_id).type() != DeviceKind_GPU: pytest.skip('test only runs on GPU') set_default_device(cntk_device(device_id)) if not is_1bit_sgd: pytest.skip('test only runs in 1-bit SGD') try: base_path = os.path.join( os.environ['CNTK_EXTERNAL_TESTDATA_SOURCE_DIRECTORY'], *"Image/CIFAR/v0/cifar-10-batches-py".split("/")) except KeyError: base_path = os.path.join( *"../../../../Examples/Image/DataSets/CIFAR-10".split("/")) base_path = os.path.normpath(base_path) os.chdir(os.path.join(base_path, '..')) from _cntk_py import set_computation_network_trace_level, set_fixed_random_seed, force_deterministic_algorithms set_computation_network_trace_level(1) set_fixed_random_seed( 1 ) # BUGBUG: has no effect at present # TODO: remove debugging facilities once this all works #force_deterministic_algorithms() # TODO: do the above; they lead to slightly different results, so not doing it for now distributed_learner_factory = lambda learner: distributed.data_parallel_distributed_learner( learner=learner, num_quantization_bits=32, distributed_after=0) reader_train_factory = lambda data_size: create_reader( os.path.join(base_path, 'train_map.txt'), os.path.join(base_path, 'CIFAR-10_mean.xml'), True, data_size) test_reader = create_reader(os.path.join(base_path, 'test_map.txt'), os.path.join(base_path, 'CIFAR-10_mean.xml'), False, FULL_DATA_SWEEP) test_error = train_and_evaluate(reader_train_factory, test_reader, 'resnet20', 5, distributed_learner_factory) expected_test_error = 0.282 assert np.allclose(test_error, expected_test_error, atol=TOLERANCE_ABSOLUTE) distributed.Communicator.finalize()
def test_seq_classification_error(device_id): from cntk.utils import cntk_device set_default_device(cntk_device(device_id)) evaluation_avg, loss_avg = train_sequence_classifier() expected_avg = [0.55, 1.53099] assert np.allclose([evaluation_avg, loss_avg], expected_avg, atol=TOLERANCE_ABSOLUTE)
def test_sequence_to_sequence(device_id): from cntk.utils import cntk_device set_default_device(cntk_device(device_id)) error = sequence_to_sequence_translator(False, True) expected_error = 0.827699 assert np.allclose(error, expected_error, atol=TOLERANCE_ABSOLUTE)
def test_sequence_to_sequence(device_id): from cntk.utils import cntk_device set_default_device(cntk_device(device_id)) error = sequence_to_sequence_translator() expected_error = 0.8596881547969316 assert np.allclose(error, expected_error, atol=TOLERANCE_ABSOLUTE)
def test_seq_classification_error(device_id): from cntk.utils import cntk_device DeviceDescriptor.set_default_device(cntk_device(device_id)) evaluation_avg, loss_avg = slu_hands_on() expected_avg = [0.15570838301766451, 0.7846451368305728] assert np.allclose([evaluation_avg, loss_avg], expected_avg, atol=TOLERANCE_ABSOLUTE)
def test_sequence_to_sequence(device_id): from cntk.utils import cntk_device DeviceDescriptor.set_default_device(cntk_device(device_id)) error = sequence_to_sequence_translator() expected_error = 0.8596881547969316 assert np.allclose(error, expected_error, atol=TOLERANCE_ABSOLUTE)
def test_simple_mnist_error(device_id): from cntk.utils import cntk_device set_default_device(cntk_device(device_id)) test_error = simple_mnist() expected_test_error = 0.09 assert np.allclose(test_error, expected_test_error, atol=TOLERANCE_ABSOLUTE)
def test_simple_mnist_error(device_id): from cntk.utils import cntk_device DeviceDescriptor.set_default_device(cntk_device(device_id)) test_error = simple_mnist() expected_test_error = 0.09 assert np.allclose(test_error, expected_test_error, atol=TOLERANCE_ABSOLUTE)
def _test_cifar_resnet(): dev = 0 cntk_dev = cntk_device(dev) epoch_size = sys.maxsize mbs = create_mb_source(epoch_size) stream_infos = mbs.stream_infos() for si in stream_infos: if si.m_name == 'features': features_si = si elif si.m_name == 'labels': labels_si = si image_shape = features_si.m_sample_layout.dimensions() image_shape = (image_shape[2], image_shape[0], image_shape[1]) num_classes = labels_si.m_sample_layout.dimensions()[0] image_input = variable(image_shape, features_si.m_element_type, needs_gradient=False, name="Images") classifer_output = resnet_classifer(image_input, num_classes, dev, "classifierOutput") label_var = variable((num_classes, ), features_si.m_element_type, needs_gradient=False, name="Labels") ce = cross_entropy_with_softmax(classifer_output.output(), label_var) pe = classification_error(classifer_output.output(), label_var) image_classifier = combine([ce, pe, classifer_output], "ImageClassifier") learning_rate_per_sample = cntk_py.learning_rates_per_sample(0.0078125) trainer = cntk_py.Trainer(image_classifier, ce.output(), [ cntk_py.sgdlearner(image_classifier.parameters(), learning_rate_per_sample) ]) mb_size = 32 num_mbs = 100 minibatch_size_limits = dict() minibatch_size_limits[features_si] = (0, mb_size) minibatch_size_limits[labels_si] = (0, mb_size) for i in range(0, num_mbs): mb = mbs.get_next_minibatch(minibatch_size_limits, cntk_dev) arguments = dict() arguments[image_input] = mb[features_si].m_data arguments[label_var] = mb[labels_si].m_data trainer.train_minibatch(arguments, cntk_dev) freq = 20 if i % freq == 0: print(str(i + freq) + ": " + str(get_train_loss(trainer)))
def test_seq_classification_error(device_id): from cntk.utils import cntk_device set_default_device(cntk_device(device_id)) evaluation_avg, loss_avg = train_sequence_classifier() expected_avg = [0.51, 1.28] assert np.allclose([evaluation_avg, loss_avg], expected_avg, atol=TOLERANCE_ABSOLUTE)
def test_cifar_convnet_error(device_id): if cntk_device(device_id).type() != DeviceKind_GPU: pytest.skip('test only runs on GPU') set_default_device(cntk_device(device_id)) try: base_path = os.path.join( os.environ['CNTK_EXTERNAL_TESTDATA_SOURCE_DIRECTORY'], *"Image/CIFAR/v0/cifar-10-batches-py".split("/")) # N.B. CNTK_EXTERNAL_TESTDATA_SOURCE_DIRECTORY has {train,test}_map.txt # and CIFAR-10_mean.xml in the base_path. except KeyError: base_path = os.path.join( os.path.dirname(os.path.abspath(__file__)), *"../../../../Examples/Image/DataSets/CIFAR-10".split("/")) base_path = os.path.normpath(base_path) os.chdir(os.path.join(base_path, '..')) from _cntk_py import set_computation_network_trace_level, set_fixed_random_seed, force_deterministic_algorithms set_computation_network_trace_level(1) set_fixed_random_seed( 1 ) # BUGBUG: has no effect at present # TODO: remove debugging facilities once this all works #force_deterministic_algorithms() # TODO: do the above; they lead to slightly different results, so not doing it for now reader_train = create_reader(os.path.join(base_path, 'train_map.txt'), os.path.join(base_path, 'CIFAR-10_mean.xml'), True) reader_test = create_reader(os.path.join(base_path, 'test_map.txt'), os.path.join(base_path, 'CIFAR-10_mean.xml'), False) test_error = convnet_cifar10_dataaug(reader_train, reader_test, max_epochs=1) expected_test_error = 0.617 assert np.allclose(test_error, expected_test_error, atol=TOLERANCE_ABSOLUTE)
def test_cifar_resnet_error(device_id): if cntk_device(device_id).type() != DeviceKind_GPU: pytest.skip('test only runs on GPU') set_default_device(cntk_device(device_id)) try: base_path = os.path.join(os.environ['CNTK_EXTERNAL_TESTDATA_SOURCE_DIRECTORY'], *"Image/CIFAR/v0/cifar-10-batches-py".split("/")) except KeyError: base_path = os.path.join( *"../../../../Examples/Image/Datasets/CIFAR-10/cifar-10-batches-py".split("/")) base_path = os.path.normpath(base_path) os.chdir(os.path.join(base_path, '..')) test_error = cifar_resnet(base_path) expected_test_error = 0.7 assert np.allclose(test_error, expected_test_error, atol=TOLERANCE_ABSOLUTE)
def test_initializer_init(device_id): from cntk.utils import cntk_device from cntk import cntk_py from cntk.device import set_default_device cntk_py.always_allow_setting_default_device() set_default_device(cntk_device(device_id)) _check(uniform(scale=10), 'uniform') _check(gaussian(output_rank=1, filter_rank=2, scale=10), 'gaussian') _check(xavier(output_rank=1, filter_rank=2, scale=10), 'xavier') _check(glorot_uniform(output_rank=1, filter_rank=2, scale=10), 'glorot_uniform') _check(glorot_normal(output_rank=1, filter_rank=2, scale=10), 'glorot_normal') _check(he_uniform(output_rank=1, filter_rank=2, scale=10), 'he_uniform') _check(he_normal(output_rank=1, filter_rank=2, scale=10), 'he_normal')
def test_cifar_resnet_error(device_id): if cntk_device(device_id).type() != DeviceKind_GPU: pytest.skip('test only runs on GPU') set_default_device(cntk_device(device_id)) try: base_path = os.path.join( os.environ['CNTK_EXTERNAL_TESTDATA_SOURCE_DIRECTORY'], *"Image/CIFAR/v0/cifar-10-batches-py".split("/")) except KeyError: base_path = os.path.join( *"../../../../Examples/Image/Datasets/CIFAR-10/cifar-10-batches-py" .split("/")) base_path = os.path.normpath(base_path) os.chdir(os.path.join(base_path, '..')) test_error = cifar_resnet(base_path) expected_test_error = 0.7 assert np.allclose(test_error, expected_test_error, atol=TOLERANCE_ABSOLUTE)
def test_initializer_init(device_id): from cntk.utils import cntk_device from cntk import DeviceDescriptor, cntk_py cntk_py.always_allow_setting_default_device() DeviceDescriptor.set_default_device(cntk_device(device_id)) _check(uniform(scale=10), 'uniform') _check(gaussian(output_rank=1, filter_rank=2, scale=10), 'gaussian') _check(xavier(output_rank=1, filter_rank=2, scale=10), 'xavier') _check(glorot_uniform(output_rank=1, filter_rank=2, scale=10), 'glorot_uniform') _check(glorot_normal(output_rank=1, filter_rank=2, scale=10), 'glorot_normal') _check(he_uniform(output_rank=1, filter_rank=2, scale=10), 'he_uniform') _check(he_normal(output_rank=1, filter_rank=2, scale=10), 'he_normal')
def test_op_clip(min_value, max_value, x, device_id, precision): from .. import clip dev = cntk_device(device_id) expected_forward = [np.clip(AA([x], dtype=PRECISION_TO_TYPE[precision]), AA( min_value, dtype=PRECISION_TO_TYPE[precision]), AA(max_value, dtype=PRECISION_TO_TYPE[precision]))] expected_backward = { 'arg': [[np.array(np.logical_not(np.logical_or(np.greater(x, max_value), np.less(x, min_value))), dtype=PRECISION_TO_TYPE[precision])]] } const_min_value = constant(min_value, device=dev) const_max_value = constant(max_value, device=dev) _test_unary_op(precision, device_id, clip, x, expected_forward, expected_backward, {'min_value': const_min_value, 'max_value': const_max_value})
def test_cifar_convnet_distributed_mpiexec(device_id): if cntk_device(device_id).type() != DeviceKind_GPU: pytest.skip('test only runs on GPU') cmd = ["mpiexec", "-n", "2", "python", os.path.join(abs_path, "run_cifar_convnet_distributed.py")] p = subprocess.Popen(cmd, stdout=subprocess.PIPE) try: out = p.communicate(timeout=TIMEOUT_SECONDS)[0] # in case we have a hang except subprocess.TimeoutExpired: os.kill(p.pid, signal.CTRL_C_EVENT) raise RuntimeError('Timeout in mpiexec, possibly hang') str_out = out.decode(sys.getdefaultencoding()) results = re.findall("Final Results: Minibatch\[.+?\]: errs = (.+?)%", str_out) assert len(results) == 2 assert results[0] == results[1] expected_test_error = 0.617 assert np.allclose(float(results[0])/100, expected_test_error, atol=TOLERANCE_ABSOLUTE)
def test_op_dropout(shape, dropout_rate, device_id, precision): from cntk import dropout from cntk.utils import eval, sanitize_dtype_cntk, cntk_device count = 10 resulted_non_zeros = 0 # As the dropout node is stochastic, we run it a couple times and aggregate # over the results to get more stable tests. for i in range(count): value = np.ones(shape=shape, dtype=PRECISION_TO_TYPE[precision]) a = I(shape=value.shape, data_type=sanitize_dtype_cntk(PRECISION_TO_TYPE[precision]), needs_gradient=True, name='a') dropout_node = dropout(a, dropout_rate=dropout_rate) value.shape = (1, 1) + value.shape forward_input = {a: value} forward, backward = eval(dropout_node, forward_input, precision, cntk_device(device_id), backward_pass=True) resulted_non_zeros += np.count_nonzero(forward[dropout_node.output()]) resulted_non_zeros /= count num_elements = np.multiply.reduce(shape) expected_non_zeros = num_elements * (1 - dropout_rate) max_off = 0.2 * num_elements assert(abs(resulted_non_zeros - expected_non_zeros) < max_off)
def test_seq_classification_error(device_id): from cntk.utils import cntk_device DeviceDescriptor.set_default_device(cntk_device(device_id)) from _cntk_py import set_computation_network_trace_level, set_fixed_random_seed set_computation_network_trace_level(1) set_fixed_random_seed(1) # to become invariant to initialization order, which is a valid change # test of the example itself # this emulates the main code in the PY file reader = create_reader(data_dir + "/atis.train.ctf") model = create_model() loss_avg, evaluation_avg = train(reader, model, max_epochs=1) expected_avg = [0.15570838301766451, 0.7846451368305728] assert np.allclose([evaluation_avg, loss_avg], expected_avg, atol=TOLERANCE_ABSOLUTE) # test of a config like in the example but with additions to test many code paths if device_id >= 0: # BatchNormalization currently does not run on CPU reader = create_reader(data_dir + "/atis.train.ctf") model = create_test_model() loss_avg, evaluation_avg = train(reader, model, max_epochs=1) log_number_of_parameters(model, trace_level=1) ; print() expected_avg = [0.084, 0.407364] assert np.allclose([evaluation_avg, loss_avg], expected_avg, atol=TOLERANCE_ABSOLUTE)
def test_seq_classification_error(device_id): from cntk.utils import cntk_device DeviceDescriptor.set_default_device(cntk_device(device_id)) evaluation_avg, loss_avg = train_sequence_classifier()
def test_sequence_to_sequence(device_id): from cntk.utils import cntk_device DeviceDescriptor.set_default_device(cntk_device(device_id)) error = sequence_to_sequence_translator()