TensorFlow

TensorFlow(テンソルフロー、テンサーフロー)とは、Googleが開発しオープンソースで公開している、機械学習に用いるためのソフトウェアライブラリである。

概要

機械学習数値解析ニューラルネットワークディープラーニング)に対応しており、GoogleDeepMindの各種サービスなどでも広く活用されている。

2015年11月9日にベータ版Apache 2.0 open source licenseの下で公開され、2017年2月15日には正式版となるTensorFlow 1.0がリリースされた。

TensorFlowは元々、Google内部での使用のためにGoogle Brain英語版チームによって開発された。開発された目的は、人間が用いる学習や論理的思考と似たように、パターンや相関を検出し解釈するニューラルネットワークを構築、訓練することができるシステムのための要求を満たすためである。現在は、Googleのサービスの研究と生産に使用されており、以前に使用されていたクローズドソースのDistBeliefの役割をほぼ置き換えている‍  。AIにも詳しいルーカス・ビーワルド英語版は、GoogleはTensorFlowのコードオープンソースにした事で、AIの真の価値はAIの「エンジン」ではなく、AIを賢くするのに必要な「データ」である事を示したと語った。そのためGoogleは「データ」の部分は公開しないだろうと述べた。

対応プログラミング言語PythonJavaScriptC++JavaC言語。C言語は他の言語のバインディングを開発することを想定してAPIが作られている。JavaScript版としてTensorFlow.jsがあり、ウェブブラウザの中で実行可能である。Java版は2020年に作り直しになり、C++版のAPIを呼び出す形となり、基本的に全ての機能が利用可能になった。

対応OS64ビットLinux(ただしバイナリ配布はUbuntu用)、macOSWindows

対応ハードウェアはTensorFlow側で配布している物はCPU(x86とARM)とNVIDIA GPUだが、Google TPU、AMD GPU、Intel GPU、AWS Trainium, Inferentia版などをデバイスベンダー側が配布している。

また、TensorFlowベースの強化学習フレームワークDopamine��オープンソースとなっている。

Google Colaboratoryでも使える。

インテル向け

インテルのCPUやGPU用の Intel oneAPI Deep Neural Network Library ではディープラーニング用の最適化が実装されており、これを TensorFlow から利用できるようにしたものをインテルが配布している。Anaconda などのディストリビューションでもこちらが採用されていて、pip で配布している物と比べて ResNet-50 が8.6倍高速に学習する��

Eager Execution for TensorFlow

当初のTensorFlowはニューラルネットワークの計算を表現した計算グラフを学習の前にあらかじめ構築する「Define-and-Run」という方式を取っていたが、2018年に公開された新しい機能である「Eager Execution for TensorFlow」はPreferred Networksのディープラーニングフレームワーク「Chainer」などで採用されている、計算の実行時に計算グラフが定義される「Define-by-Run」という方式を取っている。

LiteRT

当初、モバイル機器向けは TensorFlow for Mobile が存在した。2017年11月14日に TensorFlow Lite (TFLite) を Google が発表した。更に、2024年9月4日、TensorFlow Lite は LiteRT に改名され、TensorFlow ではなく Google AI Edge の管理下となった。LiteRT は、AndroidiOS組み込みLinuxRaspberry Piなど)、マイクロコントローラに対応している。

GPUはLiteRT本家の実装はOpenGL ESOpenCLMetalを使った汎用的な実装となっている。Arm NNがLiteRTとONNXに対応していて、ArmのCPUおよびGPU(Maliなど)向けの最適化をかけていて、行列積畳み込みはArm Compute Libraryを呼び出す形で実装されている。

NPUは、Qualcomm Hexagon NPU、MediaTek VPU, MDLA、Google Edge TPUなどが対応している。

Android上でのニューラルネットワークの実行は、2017年にAndroid 8.1にてNeural Networks API (NNAPI)を導入したが、2024年にAndroid 15にて非推奨になった。LiteRTから実行する形に切り替わり、LiteRT側でCPU・GPU・NPU対応をしている。ただし、2025年2月22日現在、NPUで対応しているのはQualcomm Snapdragonのみ。

応用

以下のような用途に利用可能。

「CeBIT 2017」における展示

2017年3月20日から24日にかけてドイツ・ハノーファーで行われた国際情報通信技術見本市「CeBIT 2017」にて、Googleの日本法人がTensorFlowの採用事例として「から揚げ配膳ロボット」、「きゅうり仕分けロボット」、「ドローンで撮影した写真の解析」の3点を展示した。

から揚げ配膳ロボット
から揚げをロボットに画像認識させるためにTensorFlowが使われている。
きゅうり仕分けロボット
キュウリの選別(選果)はパート労働者にすぐ任せられるような仕事ではなく、会得するには数ヶ月かかると言われている。学習用画像としてキュウリの画像7,000枚を使ったがそれでもまだ数が少なくて過学習が発生し、新たなキュウリの画像では正解率が70%程度に落ちる事が課題とされている。
ドローンで撮影した写真の解析
空撮画像から、TensorFlowを利用して車両台数をカウントするアルゴリズムを構築したとして展示された。

脚注

関連項目

外部リンク

Uses material from the Wikipedia article TensorFlow, released under the CC BY-SA 4.0 license.