studylog/北の雲

chainer/python/nlp

chainer

今年(2016)参考にさせてもらったChainerの論文実装、サンプルコード集

去年書いたサンプルコード集の2016年版です。 個人的な興味範囲のみ集めているので網羅的では無いとは思います。 基本的に上の方が新しいコードです。 QRNN(Quasi-Recurrent Neural Networks) 論文ではchainerを使って実験しており、普通のLSTMはもちろんcuD…

ChainerのcuDNN-RNN(NStepLSTM)のとっかかり

16.0の新機能NstepLSTMはcuDNN5.0以降で最適化されたcuDNN-RNNを利用できます。速くなるらしいです。 Optimizing Recurrent Neural Networks in cuDNN 5 | Parallel Forallこれの良い所は次元数が合わないデータでもミニバッチ処理が簡単にできる点です。 再…

NN言語モデルの低頻度単語とメモリ問題

低火力ディープラーニングにつきまとう問題として第一にGPUのメモリ問題がある。 個人で用意できるレベルのハードではとにかく足りない。以下言語モデル構築の話。 wikipediaの1/50コーパスをneologdで分かち書きしたときに語彙は25万ぐらい。 これを全部語…

Chainerのcleargradsと旧zerograds

1.15.0よりzerogradsが非推奨になりcleargradsというものが導入されたらしい。github.com0埋めはメモリいっぱい使うし意味が無いからNone埋めにする!みたいな感じ。 変更されたコードはこちら。上がclearで下がzero。 def cleargrad(self): """Clears the g…

Chainer1.14以上へのアップグレードで詰まる

久しぶりにchainerをアップグレードしようとしたらうまくいかなかった。chainer1.8.0→15.0.1 (CUDA7.5、CuDNNv4、Ubuntu14.04、python3.4) cupy/cuda/cudnn.cpp:8962:675: error: cannot convert ‘void*’ to ‘double’ for argument ‘15’ to ‘cudnnStatus_t c…

『Chainerによる実践深層学習』が出版されます

9月9日にChainer本が出るようです。Chainerによる実践深層学習posted with amazlet at 16.08.31新納浩幸 オーム社 売り上げランキング: 2,884Amazon.co.jpで詳細を見る出版社の目次はこちら Chainerによる実践深層学習 | 理工学専門書,情報科学,知識科学・人…

シンプルなRNN - MGUとSGU(DSGU)

ようやく北海道も雪が解けて街中を自転車で走り回れるようになりました。あと二週間ぐらいで桜も咲きます。[1604.02910] Deep Gate Recurrent Neural Network [1603.09420] Minimal Gated Unit for Recurrent Neural Networks という二つのRNN関連の論文をGo…

可変長データのミニバッチをchainerのwhereでやる

以前にもちょこっと書いたのだけど、自然言語はたいてい次元(単語数、文字数など)が合わない。データA 1 2 データB 1 2 3こんな感じで次元が合っていないデータをミニバッチで学習したい。 末尾をEOSで埋めてミニバッチ 可変長のミニバッチの時に末尾をEOSで…

chainerのwhereでbroadcastingやりたいけどtype_checkに弾かれる

numpyのbroadcastingは自分には難しくてあまり理解していなかったのだけど最近ようやく少しだけわかってきた。 Pythonによるデータ分析入門のP410からの説明、英語版だと嬉しい事にPython for Data Analysis - Free Download eBook - pdfより無料で読める。P…

chainer1.6.0リリース

一日前倒しでリリースされたようです。Release v1.6.0 · pfnet/chainer · GitHub1.5からの機能追加バージョンなので1.5のコードが動かなくなったりすることは無いようです。 インストール時にHDF5が必須じゃなくなった。1.5のインストールで躓いた人が多かっ…

chainerのバージョンごとの違い(2016年1月19日現在)

あと数日で1.6がやってくるchainer。 1.0~1.6までのバージョンごとの差について簡単にまとめてみます。 大きく分けると3つのグループ 1.0 1.1 1.2 黎明期バージョン1.3 1.4 CuPy導入1.5 1.6 色々とパワーアップした現世代特にこれからchainer始める人はこの…

可変長のミニバッチ、softmax_cross_entropyに-1、EmbedIDの謎挙動など

ほとんどChainer専用ブログになってきたのでタイトルにChainerメモって付けるのやめました。https://groups.google.com/forum/#!topic/chainer/VFbZCgccs6I ここで少し言及されていたので。[明日 晴] [今日 は 雨] [本当 に 凄い 雪]こういう可変長をミニバ…

PycharmのremoteインタプリンタでchainerのGPUを実行時にNo such file or directory: 'nvcc'

Pycharmのremoteインタプリンタは便利。ローカルマシンでコード書いて、リモートのUbuntuで実行するときにPycharm内で全て完結する。いちいちterminalで実行しなくていい。…はずなんだけどchainerをGPUで動かすと OSError: Failed to run `nvcc` command. Ch…

Chainer1.5の変更点についてのメモ

あけましておめでとうございます。今年もChainer中心に遊んでいきたいと思います。過去最大のアップデート 1.5。あまりにも変わりすぎていて以前のコードを1.5対応に書き換えるが結構大変です。 正直1.4のままでいいかな…と思いましたが、最新版についていか…

ニコニコ静画の学習済みchainerモデルを試してみた

ドワンゴではニコニコ静画(イラスト)のタグを学習したChainer用のモデルを配布してます。またそれを利用したタグ推定や類似画像検索などの技術デモのほか、応用事例として画像を元に閲覧数やお気に入り数を推定する研究を紹介しています。 https://t.co/5x…

Chainerメモ13 type_checkをオフにして高速化

少し前から気になっていたのですが1.3.0よりtype_checkをオフにすることで処理を高速化できるようになっていました。 Function — Chainer 1.4.0 documentation type_check_enable When it is True, the function checks types of input arguments. Set CHAIN…

Chainer1.4.0がリリースされました

主にバグ修正、CuPy関係の機能追加のようです。 モデル構造変更、公式保存方法などの実装は一ヶ月後の1.5.0になりました。主な変更点はこちら https://groups.google.com/forum/#!topic/chainer/bnfSQpAux7M https://github.com/pfnet/chainer/issues?q=mile…

Chainerメモ12 恐怖のActualエラー

chainerを触りだした頃に一番遭遇していたエラーです。トラウマになりそうでした。こんなやつ。 chainer.utils.type_check.InvalidType: Expect: in_types[0].ndim == 1 Actual: 2 != 1 #こういうパターンもある 不等号だったりもする Actual: (1,2) != (1,1…

Chainer1.4.0は延期

二週間後の10月28日に延期されました。 モデルの構造をがらっと変えるための議論と実装に時間がかかっているようです。公式のモデル保存&読み込み方法も実装される予定でしたが、いずれも1.5.0(11月下旬?)になりそうです。 今のFunctionSetをpickleで保存す…

Chainerメモ11 GPUで速度が出ない時

GPUなのに学習速度があまり速くならない、あるいはCPUより遅い時ってありませんか?そういうとき自分はまず「nvidia-smi -l 1」でGPUの使用率を見て100%に近い値を維持できているかどうかチェックします。NVIDIA System Management Interfaceというものらし…

chainer-Variational-AutoEncoderを使ってみた

最近早起きした日は北海道神宮・円山公園へリスに会いに行ってます。山のリスと違って人馴れしまくってて自分から足元にやってくるエゾリス。多分エサやってる人がいるんだろうな。こんな至近距離で撮れたのは初めてなので記念にアップ。 近所を散歩してたら…

chainerメモ10 AttributeError: 'module' object has no attribute 'init'

追記)2015.10.30 互換性維持のためバージョン1.4.0でcuda.init()が復活しました。 正確にはエラーで落ちなくなりdeprecatedを出すようになりました(つまり書いても書かなくても何もしない)。 以下の記事は1.3.0~1.3.2限定の話です。 chainerでcuda.initはも…

chainerメモ9 保存するmodelに学習するコード等を含ませない

追記 この記事の内容は自分の勘違いだっただようで、不正確かもしれません。1.2以前のモデルを1.3で読み込むと ImportError: No module named 'chainer.functions.linear' となる問題。modelで絶対使うLinearのディレクトリ構造が chainer/functions/linear→…

RNNに数式を読ませて計算、さらに逆に数式をdecodeさせる

小手先ではRNNに文章を生成させることが厳しい事がわかってきたので、もう少し基礎から勉強。 "1 + 8"という文字列(str)をRNNに読ませて その結果を計算させて正解(9)を出力できるように学習して 今度は逆に答えが9になるような数式を出力 というものをやっ…

chainer1.3.0リリース

変更内容はこちら。pfnet/chainergithub.com今回の大きな目玉はCuPyの導入。バックエンドとして使われていたPyCUDAが自前のライブラリCuPyというものに置き換わったのでPyCUDAのインストールがもう必要ありません。scikit-cudaもいらなくなりまして、GPUで動…

chainerメモ8 後からEmbedIDの数を増やしたい

functions.EmbedID(in_size, out_size) in_size (int) – Number of different identifiers (a.k.a. vocabulary size). out_size (int) – Size of embedding vector. RNN/LSTMでよく使うこれ。 EmbedID(単語の数, その単語のベクトル次元数) みたいに使う。 …

chainerメモ7 AttributeError: 'module' object has no attribute 'cupy’

ここ一週間ぐらいcupyが無くて先に進めないという声がチラホラ。cupyが無いって怒られるんだけどどうすればいいんだろ— ちゃんまつ氏 (@japapapapam) 2015, 8月 26 chainer君。gpuを使おうとすると動作しないね。cuda.cupyがないとか言われても、dependency…

ディープラーニング入門のための入門 その1

このシリーズは何なのか ディープラーニングとやらに興味あるけど何から手を付けていいかわからない そもそも機械学習って何なのかわからない 数式読めない 微分積分わからない 高校卒業してから数学を学んだ事が無い chainerのサンプルを試してみたけれど中…

chainerメモ6 float64 != float32 エラー

chainer使ってて遭遇したエラー文をwebに上げて同じように遭遇した人がすぐ解決出来るようにしたいのでどんどん書いていく。 chainer.utils.type_check.InvalidType: Expect: in_types[0].dtype == in_types[1].dtype Actual: float64 != float32 よく遭遇す…

cupy使ってみる

一ヶ月後にリリース予定のcupyバージョンのChainerを使ってみる。import cudnnのところでエラー。どうもCuDNN環境が無いと動かない模様でlibcudnn.soを入れたら動きだした。CuDNNのバージョンはv2。 cuda.init()が必要無くなってる。 というかこれがあるとエ…

chainerメモ5 AttributeError: 'GPUArray' object has no attribute 'T'

chainerをCPU環境でテストしながら実装してて、さあいざ本番のGPUで走らそうとするとこのエラーが出て悩んだ。ちゃんとcuda.init()もmodel.to_gpu()もしてるし、modelに投げるデータもto_gpu()してるはずなのに。 AttributeError: 'GPUArray' object has no …

chainerメモ その4

CuPy 9月はじめに予定されている1.3.0で大型のアップデートが来る模様。[WIP] CuPy: Add and use a new GPU array backend with NumPy-compatible interface by beam2d · Pull Request #266 · pfnet/chainergithub.comchainerではGPU(CUDA)を使う際にPyCUDA/…

chainerのサンプルコードを集めてみた(チュートリアルも追加)

(2016.1.21追記)最近あまりメンテナンスしてないので1.5以上のバージョンを使ってる人には役に立たなくなったかもしれません。(2015.12.15追記)当初はサンプルコードにリンクを貼っただけの記事でしたがチュートリアル等も含めたものに加筆中。また古くなっ…

cahinerメモ3

chainerドキュメント・チュートリアルのGPUで動かすところの最後がtypo? Using GPU(s) in Chainer — Chainer 1.0.1 documentationデータパラレルのところのこのコード optimizer.acumulate_grads(model_1.gradients) #accumulateのtypo optimizer.update() m…

文字を流し込むだけのRNNを試してみた

yusuketomoto/chainer-char-rnngithub.com こちらのchainerで実装されたRNNを試してみました。 RNNやLSTMの理屈や構造はさっぱりわかりませんが、連続して与えられた文字列から次の文字を予測するというもの。サンプルを見るとシェークスピアの文字列を構文…

chainerメモ2

苦戦中CPUでは学習が進むけどGPUだと進まない問題に遭遇。 model.W.dataで重みを見るとbackwordしても変わって無いのであれ?と思ってlossを見たらF.mean_squared_error()が返してるデータがCPUとGPUで何か違う。 #GPUはちゃんとcuda.to_gpuを通した前提で a…

chainerメモ その1

GPU/CUDAで動かしててこんなエラーが出たら ValueError: unsupported combination of input types terminate called after throwing an instance of 'pycuda::error' what(): explicit_context_dependent failed: invalid device context - no currently act…

python3でchainer(CUDA)が一部動いた

6.27現在ではpip3 install chainerでインストールされるものは対応されていない。 sudo pip3 install -e git+https://github.com/pfnet/chainer#egg=chainer-master これで最新版が入るのかな。 動いたサンプル MNIST CPU OK CUDA OK ptd CPU OK CUDA OK sen…

chainerをGPUで動かしてみた

先日GPUを仕入れたのでchainerをGPUで動かしてみました。 CUDAやpycudaの設定に戸惑い3回ものOSクリーンインストール経て疲れ果てましたけど、ようやく先ほど動き出したようです。CUDAをapt-getで入れると依存関係?がめちゃくちゃになって崩壊しました。最…

CUDA+chainer環境に苦戦中

もう10時間ぐらい苦戦中で辛い。さっきようやくPyCUDA成功してchainer動かそうとしたんだけど RuntimeError: CUDA environment is not correctly set up. The original import error said: cannot import name intern (追記 sixを1.9に上げたら解決。途中で…

Chainerのpython3対応はもうまもなく、な気がする

先日リリースされたPFIのディープラーニング向けpythonライブラリChainer。 3系には残念ながら対応していませんが、もう間もなく対応してくるんじゃないかと思ってます。Python 3 compatibility · Issue #22 · pfnet/chainer · GitHub意訳 A:3系はどうなん…