From bbdbb6720b1b6dec2017b0533c898d22a1448efd Mon Sep 17 00:00:00 2001 From: Mikel Zhobro Date: Sun, 13 Jun 2021 13:21:33 +0200 Subject: [PATCH] Add test for optimize_out_slice_nd --- tests/test_TFNetworkRecLayer.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/tests/test_TFNetworkRecLayer.py b/tests/test_TFNetworkRecLayer.py index 51c8038951..b7b5ba2915 100644 --- a/tests/test_TFNetworkRecLayer.py +++ b/tests/test_TFNetworkRecLayer.py @@ -3328,7 +3328,7 @@ def test_rec_subnet_simple_rnn(): print("rnn_cell also fine.") -def check_reclayer_optimize_out(subnet_layer_dict, other_subnet_layers=None, shared_base_net=None, rtol=1e-4): +def check_reclayer_optimize_out(subnet_layer_dict, other_subnet_layers=None, shared_base_net=None, from_=None, rtol=1e-4): """ :param dict[str] subnet_layer_dict: opts for the output layer inside the rec-layer subnet :param dict[str,dict[str]] other_subnet_layers: other layers for the rec-layer subnet @@ -3344,7 +3344,7 @@ def check_reclayer_optimize_out(subnet_layer_dict, other_subnet_layers=None, sha subnet_layer_dict.setdefault("from", ["data:source"]) rec_layer_dict = { "class": "rec", - "from": ["data"], + "from": ["data"] if from_ is None else [from_], "unit": {"output": subnet_layer_dict}, "n_out": n_out, "is_output_layer": True @@ -3598,6 +3598,21 @@ def test_reclayer_optimize_out_access_split(): other_subnet_layers={"split": {"class": "split", "from": ["data:source"], "size_splits": [5, 8]}}) +def test_reclayer_optimize_out_slice_nd(): + check_reclayer_optimize_out( + {"class": "linear", "activation": None, "from": ["encoder_reduced"]}, + from_="position", + other_subnet_layers={ + "window": {"class": "slice_nd", "from": "base:encoder", "start": "data:source", "size": None, "min_size": 1, "is_output_layer": True}, + "encoder_reduced": {"class": "reduce", "mode": "sum", "axis": "T", "from": ["base:encoder"], "is_output_layer": True}}, + shared_base_net={ + "encoder": {"class": "copy", "from": ["data"], "is_output_layer": True}, + "position": {"class": "eval", "from": ["encoder"], "is_output_layer": True, + "eval": "tf.zeros(tf.shape(source(0, enforce_batch_major=True, auto_convert=False))[:-1], dtype=tf.dtypes.int32)", + "out_type": {"batch_dim_axis": 0, "time_dim_axis": 1, "shape": (None,), + "sparse": True, "dtype": "int32", "dim": None}}}) + + def test_reclayer_att_with_kv_in_rec(): net_dict = { 'decision': {'class': 'decide', 'from': ['output'], 'loss': 'edit_distance', 'loss_opts': {}, 'target': 'classes'},