web-dev-qa-db-ja.com

Pytorch LSTM VS LSTMCELL.

[〜#〜] lstm [〜#〜#〜]LSTMCell (現在バージョン1.1)の違いは何ですか? LSTMCELLはLSTMの特別な場合(すなわち、一方向、一方向、ドロップアウトなし)であるように思われる。

それから、両方の実施を行う目的は何ですか?私が何かを欠席していない限り、LSTMCellとしてLSTMオブジェクトを使用するのは簡単です(あるいは、LSTMオブジェクトを作成するために複数のLSTMCellsを使うのは非常に簡単です)。

11
dkv

はい、あなたは別のものでエミュレートすることができます、それらを分離させる理由は効率的です。

LSTMCell 引数を取るセルです。

  • 形状バッチ×入力次元の入力。
  • 形状バッチX隠し寸法のLSTM隠れた状態のタプル。

式の簡単な実装です。

LSTM "for Loop"にLSTMセル(または複数のLSTMセル)を適用するレイヤーであるが、ループはCUDNNを使用して大きく最適化されています。その入力は

  • 形状バッチ×入力長×入力寸法の入力の三次元テンソル。
  • 任意選択で、LSTMの初期状態、すなわち、形状バッチの隠れ状態×隠された薄暗い(またはLSTMが双方向である場合はそのようなタプルのタプル)のタプル。

あなたはしばしばそれをシーケンスにわたって適用するとは異なる文脈でLSTMセルを使用することを望むかもしれません、すなわちツリーのような構造を介して動作するLSTMを作ります。シーケンス間モデルでデコーダを作成すると、ループ内のセルも呼び出し、シーケンスの終わりシンボルがデコードされたときにループを停止します。

5
Jindřich