Tensorflowだけじゃない?ディープラーニングフレームワーク8選!

この記事では、Deep Learning入門者の方々が最初に迷うポイントになりそうな、フレームワーク選びの手助けになる情報を集めました

Tensorflowだけじゃない!?おすすめのPython向けDeep Learningフレームワークを8つ紹介!

この記事では

  1. Tensorflow
  2. Theano
  3. Chainer
  4. Pytorch
  5. MXNet
  6. Keras
  7. Dynet
  8. primitiv

という、今ホットなフレームワークをまとめましたので、特徴をこの記事で知ったら実際に使ってみてくださいね!

自分にあったフレームワークを見つけられれば、Deep Learningの実装がより楽しくなりますよ!

Tensorflow

[https://www.tensorflow.org/]

TensorflowはGoogle製のDeep Learning フレームワークです。

Deep Learningフレームワークと言ったらこれ!というほど広く使われています。

侍でもTensorflowに注目して記事を公開しています。

TensorFlowとは?機械学習に必須のライブラリを分かりやすく紹介
更新日 : 2019年10月14日

分散処理に優れたTensorflowは、Tensorboardという学習可視化ソフトDeep Learning フレームワーク界隈最大のコミュニティなどを持ちます。

実運用するDeep Learningシステムを構築するなら、第一候補に入ってくることは間違いありません。

Pythonの枠で紹介しましたが、C++を始め様々な言語へのAPIが公開されています。

また、このフレームワークはDeep Learning以外にも、様々な行列計算、テンソル計算に適したツールです。

そのため少しDeep Learningの実装をするには粒度が小さすぎるかもしれません。

Theano

[http://deeplearning.net/software/theano/]

TheanoはPythonによるDeep Learning開発黎明期に流行ったフレームワークです。

現在はver 1.0がリリースされ、開発が終了してしまいました。

少し前のDeep Learningモデルの多くはこのTheanoを使って実装されている物が多く、未だにGithubでDeep Learningの実装を探すと出てくることがある古株です。

このフレームワークも、GPUを使った行列計算・テンソル計算の高速化を行うためのライブラリであり、Deep Learningを書くには少し粒度が小さいかもしれません

Tensorflow同様に、様々な上位ラッパーが公開されています。

それらと組み合わせて使いましょう。

Chainer

[https://chainer.org/]

Chainerはプリファード・ネットワークスが開発しているDeep Learning フレームワークです。

上の2つと違い、ニューラルネットワークの構築に特化しています。

Chainerはなんと言ってもモデルの構築のしやすさと、学習コードの書きやすさが目立ちます。

このライブラリについても侍では注目していて、解説記事を公開しています。

Chainerとは?概要から導入方法までをわかりやすく解説!
更新日 : 2019年8月8日

Chainerはニューラルネットワークを実装するためのクラスと、学習コードを抽象化したTrainerという機能が用意されています。

Deep Learningの開発をするなら非常に適したライブラリの一つです。

Pytorch

[https://pytorch.org/]

Facebookが開発しているディープラーニングフレームワークであるPytorch

PytorchはChainerをフォークして作られたので、Chainerと似たような構文でDeep Learningモデルを構築できます。

ただ、PytorchもChainerも開発が早いので、徐々に差が出てきているのは注意です。

Pytorchは高速で、それでいてChainer並に書きやすいフレームワークなので、世界中で愛されています。

近年公開されたDeep Learningの論文は、その著者実装がTensorflowなどで公開されても、すぐにPytorch版が有志によって作成されて公開されるほどです。

Chainerと違い、すべてがPythonで書かれているわけではありませんが、普段使いするにはちょうどいいフレームワークだと思います。

PyTorchの枠の中で実装すればバックプロパゲーションについて自分で書かなくてもいいところも楽でいいですね。

[このフレームワークの紹介記事]
PyTorchとは?概要と導入方法をチェックしよう!
更新日 : 2019年4月5日

最近では最新の研究の多くが、このフレームワークを使った実装を公開しているように感じます。

MXNet

[https://mxnet.apache.org/]

MXNetはTensorflowのようにも、Chainerのようにも書ける、非常にフレキシブルなフレームワークです。

Python以外にも、

  • C++
  • Scala
  • Julia
  • Perl
  • R

に対応していて、Tensorflow並にクライアント言語の多いフレームワークです。

最近では、KaggleコンペでのDeep Learning実装でよく見かけることが増えたフレームワークで、もしかしたらこれから更に人気が出るかもしれません。

[このフレームワークの紹介記事]
MXNetとは?多言語で使える深層学習ライブラリの概要と導入方法
更新日 : 2019年8月21日

Keras

[https://keras.io/ja/]

KerasはTensorflow/Theanoなどの複数のバックエンドを持つDeep Learning フレームワークです。

バックエンドに使うライブラリを切り替えることができるので、いろんな場面に対応できます。

「生のTensorflowでコーディングするのは大変だけど、Kerasならば簡単にできる!」という人が結構いるので、個人的には非常におすすめです。

また、Keras作者のショレさんが書いたDeep Learningの解説書もあります。

[ PythonとKerasによるディープラーニング 単行本(ソフトカバー) – 2018/5/28
Francois Chollet (著), 巣籠 悠輔 (その他), 株式会社クイープ (翻訳) ]

この本は初心者向けだとは言えませんが、初心者が入門書の次に読むのならばおすすめできます。

ある程度Deep Learningについて学んで、「実装速度を上げたい!」とは「もう少し楽をして実装したい」と思ったとき、この本を読んでKerasを勉強してみると面白いと思います。

[このフレームワークの紹介記事]
Kerasとは?概要と導入方法をチェックして入門しよう!
更新日 : 2019年8月21日

DyNet

[http://dynet.io/]

DyNetはC++やPythonで動作するDeep Learning フレームワークです。

アメリカのカーネギーメロン大学の言語技術研究所が中心になって開発しています。

なんと行っても自然言語処理に強いというイメージが強いフレームワークです。

Chainerのような動的ニューラルネットワーク構築が可能で、自動ミニバッチ化などの便利な機能が盛り込まれています。

primitiv

primitivはC++やPython、Rustなどの言語で動作するDeep Learningフレームワークです。

詳しくは、作者の先生が公開しているスライドがわかりやすいです。

Deep LearningはCUDAを使って高速に計算します。

Python言語の上からフレームワークを使ってDeep Learningを実装するのは、学習コストもあまりかけずにGPU高速化の恩恵を受けられるため有力な選択肢です。

ですがどうせなら、よりCUDAに近いところで実装したくなるのがプログラマの情です。

primitivはChainerのような柔軟さとC++による高速な動作、バックエンドに使うGPUの切り替えなどができる優れたフレームワークだと思います。

特に先程名前を出したCUDAによるNVIDIA GPUの利用と、OpenCLを使ったAMDなどのGPUの利用のどちらもができるのがすごいですね。

私もQiitaでこのprimitivに関する記事を見たとき、Rustのバインディングが開発されていることを知って非常に興味を持ちました。

このままPythonを学び続けて大丈夫?

なぜPythonを学ぶのか?

あなたがPythonを学ぶ理由は何でしょうか?

  • Pythonが人気だからとりあえず学んでいる
  • AIや機械学習の分野に興味があるから

Pythonは初心者向けの言語と言われています。その理由としてシンプルでわかりやすい構文や、実用的なライブラリが豊富なことが挙げられ、実際に学びやすい言語です。

しかし、もしあなたが機械学習に興味があって、とくに知識も無いまま学習を進めると、挫折する可能性が高いと言えます。

機械学習の分野はプログラミング以外にも、専門的な知識や数学の知識も必要になります。ただなんとなく学習していると早い段階でつまづきやすく、そのまま挫折してしまうなんてことも…。

そのため、挫折しないためには、

  • 最適な学習環境を用意する
  • 必要なライブラリ・ツールを導入する
  • わからないことを質問できるメンターを見つける

などが必要になります。

効率よく学びたいなら、無料体験レッスンがおすすめ

このままPythonを学び続けていいのかな…
まだまだ知りたいことがたくさんある!
もっと詳しくPythonについて知りたい!

といった悩みや願望を持っている方は、弊社「侍エンジニア塾」をご利用下さい。

侍エンジニア塾では、

  • 現役エンジニアによるマンツーマンレッスン
  • キャリアアドバイザーによる転職・就職支援
  • 業界屈指のフリーランス・起業サポート

を受けることができます。

業界屈指のコンサルタントから、効率的な学習方法や仕事獲得術、今後のキャリアまでさまざまな疑問を相談してみませんか?遠方の方でもオンラインで受講できます!お気軽に受講下さい。

侍エンジニア塾
無料体験レッスンを受ける

まとめ

私は普段、侍エンジニア塾でインストラクターをしているのですが、生徒のみなさんはそれぞれ様々なDeep Learningフレームワークをお使いになります。

それは生徒さんごとにDeep Learningを使って実装したいモデルや目的が違うからなのですが、Deep Learning初心者の方がフレームワークを選ぶときも、目的にあったものを選ぶのが一番だと思います。

逆に適当にこれがいいかな?と選んでしまうと、後で実装が大変になってしまうこともありました。

この記事で紹介したフレームワークは、日本語でも記事がたくさん公開されています。

それぞれの利点欠点を踏まえて適切なフレームワークを選んでみてください。

LINEで送る
Pocket

SEからWebエンジニアへ転職した理由

侍エンジニア塾卒業生の小池さんは、以前は社内SEとして約5年ほど勤務していました。しかし業務内容は社内のヘルプデスク対応など、プログラムを書く仕事は全くなかったそうです。

SEながらプログラムを書けない現状に「将来仕事がなくなるんじゃないか」と不安を感じ、プログラミング学習を決意。

弊社スクールで学習し、無事ベンチャー企業のプログラマーとして転職に成功しました。そんな小池さんの学習法や転職体験談を伺いましたので、是非ご覧ください。

「プログラミングができないSEは仕事がなくなる」不安を感じたSEが未経験から転職成功するまで
更新日 : 2019年10月7日

書いた人

フクロウ

フクロウ

第一言語はPythonです。
皆さんRustやりましょう。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説