studylog/北の雲

chainer/python/nlp

KerasがTensorFlow本体に統合される?

TensorFlowをバックエンドとして使用しており、Python製DeepLearningライブラリとしては頭5つぐらい抜け出している感じのあったKerasですが、TensorFlow本体に取り込まれる?動きがあるようです。TensorFlow/Keras人気はさらに加速して他のライブラリを寄せ…

数学的バックグラウンドが無い人は理論を勉強しようと思っても厳しい

という事を痛切に悟りました。無理・無茶です。2015に出たLSTMとかCNNの教科書的の段階ならば、自分みたいな人間でも頑張って青本読んでも何とか理解できました。でもそのレベルでは特に自然言語処理関係であまり実用的なモノは作れません。LSTMで言語モデル…

2016振り返り

今年も終わってしまいますね。今年の札幌の冬は強烈に寒そうで豪雪っぽいです。去年一昨年と生温い冬だったので久々に冬将軍炸裂って感じです。去年(2015)の6月頃からChainerを通してDeepLearningを触りだし、このブログもわりと更新してきましたが、今年中…

今年(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…

fastTextのsubword(部分語)の弊害

nlp

札幌は1桁まで最低気温が下がってきました。寒いです。Facebookが開発したfastTextを使ってみました。word2vecっぽくword embeddingをCPU環境で高速に生成してくれます。 github.compythonラッパーもありますが生成時に進行状況が表示されないので、生成時は…

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

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

次期GPUのGTX 1080正式発表(再追記:半精度アクセラレーション対応してなかった)

ついにPascalが正式に発表されました。単精度8.5〜9TFOPS・メモリ8GB・180Wで価格は$599、北米発売は5/27です。 980Ti(5.6)はもちろんTitanX(6.2)よりもTFLOPS上回ってきました。しかも省電力。これで$599は安いですね。 日本での実売は85,000〜90,000円ぐら…

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

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

TensorFlow強い

GoogleがCloud Machine Learningというインパクトのあるものを出してきました。TensorFlowが登場したときからある程度は予想されていたサービスですが思った以上に登場が早かった。TensorFlowの強みは2つあると思っています。1つ目はGoogle発ということで開…

次期GPUのPascalの詳細な情報が出てきた

現行のMaxwell世代から今年登場するPascal世代へとパワーアップするNvidiaのGPUの詳細な(噂)情報が出てきました。低火力ディープラーニング愛好家にとっては気になるところです。 スペック表 Nvidia GeForce X80 and X80 Ti Pascal Specs?表の左2つのモデル…

LSTM+トピック

全国的にはそろそろ春なんでしょうか。札幌は段々と暖かくなってきましたが今日の夜は氷点下6度だそうです。北海道の冬は長い。早く自転車に乗りたいです。 LSTMでの文生成の限界 狭い分野に限られたコーパスだとそれなりの文を生成できますが、ニュースやwi…

可変長データのミニバッチを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…

低火力ディープラーニングのための環境(自作ハード編)

昨日こんなプレスリリースが話題になっていました。 www.sakura.ad.jp高火力ですって。強そう。 ちょっと前にはこんなのも話題に。 ディープラーニング専用GPUサーバファーム「紅莉栖(くりす)」を構築|ニュース|広報情報|株式会社ドワンゴ 現時点で世界…

CaboCha(python)で辞書指定

mecabの辞書はほぼneologdに切り替えて使っているのだけど、久しぶりにCaboChaをpythonから使おうとしたら辞書の指定の仕方がわからなかったのでメモ。 #デフォルト辞書を使う時 cabocha = CaboCha.Parser("") #辞書指定する場合はこう(ディレクトリは各々の…

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のままでいいかな…と思いましたが、最新版についていか…

ディープラーニング用ライブラリの仁義なき争い勃発

GoogleがTensorFlowをリリースしてちょっとした騒ぎになっています。 tensorflow/tensorflow · GitHubGitHubに付けられたStarは既に6800。 それがどのくらい凄いかというと、3ヶ月前の時点でこんな感じの情勢だったんです。3 month later: Caffe reinforces …

ニコニコ静画の学習済み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…

pythonのインデント

最初に結論を書くと pythonのインデントはスペース4つ タブを使うと色んなデメリットがある スペース4つ打ちが面倒ならエディタの設定でタブキーをスペース4つに置き換える もうかれこれ4年はpython使っててこれまでインデントについて深く考えた事がありま…

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で保存す…

mecab-NEologdを使うと語彙はどのくらい増えるのか

nlp

mecab-ipadic-neologdを使って形態素解析すると語彙が増えすぎてしまうんじゃないかという心配があったので調べてみた。 (追記訂正:最初のデータは間違っていました。ごっそり消してwikipediaの詳細データだけ掲載します。すみません。) コーパスのテキスト…

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はも…

RNNいわく「ソクラテスの哲学量は131位(2013年、6.6%)」

nlp

RNNで思わずクリックしたくなるようなweb記事のタイトルを生成してみた。 ビジネス分野 「味の素」を亡くした金融市場:日経ビジネスオンライン 【やじうまPCWatch】タカラトミー、おしゃべりで爆誕 ぱっと見ではよく意味がわからない。味の素って何かアクシ…

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で動…

シンプルなRNN/LSTMだけでまともな文章はできない

nlp

「プログラムが自動で文章を生成する」昔からこれにロマンを感じてる。 やってて面白い。暇つぶしになるし、副次的に色んなことの勉強になるし、もしかしたらいつかいいプログラムが作れてお金になるかもしれない、なんてぼーっと考えてる。今年に入ってから…

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のサンプルを試してみたけれど中…

Requests(python)で文字化けする場合

RequestsはシンプルなHTTPライブラリですがよく文字化けします。Shift_JISのサイトだと多めな印象。 html = requests.get("http://Shift_JISのサイト") print(html.encoding) #=> ISO-8859-1 なのでここを参考に [Python]requestsが正しくエンコード情報を返…

chainerメモ6 float64 != float32 エラー

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

Kerasを使ってみた

TheanoベースのDeepLearningライブラリKerasを使ってみた。 2時間触った程度なのであまり有用なことは書けませんが。Keras Documentation fchollet/keras · GitHubモデルの設定をyaml等で記述しないといけないライブラリと違いpythonワンソースだけで完結す…

出力層にdropoutは必要なのか

NNでdropoutを入れると過学習を防いでくれて精度が高まる、と理解しているのだけど、最後の出力層(推論層)にもdropoutを入れるべきかどうかがわからないchainerのサンプルを見ると ptbサンプル(RNN/LSTM)は出力層にもdropout。 h1_in = model.l1_x(F.dropout…

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 …

RNNでのテキスト生成

nlp

最近RNNを使ってのテキスト生成で遊んでます。 色んなやり方があるのでメモ。呼び名は適当に命名しています。 ○はRNNに与える単語で、?が予想して出力する単語。 1.順生成 ○○○○○○?最も一般的。文章の時間軸に沿って単語を予測する。 2.逆生成 ?○○○○○○○文章を…