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とは?概要から導入方法までをわかりやすく解説!
更新日 : 2020年5月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のバインディングが開発されていることを知って非常に興味を持ちました。

まとめ

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

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

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

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

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

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

フクロウ

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

おすすめコンテンツ

まずはここから!初心者でも1から学べるプログラミング入門カリキュラム

転職成功で受講料0円!あなたもプログラミングを学んでエンジニアデビュー