TensorFlowとKerasを比較

    「TensorFlow」と「Keras」の概要

    「TensorFlow」はディープラーニングライブラリであり、「Keras」はバックエンドにTensorFlowを利用するディープラーニングライブラリラッパーです。

    ■「TensorFlow」とは

    TensorFlowとは、Googleのディープラーニングライブラリです。データフローグラフを使用したライブラリで、複雑なネットワークを分かりやすく記述できます。

    「Tensor(テンソル)」とは、線形の量を表す概念で、多次元データ構造を表すものです。「TensorFlow」は、多次元データ構造を流れるように処理し、ディープラーニングを行います。

    TensorFlowの特徴として、データフローグラフによる柔軟性、ローレベルオペレータも手書きできる汎用性、高いパフォーマンス、スケーラビリティ、研究レベルから実プロダクトまで扱える効率性などがあります。

    ■「Keras」とは

    Kerasは、オープンソースのニューラルネットワークライブラリです。

    ディープニューラルネットワークを用いた迅速な実験を行えるように設計されており、「シンプル」「モジュール式」「拡張性」などの特徴があります。

    より高いレベルでより直感的な一連の抽象化を提供されているため、ニューラルネットワーク設計を容易に行えます。

    Kerasは以下のバックエンドをサポートしており、TensorFlowをデフォルトのテンソル計算ライブラリとしています。
    ・TensorFlow---Google
    ・Microsoft Cognitive Toolkit---Microsoft
    ・Theano

    難易度比較

    ■TensorFlow

    TensorFlowは、ディープラーニングに限らず、テンソル計算ライブラリとして設計されています。基本的な計算処理も記述でき、細かな調整も可能です。

    TensorFlowは「Define and Run」のスタイルで、計算処理を計算グラフとして一度構築し、その後、まとめて計算処理します。

    そのため、普通の処理をさせたい場合でも、必ずすべてを計算グラフで考える必要があり、初心者には難易度が高いポイントになっています。

    ■Keras

    Kerasは「非常に簡単に計算グラフを記述できる」という点が最大の特徴です。

    層をただただ積み重ねていくだけで簡単な実装できます。プログラミングが未経験であってもシンプルな実装を行えるくらいに簡単に利用できます。「Kerasの登場によりディープラーニング入門のハードルが大幅に引き下げられた」と高い評価を受けています。

    ただし、Kerasはラッパーであるため、実際の計算処理はTensorFlow内に隠蔽されています。本格的にディープラーニングを学ぶための導入部分や、プロトタイプ作成としての利用に向いています。

     

    参考元サイト

    「TensorFlow」基本情報

    ■概要

    TensorFlow(テンソルフロー)とは、Googleのディープラーニングライブラリです。データフローグラフを使用したライブラリで、複雑なネットワークを分かりやすく記述できます。

    ■「ディープラーニング」とは

    機械学習とは、人間が学習するのと同じように機械が学習することを目指した人工知能研究の1分野です。ディープラーニングは機械学習の中の1つです。

    ディープラーニングとは、ニューロン(神経細胞)が信号の受け渡しをすることにより情報処理をしているという脳の仕組みを、ニューラルネットワークとしてコンピュータ内に実現し、それを多層化したものです。

    ニューラルネットワークは、入力層と出力層の間にある中間層(情報識別層)が多いほど、より正確な認識ができるようになります。

    ディープラーニングは、音声認識、自然言語処理(翻訳)、Google検索エンジン(画像検索/ウェブ検索最適化)、Googleフォト(顔認識/被写体認識)、Gmail(メール分別)、Inbox(メール自動返信文作成)、YouTube、広告事業など、Googleのほとんどのサービスを支えるコア技術となっています。

    →OSS×CloudNews →ざっくりわかる「機械学習」---第2回 「機械学習」「ディープラーニング」の違い

    ■基本説明

    「TensorFlow」の読み方は、日本では「テンソルフロー」が多く、英語圏では「テンソーフロー」が多いようです。

    「Tensor(テンソル)」とは、線形の量を表す概念で、多次元データ構造を表すものです。「TensorFlow」は、多次元データ構造を流れるように処理し、ディープラーニングを行います。

    TensorFlowの特徴として、データフローグラフによる柔軟性、ローレベルオペレータも手書きできる汎用性、高いパフォーマンス、スケーラビリティ、研究レベルから実プロダクトまで扱える効率性などがあります。

    利用方法例として、画像に写っているものを認識して文章化するアルゴリズム、各種数値計算、自然言語処理(翻訳)、など多岐におよび、新しい応用分野が広がり続けています。

    コア部分はC++で実装されていて、ユーザ向けにPythonのインターフェースが用意されています。

    ■経緯

    2011年、Googleは「DistBelief」というディープラーニング基盤を開発し、音声認識/イメージ検索などのサービスの性能向上に大きく貢献しました。しかし、各プロダクトとの結合が強く汎用性が低かったため、公開できませんでした。

    そのような問題を解決し、依存性を排除し、汎用性を高め、性能を高めて開発されたのが「TensorFlow」です。「TensorFlow」の性能は、「DistBelief」の2倍とされています。

    2015年11月、「TensorFlow」がオープンソース公開されました。

    ■ユースケース

    利用方法例として、次のようなものが想定されています。
    ・顔認識
    ・音声認識
    ・被写体認識
    ・画像検索
    ・画像を認識して文章化するアルゴリズム
    ・各種数値計算
    ・自然言語処理(翻訳)
    ・リアルタイム翻訳
    ・Web検索最適化
    ・メール分別
    ・メール自動返信文作成
    ・自動運転車 など

    主な特徴

    ■データフローグラフ

    TensorFlowの処理は、データフローグラフの「構築」+「実行」の2フェーズで行われます。

    データの流れ(フロー)を定義する「グラフ」を基本としてデータの処理を行います。

    ■「Deep Flexibility」(深い柔軟性)

    柔軟にニューラルネットワークを構築できます。C++で低レベル処理を書くこともできます。

    ■「True Portability」(真の携帯性)

    TensorFlowではCPU用/GPU用でコードを分ける必要はありません。移植性にも優れています。

    ■「Connect Research and Production」(研究と製品の接続)

    Googleでは、研究者もエンジニアも同じくTensorFlowを用いているようです。このような使い方をすることで、プロダクト転用が容易になります。

    ■スケーラビリティ

    モバイル端末、PC、ハイエンドサーバなど各マシンのリソースに応じてスケールします。

    ■チュートリアル

    各種チュートリアル用データセットが用意されていて、すぐに試せます。
    ・MNIST:手書きの数字を判別
    ・CNN:画像認識
    ・Word2Vec:各単語の関係を学習
    ・RNN:文章から次の単語予測
    ・Seq2Seq Model:フランス語を英語に翻訳 など

    ■簡易/柔軟な記述方式

    シンプルかつ分かりやすいコーディングで記述できます。自動微分の機能が内蔵されており、計算処理と目的関数を定義するだけで学習できます。

    ■Webインターフェイス「TensorBoard」

    Webインターフェイスで、学習状況確認、ニューラルネットワーク可視化ができます。コードだけでは分かりづらいモデルをグラフ化できます。

    補足情報

    ■同様製品

    同様な機能を提供する製品として、次のようなものがあります。

    商用製品:IBM「Watson」など。

    オープンソース製品:「​Chainer」「Caffe」「Microsoft Cognitive Toolkit」など。

    ■オフィシャルサイト

    オフィシャルサイト

    →TensorFlow

    ライセンス情報

    TensorFlowのライセンスは「Apache License 2.0」です。

    詳細について、こちらを参照ください。
    →GitHub →tensorflow →LICENSE

    ダウンロード

    →TensorFlow →Install TensorFlow

    ※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。


    「Keras」基本情報

    ■概要

    Keras(ケラス)とは、Python実装の高水準ニューラルネットワークライブラリです。「TensorFlow」「Microsoft Cognitive Toolkit」「Theano」上で実行できます。

    ■基本説明

    Kerasは、オープンソースのニューラルネットワークライブラリです。

    ディープニューラルネットワークを用いた迅速な実験を行えるように設計されており、「シンプル」「モジュール式」「拡張性」などの特徴があります。

    より高いレベルでより直感的な一連の抽象化を提供されているため、ニューラルネットワーク設計を容易に行えます。

    ■経緯

    ・2015年 初版リリース

    サポート企業/団体

    Kerasは、多くの企業によりサポートされています。
    ・Google
    ・Microsoft
    ・Amazon
    ・NVIDIA
    ・Uber
    ・Apple など

    ■ユースケース

    ・迅速なプロトタイプ作成
    ・CNN+RNNの組み合わせをサポート
    ・CPUとGPU上でシームレスな動作 など

    主な特徴

    ■高水準ニューラルネットワークライブラリ

    概要

    Kerasは複数のバックエンドエンジンをサポートしているため、1つのエコシステムに縛られることはありません。

    組み込みレイヤーのみで構成されるKerasモデルは、全てのバックエンド間で移植できます。

    対応バックエンドライブラリ

    Kerasは以下のバックエンドをサポートします。
    ・TensorFlow---Google
    ・Microsoft Cognitive Toolkit---Microsoft
    ・Theano

    デフォルトはTensorFlow

    Kerasは、TensorFlowをデフォルトのテンソル計算ライブラリとしています。

    設定により、他のライブラリに切り替えできます。

    ■ユーザーフレンドリー

    Kerasは、機械ではなく人間のために設計されており、ユーザーアクションを最小限に抑えるために、認知的負荷を軽減するためのベストプラクティスに従っています。

    ■モジュール性

    モデルは、独立したモジュールになっており、できるだけ制約の少ない接続が可能です。

    ■拡張性

    Kerasは新しいモジュール(クラス/関数など)を容易に作成でき、簡単に追加できる拡張性に優れています。

    ■Keras functional API

    Kerasのfunctional APIを利用して、さまざまなモデルに対応できます。
    ・全結合ネットワーク
    ・多入力多出力モデル
    ・共有レイヤー
    ・Inceptionモデル
    ・Residual networksモデル
    ・Shared visionモデル
    ・Visual question answeringモデル など

    ■対応ハードウェアプラットフォーム

    KerasモデルはCPUで学習できますが、以下のGPU環境にも対応します。
    ・NVIDIA GPU
    ・Google TPU---Google Cloud経由
    ・OpenGL対応のAMDGPU など

    ■マルチGPU/分散学習

    Kerasは、GPUクラスタ上での学習モデル分散学習に対応しています。

    ■モデルデプロイ

    Kerasのモデルは、以下の環境にデプロイできます。
    ・iOS
    ・Android
    ・ブラウザ
    ・Google Cloud
    ・Python用Webアプリケーションバックエンド
    ・JVM
    ・Raspberry Pi など

    補足情報

    ■同様製品

    同様な機能を提供する製品として、次のようなものがあります。

    オープンソース製品:「​Chainer」「TensorFlow」など。

    ■オフィシャルサイト

    オフィシャルサイト

    →Keras(Keras Documentation)

    ライセンス情報

    Kerasのライセンスは「MIT License」です。

    詳細について、こちらを参照ください。
    →GitHub →keras/LICENSE

    ダウンロード

    →Keras →Home →インストール

     

    参考元サイト

    ※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。