2017-12-18 16 views
1

Embeddingレイヤーを制限して、「スパースレイヤー」の下にリストされています:PyTorchの埋め込みがスパースレイヤーとして実装されているのはなぜですか? PyTorchで

オプティマイザの限られた数がまばらなグラデーションをサポートすることに留意してください:現在、それはoptim.SGD(CUDAとCPU)、およびOPTIMです.Adagrad(cpu)

この理由は何ですか?たとえばKerasでは、任意のオプティマイザを使用して埋め込みレイヤを使用してアーキテクチャをトレーニングできます。

+0

[PyTorch forum](https://discuss.pytorch.org/)でこのような質問をする方が良いです。 – jdhao

+0

良いアイデア! PyTorchのフォーラムを検索した後、私の質問にすぐに答えることができました。 – Imran

+0

あなたは本当にあなたの質問に答えることはできませんでした。つまり埋め込みがスパースレイヤとして実装されている理由です。 – jdhao

答えて

1

組み込み環境に近い検査疎勾配は任意であり、sparseパラメータでオンまたはオフにすることができる時:

クラスtorch.nn.Embedding(num_embeddings、embedding_dim、padding_idx =なし、max_norm =なし、 norm_type = 2、scale_grad_by_freq = Falseを、スパース= Falseの

どこ:

スパース(ブール値、オプション) - Trueの場合、グラデーションw.r.t.重み行列 は疎テンソルになります。 勾配のスパースに関する詳細については、「ノート」を参照してください。

「注釈」は、疎なグラデーションでサポートされているオプティマイザの数が限定されているという質問で引用したものです。

更新:

まばらな勾配にいくつかの最適化手法を実装することは理論的に可能ですが、技術的に困難です。すべてのオプティマイザのサポートを追加するには、PyTorchレポにopen issueがあります。

元の質問に関して、エンベディングは、稠密なレイヤーへの入力のためにワンホットエンコードに変換するのではなく、入力インデックスを直接操作することができるため、疎であるとみなすことができます。これは@Maxim's私のrelated questionの答えに説明されています。

関連する問題