この記事では深層学習フレームワークの紹介記事でも解説した、Theanoについてまとめました。
Theanoは最近開発の終了が宣言されましたが、様々な深層学習モデルを実装したリポジトリで使われていて、未だに触る機会のあるフレームワークです。
この記事でTheanoの概要、導入方法などを覚えて過去の資産を使えるようにしておきましょう。きっと深層学習の勉強に役立つはずです!
Theanoとは
概要
Theanoとは、深層学習の黎明期に流行ったPythonの科学計算ライブラリです。カナダのモントリオール大学が開発を主導していました。PythonのコードをC++/CUDAにコンパイルすることで高速に動作させます。
Deep Learningを実装ときに生のCUDAやC++を使わなければいけなかった大変な時期に、Pythonから比較的簡単にGPUアクセラレーションの恩恵を受けれるライブラリとして非常に重宝しました。
- 直感的な数式の記述
- 自動微分という新しくはないが非常に便利な機能の導入
- deeplearning.netのtutorial にまとめられた最新の深層学習モデルの実装方法とサンプルコード
などの要因が重なり、Theanoは深層学習開発・研究において非常に重要な地位にありました。
また、Theano自体はDeep Learningに特化したライブラリではなかったので、今のTensorflowにおけるKerasのような高レベルのラッパーがあり、こちらも流行っていました。現在大人気のKerasでも、Theanoをバックエンドに選択することが可能です。
その反面
- GPUが単一のみしか使えなかった
- 文法が複雑で学習難易度が高かった
- 実装したモデルが大きくなると、それに比例してコンパイル時間が長くなる事があった
などの欠点もありました。(これは私がTheanoを実際に使っていて感じた感想です。)コンパイルの時間は、実はいうほど長くはなかったです。
ですがそもそもPythonというコンパイルとは無縁のインタプリタ言語を使っているのに、Cのようなコンパイル待ちの時間が発生するというのは面白い体験でした。
Theanoの注目度
[主要深層学習フレームワークのGithub Star数]
GithubでのStar数を見ると、開発者がどのくらいそのリポジトリに関心を持っているかがある程度わかります。Theanoが主流でなくなってから久しいですが、未だに存在感がありますね。
使い方
インストール
また、導入方法を詳しく知りたい場合は、以下のリンクをチェックしてください。
もっとも簡単なAnacondaを使ったインストール方法は以下のとおりです。
conda install theano pygpu
pygpuはTheanoがGPUを使うために必要なライブラリです。また、Theanoを使うには設定ファイルである.theanorcを記述する必要があります。.theanorcはホームディレクトリに作ります。
簡単な書き方としては以下のようなものになります。
[global] floatX = float32 device = cuda0 [gpuarray] preallocate = 1
[引用:http://deeplearning.net/software/theano/library/config.html]
このコンフィグファイルに書き込んだ内容を参考に、Theanoの様々な環境が設定されます。floatXというのは、Theanoの数値計算で使われる型の設定です。
これはCUDAがfloat32に対応しているため、ほぼ決まっている設定です。他の設定はCUDAを使うときには必要ですが、CPUだけで計算する場合は不要です。
ChainerやPyTorchのように、コード中で明示的にcudaを使う宣言をしなくてもコンフィグファイルを読んで、使うデバイスを選択してくれます。(これが便利かどうかは意見が分かれそうです)
サンプルコード
Theanoの勉強をするならば、古典的な深層学習モデルの勉強も一緒にできるDeep Learning.netのtutorialがおすすめです。
Theanoをもっと勉強するには
深層学習の開発において、今から開発終了が宣言されたTheanoを使う理由は少ないと思います。ですが、すでに開発されたTheanoのコードを読んだり改良したりしなければならないときのために、ある程度の勉強が必要な場合もあるはずです。
Theanoについての日本語の技術書を私は知らないのですが、必要であれば侍エンジニアのマンツーマンレッスンでも勉強のサポートができます。
まとめ
この記事では、Pythonの深層学習モデル開発で使われたフレームワーク、Theanoを紹介しました。Theanoは非常にできることが幅広いので、慣れると本当に便利なフレームワークになります。
現在はCupyのようなより手軽にGPUを使うライブラリや、PyTorchのようなより簡単に深層学習モデルを構築できるフレームワークがあります。
これからもどんどん既存のフレームワークよりも便利なものが登場していくのかと思うとワクワクしますね。最新技術のキャッチアップを続けて流行から置いていかれないように気をつけましょう!