2017-12-12 12 views
1

私は複数の小さなモデル/ボットを一緒にトレーニングするためにBucketingModuleを使用しています。ここで、バケットキーはbot_idです。しかし、各ボットには、ターゲットラベル/クラスの別々のセットがあります(したがって、各ボットのsoftmaxレイヤのサイズが異なります)。mxnetのBucketingModuleの特定のレイヤー間のウェイト共有を回避するには?

このようなモデルをmxnetでトレーニングする方法はありますか?すべてのボットの中で1つではなく、すべてのレイヤーの重みを共有したいのですか?

sym_genメソッドを使用してこのようなモデルを初期化するにはどうすればよいですか? ソフトマックス層に私はnum_hidden=size_dict[bot]即ち、

pred = mx.sym.FullyConnected(data=pred, num_hidden=len(size_dict[bot]), name='pred') 
pred = mx.sym.SoftmaxOutput(data=pred, label=label, name='softmax') 

を指定sym_gen方法において、Iは、エラーを取得した場合:

Inferred shape does not match shared_exec.arg_array's shape

各ボットがターゲットクラスの異なる数を有するように理にかなっています。

答えて

2

この問題は、投稿して、ここで解決されました:https://github.com/apache/incubator-mxnet/issues/9042

あなたはのサブセットを返します。これらすべてのFCの異なる形状の層、およびsym_gen(other_keys)を含む「マスター・ネットワーク」を返しsym_gen(default_bucket_key)を行うことができます1つの特定のFCを持つマスターネットワーク。マスターネットワークでは、mx.sym.Groupを使用してすべての出力をまとめて1つのシンボルだけが返されるようにする必要があります。

+0

リンクの後にコンテキストを追加しました。 –

関連する問題