From 16173f80a5a464583044dab646976d1c7a869d63 Mon Sep 17 00:00:00 2001 From: Albert Zeyer Date: Mon, 20 Sep 2021 18:34:09 +0200 Subject: [PATCH 1/4] test check rec opt out, ignore :i --- tests/test_TFNetworkRecLayer.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/test_TFNetworkRecLayer.py b/tests/test_TFNetworkRecLayer.py index 71bb733e7..01f54a99a 100644 --- a/tests/test_TFNetworkRecLayer.py +++ b/tests/test_TFNetworkRecLayer.py @@ -3416,7 +3416,8 @@ def check_reclayer_optimize_out(subnet_layer_dict, other_subnet_layers=None, sha assert_equal(set(net2_subnet.input_layers_moved_out), set()) assert_equal(set(net1_subnet.output_layers_moved_out), set()) # output_layers_moved_out will contain sublayers if present - output_root_layers_moved_out = [name for name in net2_subnet.output_layers_moved_out if '/' not in name] + output_root_layers_moved_out = [ + name for name in net2_subnet.output_layers_moved_out if '/' not in name and name != ":i"] assert_equal(set(output_root_layers_moved_out), {"output"}.union(set(other_subnet_layers or []))) assert_equal([ v.name.split("/")[1:] for v in net1.get_params_list()], [v.name.split("/")[1:] for v in net2.get_params_list()]) From e95e48556af0359fda2d641b1e74f678a7bf18fc Mon Sep 17 00:00:00 2001 From: Albert Zeyer Date: Tue, 21 Sep 2021 10:32:50 +0200 Subject: [PATCH 2/4] test check rec opt out, support extended output shape --- tests/test_TFNetworkRecLayer.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/tests/test_TFNetworkRecLayer.py b/tests/test_TFNetworkRecLayer.py index 01f54a99a..39225d686 100644 --- a/tests/test_TFNetworkRecLayer.py +++ b/tests/test_TFNetworkRecLayer.py @@ -3434,15 +3434,19 @@ def check_reclayer_optimize_out(subnet_layer_dict, other_subnet_layers=None, sha print("y: (shape %r)" % (y1_np.shape,)) print(y1_np) y2_np = session.run(net2_output, feed_dict=feed_dict) - assert_equal(y1_np.shape, (n_batch, n_time, n_out)) - assert_equal(y2_np.shape, (n_batch, n_time, n_out)) + assert y1_np.shape == y2_np.shape + assert y1_np.shape[:2] == y2_np.shape[:2] == (n_batch, n_time) assert y1_np.any() and y2_np.any() if not numpy.allclose(y1_np, y2_np, rtol=rtol): print("Not equal!") + print("Iterating over shape [B,T,...] = %s" % (y1_np.shape,)) for b in range(n_batch): for t in range(n_time): - for d in range(n_out): - assert_allclose(y1_np[b, t, d], y2_np[b, t, d], rtol=rtol) + print("check batch %i, time %i" % (b, t)) + y1_np_, y2_np_ = y1_np[b, t], y2_np[b, t] + for idx in numpy.ndindex(*y1_np_.shape): + print(" check", idx) + assert_allclose(y1_np_[idx], y2_np_[idx], rtol=rtol) assert_allclose(y1_np, y2_np, rtol=rtol) From 91d228e66931d70543a0777b1d934996cf31140c Mon Sep 17 00:00:00 2001 From: Albert Zeyer Date: Tue, 21 Sep 2021 15:07:47 +0200 Subject: [PATCH 3/4] test check rec opt out, use masking before comparison --- tests/test_TFNetworkRecLayer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_TFNetworkRecLayer.py b/tests/test_TFNetworkRecLayer.py index 39225d686..7ec4c1b83 100644 --- a/tests/test_TFNetworkRecLayer.py +++ b/tests/test_TFNetworkRecLayer.py @@ -3425,8 +3425,8 @@ def check_reclayer_optimize_out(subnet_layer_dict, other_subnet_layers=None, sha net1_params = net1.layers["output_not_opt"].get_param_values_dict(session=session) net2.layers["output_opt"].set_param_values_by_dict(values_dict=net1_params, session=session) x_np = net1.random.normal(size=(n_batch, n_time, n_in)) - net1_output = net1.layers["output_not_opt"].output.get_placeholder_as_batch_major() - net2_output = net2.layers["output_opt"].output.get_placeholder_as_batch_major() + net1_output = net1.layers["output_not_opt"].output.copy_masked(0.).get_placeholder_as_batch_major() + net2_output = net2.layers["output_opt"].output.copy_masked(0.).get_placeholder_as_batch_major() feed_dict = { net1.extern_data.data["data"].placeholder: x_np, net1.extern_data.data["data"].size_placeholder[0]: [n_time] * n_batch} From ac9e75a14d29023dd4420bdc45a2ce6b79fcb3b0 Mon Sep 17 00:00:00 2001 From: Albert Zeyer Date: Tue, 21 Sep 2021 15:08:12 +0200 Subject: [PATCH 4/4] test check rec opt out, better out comparison debug --- tests/test_TFNetworkRecLayer.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tests/test_TFNetworkRecLayer.py b/tests/test_TFNetworkRecLayer.py index 7ec4c1b83..bbdeb7fc7 100644 --- a/tests/test_TFNetworkRecLayer.py +++ b/tests/test_TFNetworkRecLayer.py @@ -3445,9 +3445,14 @@ def check_reclayer_optimize_out(subnet_layer_dict, other_subnet_layers=None, sha print("check batch %i, time %i" % (b, t)) y1_np_, y2_np_ = y1_np[b, t], y2_np[b, t] for idx in numpy.ndindex(*y1_np_.shape): - print(" check", idx) - assert_allclose(y1_np_[idx], y2_np_[idx], rtol=rtol) - assert_allclose(y1_np, y2_np, rtol=rtol) + y1_np__, y2_np__ = y1_np_[idx], y2_np_[idx] + allclose = numpy.allclose(y1_np__, y2_np__, rtol=rtol) + if allclose: + details = ["all close"] + else: + details = ["not all close", "max1:", numpy.max(y1_np__), "max2:", numpy.max(y2_np__)] + print(" check", idx, *details) + assert_allclose(y1_np, y2_np, rtol=rtol) # fail now def test_reclayer_optimize_out_linear():