Chainer

1/15ページ

ディープラーニングフレームワークで可変長の入力を扱うときのTips

はじめに 自然言語処理などで可変長の行列を使うときのパターンがいくつかある。毎回再実装しているような気がするので備忘録としてまとめる。 本記事では自分がよく使うChainerとTensorflowの実装をのせる。 (注: プロダクションのコードをコピペしたのではなく、このポストのために1から再実装したので、テストなどされていません。) Chainerに関する留意点 Chainerでは、可変長は下記で扱うように Variable + le […]

オートエンコーダにアフィン変換を組み込む

はじめに 前回の続きです。 前回の記事では、画像上の任意の点の座標$ (u, v) $をを入力として受け取り、画像の値を出力するニューラルネットモデルを実装しました。 これをオートエンコーダのデコーダ部として使うことで、解像度に依存しない画像表現が行えます。 今回はこのデコーダに入力する座標値にアフィン変換を適用することを考えます。 各入力画像に対して適切なアフィン変換のパラメータを使うことができれば、画像の潜在表現が改善されることが期 […]

GTX1080Ti搭載のWindows10パソコンにUbuntu16やらCUDAやらインストールする流れ(4)

はじめに 買ってきたWindowsパソコン(GTX1080Ti搭載)に諸々設定する流れ。 ubuntuインストールするまではこちら。 https://qiita.com/masataka46/items/9548b70cc71248cc1456 その後、CUDA、cuDNNを入れるまではこちら。 https://qiita.com/masataka46/items/0ef2223d22f841b8bfb8 その後、pyenv環境にpyt […]

DeepLearningフレームワークのベンチマーク

はじめに  昨今、Deeplearing熱の高まりからたくさんのPythonを使ったDeeplearningフレームワークが登場しています。現場で使うときに求められるのはフレキシビリティや実装のしやすさの他に、処理速度の速さなどが重要であると感じます。そこでQiitaではフレームワーク間の処理速度の比較に関する記事がないのでこの記事を執筆しました。また、これらの結果は環境に依存する話ですので、お手元で試せるようにソースコードを公開してお […]

ChainerやTensorFlowでGPUを使うと毎回結果が変わる理由と対策 (まとめ)

結論から ChainerやTensorFlowなどの機械学習(特にDeepLearning)フレームワークでGPUを使うと、誤差程度ではあるものの演算結果が毎回変わってしまいます。(非決定的な演算) 「乱数使ってるから当たり前でしょ」って話ではなく、乱数種を指定してもGPU内部での演算順序が非決定的であるためGPU演算の結果は安定しません。 浮動小数点演算なので誤差が出るのは当然だが、その誤差が安定しない(非決定的)なのが気になるところ […]

Chainer + CuPy を Mac OSX にインストールする

Mac OS X High Sierra に Chainer + CuPy をインストールする。 CuPy (クーパイ)は CUDA (クーダ)の Python ラッパーで、 NumPy の代わりに使うことで GPU で計算出来るようになる。 CuPy解説 – SlideShare で概要を把握。 開発機の場合はGPUパワーよりも「CuPyで動く」という事が重要。一通り実装できたら、ちゃんとしたGPUを積んだマシンで動かすと […]

Chainerのtrain_ptb.pyを実行した時にトレーニングに使われているファイル

概要 Chainerのptbフォルダにあるtrain_ptb.pyを実行した時にトレーニングに使われているファイルはどうなっているのか気になったので調べた結果をメモ。 環境 Chainer ・・・ 1.19 Python ・・・ 3.5.2 |Anaconda 4.1.1 (x86_64) ちょっとバージョン古いですが、今度新しいバージョンのものもやりたい。 何処のファイルを使っているのか ptb.pyにダウンロードするような記述がある […]

ニューラルネットを使って任意の分布からサンプリングする

はじめに 前回の記事で紹介した密度推定の手法を応用して、データのサンプリングを行ってみます。 $F(x)=P(X\leq x)$を学習させたモデルをもとに、この逆関数$G(y)$を同様のニューラルネットで学習させます。 $[0, 1]$の一様分布から得られた$y$に対して、$F(G(y))$がyに近づくようにオートエンコーダ的な学習を行えばいいわけです。損失関数にはベルヌーイ分布を仮定した負の対数尤度(chainer.functions […]

確率分布をニューラルネットで学習する

はじめに ニューラルネットを使ったセミパラメトリックな密度推定の手法を考案しました。 Chainerによる実装(github) 確率密度関数 $f(x)=P(X=x)$ を直接ニューラルネットで学習しようとしても、 $$ \int_{-\infty}^{\infty}f(x)dx=1 $$ を満たすような制約を与えることは困難です。 しかし、累積分布関数 $F(x) = P(X \leq x)$ について考えると満たすべき制約は、 \f […]

Chainerで機械学習と戯れる: k/Nの実数入力から k を出力できるのか?

はじめに 前回:加算と減算を同時に学習できるか? は加算と減算を同時にできるのか、ということについて試してみました。「加算」「減算」単体ではうまくいきましたが、「加算と減算を入力で切り替える」のはどうもやり方が悪いのかできませんでしたが。。。 今回は、今まで整数kの入力するのに2進法で表現していましたが、そもそも入力には実数値がとれるので、k/N を入力としたときにkが出力できるのか試してみます。できて当たり前のような気もしますが、頭の […]

1 15