一次元の畳み込みについて

1,823 views
Skip to first unread message

mituhashi

unread,
Apr 21, 2016, 12:28:51 PM4/21/16
to Chainer Japanese User Group
いつもお世話になっております。

一次元における畳込みの質問です。
画像などの二次元配列における畳込みはConvolution2D()に実装されていると思いますが,時系列データのような一次元配列の畳み込みはどのように実現できるでしょうか。

・一次元配列をreshapeして二次元配列にしてConvolution2Dを用いることで擬似的に一次元の畳み込みをするのか
・もしくは自分でConvolution1D()のような関数を作る

の2つの方法が考えられますが、具体的なやり方がわかりません。。

どなたかご享受いただけると幸いです。

よろしくお願いいたします。

Kenta Oono

unread,
Apr 27, 2016, 4:15:53 AM4/27/16
to Chainer Japanese User Group
大野です。

> ・一次元配列をreshapeして二次元配列にしてConvolution2Dを用いることで擬似的に一次元の畳み込みをするのか
こちらの方法が実装としては簡単だと思います。具体的にはchainer.functions.reshapeを利用すれば良いと思います。

# xは3次元のndarray(バッチサイズB x チャンネル数IC x 長さ)を持つchainer.Variable
l = chainer.links.Convolution2D(IC, OC, (k, 1))  # kはカーネルの大きさ
x = chainer.functions.reshape(x, (B, IC, -1, 1))  # -1の部分の実際の値は配列の大きさに合わせて自動的に埋まる
x = l(x)
x = chainer.functions.reshape(x, (B, OC, -1))


2016年4月22日金曜日 1時28分51秒 UTC+9 mituhashi:

mituhashi

unread,
Apr 29, 2016, 4:25:12 AM4/29/16
to Chainer Japanese User Group
大野様:

返信ありがとうございます。

お教え頂いたやり方で無事一次元の畳み込みを実現できました。

ありがとうございました。

2016年4月27日水曜日 17時15分53秒 UTC+9 Kenta Oono:
Reply all
Reply to author
Forward
Message has been deleted
0 new messages