From 5ca86729e97c2722ef379cba7ebcffda64b4fa7d Mon Sep 17 00:00:00 2001 From: Vikrant Date: Mon, 16 Sep 2019 18:20:13 +0530 Subject: [PATCH 1/4] Feature: addition of source word features --- onmt/modules/embeddings.py | 11 +++++++---- onmt/opts.py | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/onmt/modules/embeddings.py b/onmt/modules/embeddings.py index 72d112c18a..7b517c4358 100644 --- a/onmt/modules/embeddings.py +++ b/onmt/modules/embeddings.py @@ -156,8 +156,11 @@ def __init__(self, word_vec_size, # (these have no effect if feat_vocab_sizes is empty) if feat_merge == 'sum': feat_dims = [word_vec_size] * len(feat_vocab_sizes) - elif feat_vec_size > 0: - feat_dims = [feat_vec_size] * len(feat_vocab_sizes) + elif len(feat_vec_size) != 0: + if len(feat_vocab_sizes)==0: + feat_dims=[] + else: + feat_dims=feat_vec_size else: feat_dims = [int(vocab ** feat_vec_exponent) for vocab in feat_vocab_sizes] @@ -209,10 +212,10 @@ def _validate_args(self, feat_merge, feat_vocab_sizes, feat_vec_exponent, if feat_vec_exponent != 0.7: warnings.warn("Merging with sum, but got non-default " "feat_vec_exponent. It will be unused.") - if feat_vec_size != -1: + if len(feat_vec_size) != 0: warnings.warn("Merging with sum, but got non-default " "feat_vec_size. It will be unused.") - elif feat_vec_size > 0: + elif len(feat_vec_size) != 0: # features will use feat_vec_size if feat_vec_exponent != -1: warnings.warn("Not merging with sum and positive " diff --git a/onmt/opts.py b/onmt/opts.py index 5606daa82a..85511d9605 100644 --- a/onmt/opts.py +++ b/onmt/opts.py @@ -47,7 +47,7 @@ def model_opts(parser): choices=['concat', 'sum', 'mlp'], help="Merge action for incorporating features embeddings. " "Options [concat|sum|mlp].") - group.add('--feat_vec_size', '-feat_vec_size', type=int, default=-1, + group.add('--feat_vec_size', '-feat_vec_size', type=int, default=[], nargs='*', help="If specified, feature embedding sizes " "will be set to this. Otherwise, feat_vec_exponent " "will be used.") From 18d56bcbfc1bcb0ec4cad01270288bb26d0266e7 Mon Sep 17 00:00:00 2001 From: Vikrant Goyal Date: Mon, 16 Sep 2019 19:14:29 +0530 Subject: [PATCH 2/4] Update opts.py --- onmt/opts.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/onmt/opts.py b/onmt/opts.py index 85511d9605..8cf8a5fba1 100644 --- a/onmt/opts.py +++ b/onmt/opts.py @@ -47,7 +47,8 @@ def model_opts(parser): choices=['concat', 'sum', 'mlp'], help="Merge action for incorporating features embeddings. " "Options [concat|sum|mlp].") - group.add('--feat_vec_size', '-feat_vec_size', type=int, default=[], nargs='*', + group.add('--feat_vec_size', '-feat_vec_size', type=int, + default=[], nargs='*', help="If specified, feature embedding sizes " "will be set to this. Otherwise, feat_vec_exponent " "will be used.") From b407ecd26fc6c8b7e29d96027b04614ea843bfb6 Mon Sep 17 00:00:00 2001 From: Vikrant Goyal Date: Mon, 16 Sep 2019 19:32:28 +0530 Subject: [PATCH 3/4] Update embeddings.py --- onmt/modules/embeddings.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/onmt/modules/embeddings.py b/onmt/modules/embeddings.py index 7b517c4358..6cbbf792f5 100644 --- a/onmt/modules/embeddings.py +++ b/onmt/modules/embeddings.py @@ -157,10 +157,10 @@ def __init__(self, word_vec_size, if feat_merge == 'sum': feat_dims = [word_vec_size] * len(feat_vocab_sizes) elif len(feat_vec_size) != 0: - if len(feat_vocab_sizes)==0: - feat_dims=[] + if len(feat_vocab_sizes) == 0: + feat_dims = [] else: - feat_dims=feat_vec_size + feat_dims = feat_vec_size else: feat_dims = [int(vocab ** feat_vec_exponent) for vocab in feat_vocab_sizes] From 92f589c31aa285e1f253fa834502112952c7b9a3 Mon Sep 17 00:00:00 2001 From: Vikrant Goyal Date: Mon, 16 Sep 2019 19:44:48 +0530 Subject: [PATCH 4/4] Update embeddings.py --- onmt/modules/embeddings.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/onmt/modules/embeddings.py b/onmt/modules/embeddings.py index 6cbbf792f5..39d1a1a8d8 100644 --- a/onmt/modules/embeddings.py +++ b/onmt/modules/embeddings.py @@ -158,9 +158,9 @@ def __init__(self, word_vec_size, feat_dims = [word_vec_size] * len(feat_vocab_sizes) elif len(feat_vec_size) != 0: if len(feat_vocab_sizes) == 0: - feat_dims = [] + feat_dims = [] else: - feat_dims = feat_vec_size + feat_dims = feat_vec_size else: feat_dims = [int(vocab ** feat_vec_exponent) for vocab in feat_vocab_sizes]