スライドショー

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初心者の方がフレームワークを選ぶときも、目的にあったものを選ぶのが一番だと思います。

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

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

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

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

フクロウ

フクロウ

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