LSTMの可倉長系列入力に぀いお

2,029 views
Skip to first unread message

后益明

unread,
Aug 31, 2016, 12:07:45 AM8/31/16
to Chainer Japanese User Group
今回のリリヌスで、LSTM functionが可倉長系列入力をサポヌトしたずありたすが、どう䜿えるようになったのかいたひず぀解りたせん。

functionではなくLSTM Linkを䜿う堎合の話ですが、䟋えば暙準のRNNを曞く堎合、
埓来のLSTM局では、shape=(バッチ数,入力次元数)のVariableを(ルヌプを回しながら)䞀぀ず぀入力し、
系列の長さず同じ数のshape=(バッチ数,出力次元数)のVariableが埗られる、ずいう流れになるず思うのですが、
これが䞀぀ず぀入力せずに枈んで、shape=(バッチ数,系列長,入力次元数)のVariableがLSTM Linkに入力されれば、
RNNの芁領で時間方向に沿っお蚈算され、
出力系列も䞀぀のVariableにたずめられた圢になる、ずいう颚になったのでしょうか。
こうなればいいなず匷く垌望しおいたので・・・誀解でしたらすみたせん。

あず、埓来のLSTM局の䜿い方に぀いおですが、
出力系列が耇数のVariableずいう圢になるのですが、
この出力に察しおaverage_poolingをしたい堎合などに、これたでの募配情報を保持したたた、
䞀぀のVariableに結合()するこずは可胜なのでしょうか

お詳しい方がいれば、ご教授お願いしたいです。

Yuya Unno

unread,
Sep 2, 2016, 1:14:56 AM9/2/16
to 后益明, Chainer Japanese User Group
サンプルがないのでちょっずわかりにくいかず思いたすが、簡単に説明したす今、䞍具合で最新のドキュメントが公開されおいないこずに気づきたした。
今たでLSTMは同じバッチサむズの入力ベクトルxずしたすを入れおいたしたが、可倉長の入力を扱うずきは単調枛少する入力を扱えたす。
短いバッチサむズの入力があった堎合、LSTMの内郚状態のhやcは、その分だけ曎新されたす。
䟋えばlen(x1) = 3, len(x2) = 2のずき、lstm(x1)でミニバッチ数3の内郚状態ができ、そのあずlstm(x2)を呌ぶずh[0:2]ずc[0:2]の領域だけ曎新されたす。

以䞋のissueを参考にしおください。

これを利甚するには、たず入力シヌケンスを長さの長い順に䞊べ替えおください。
そのあず転眮をずっお、ミニバッチの単語シヌケンスにしおください。
転眮のための関数ずしお、functions.transpose_sequenceを利甚しおください。
hやcの次元の順番を倉えるために、functions.permutate関数を利甚しおください。

ちゃんず動䜜確認をずっおたせんが、以䞋の様な感じで䜿えたす。

sequences = [
  [w1, w2, w3, w4],  # "w1w2w3w4" ずいう系列、以䞋同じ
  [w5, w6, w7],
  [w8, w9]
]
words = transpose_sequnce(sequences)  # wordsは[[w1, w5, w8], [w2, w6, w9], [w3, w7], [w4]]になる
for w in words:
    lstm(w)
h = lstm.h    # h.data.shape == (3,)


> 出力系列も䞀぀のVariableにたずめられた圢になる、ずいう颚になったのでしょうか。
こちらは別PRで進行䞭で、近々マヌゞされるず思いたす。
特にcuDNNのRNNを利甚するので、速床が今たでのChainerの数倍になるず思いたす。



2016幎8月31日 13:07 后益明 <wuyim...@hotmail.com>:

--
このメヌルは Google グルヌプのグルヌプ「Chainer Japanese User Group」に登録しおいるナヌザヌに送られおいたす。
このグルヌプから退䌚し、グルヌプからのメヌルの配信を停止するには chainer-jp+unsubscribe@googlegroups.com にメヌルを送信しおください。
このグルヌプに投皿するには chain...@googlegroups.com にメヌルを送信しおください。
このディスカッションをりェブ䞊で閲芧するには https://groups.google.com/d/msgid/chainer-jp/7e62d033-c0db-42ce-9cde-9d0dc47b7251%40googlegroups.com にアクセスしおください。
その他のオプションに぀いおは https://groups.google.com/d/optout にアクセスしおください。

Message has been deleted

Yuya Unno

unread,
Sep 9, 2016, 12:02:01 PM9/9/16
to 后益明, Chainer Japanese User Group
はい、そうです。
今たではwhereでマスクするなど以倖の方法はありたせんでしたが、この方法ですず無駄な蚈算が発生したす-1の郚分も䞀床蚈算しおから消されるため。
新しい方法ですず、必芁な郚分だけ蚈算するようになりたす。

2016幎9月4日 14:34 后益明 <wuyim...@hotmail.com>:
返信遅れお申し蚳ありたせん。

ご返答ありがずうございたした
自分はこのケヌスを凊理する堎合、たず入力の末尟に適圓な倀を入れお同じ長さに揃えおから転眮し、
タヌゲット倀はignore_label=-1を入れお走らせおいたした。
たしか、where関数で䞍芁な状態曎新を避ける手法もありたしたね。
今のずころは、そのあたりの手間が省けるようになったずいうこずですね

圚 2016幎9月2日星期五 UTC+8䞋午1:14:56Yuya Unno写道
このグルヌプから退䌚し、グルヌプからのメヌルの配信を停止するには chainer-jp+...@googlegroups.com にメヌルを送信しおください。

このグルヌプに投皿するには chain...@googlegroups.com にメヌルを送信しおください。
このディスカッションをりェブ䞊で閲芧するには https://groups.google.com/d/msgid/chainer-jp/7e62d033-c0db-42ce-9cde-9d0dc47b7251%40googlegroups.com にアクセスしおください。
その他のオプションに぀いおは https://groups.google.com/d/optout にアクセスしおください。

--
このメヌルは Google グルヌプのグルヌプ「Chainer Japanese User Group」に登録しおいるナヌザヌに送られおいたす。
このグルヌプから退䌚し、グルヌプからのメヌルの配信を停止するには chainer-jp+unsubscribe@googlegroups.com にメヌルを送信しおください。
このグルヌプに投皿するには chain...@googlegroups.com にメヌルを送信しおください。
このディスカッションをりェブ䞊で閲芧するには https://groups.google.com/d/msgid/chainer-jp/2183601f-2e72-414a-adbf-408d23e0c711%40googlegroups.com にアクセスしおください。
その他のオプションに぀いおは https://groups.google.com/d/optout にアクセスしおください。

Reply all
Reply to author
Forward
0 new messages