使い方を解説!Googleが開発したTensorflow(テンサーフロー)とは【初心者向け】

Googleが開発し公開した機械学習のライブラリTensorflow(テンサーフロー)とは何か、使い方も含めて解説しています。人工知能(AI)を作る上でよく使われているオープンソースのライブラリです。ぜひ使い方をマスターしていきましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

今回は、Googleが開発し、オープンソースで公開している深層学習(ディープラーニング)のライブラリであるTensorflowについて解説します。

Tensorflowというキーワードは聞いたことがあるが、何ができるか、どのような機能があるか、イメージしづらいのでは無いかと思います。

ぜひ、この記事を参考に、Tensorflowにチャレンジしてみてください。

 

なお本記事は、TechAcademyのAIオンライン講座の内容をもとに作成しています。

 

目次

 

大石ゆかり

田島メンター!Tensorflowというのは何でしょうか?

田島悠介

Googleが開発し、オープンソースで公開している深層学習(ディープラーニング)のライブラリのことだよ。

大石ゆかり

どのような機能があるのですか?

田島悠介

例を見ながら説明していくね!

Tensorflowとは

Tensorflowは、Googleが開発した、深層学習(ディープラーニング)機械学習のライブラリです。「テンサーフロー」と読みます。Tensorflowはオープンソース(Apache 2.0 license)で公開されており、個人/商用問わず、誰でも無料で利用することができます。

Tensorflowは、2015年11月にオープンソースで公開された後、急速に開発が進められています。またGoogleをはじめ、TwitterやCocaCola、intelなど、多くの企業でマーケティングや製品開発など、多方面で使われています。

Tensorflowとは、深層学習の学習モデル(プログラム)を計算グラフという形で記述します。Tensorflowの仕組みを図式化した、Tensorflow Playgroundというサイトが分かりやすいので見てみましょう。

画面左上の再生ボタンを押すと、入力データが左から流れ、学習結果が右側に表示されます。中央に「2 HIDDEN LAYERS」と表示されているのは、二層の隠しレイヤーを持った深層学習のモデルであることを表します。

そして画面中央、赤枠で囲った部分がTensorflowの学習モデルを図式化したものです。いくつかの四角形が線で接続されているのが分かりますね。これを計算グラフと言います。

四角形は多次元行列(Tensor)です。Tensorが流れる(flow)計算グラフで学習モデルを構築するので、Tensorflowという名前になった、と言われています。

 

[PR]機械学習で挫折しない学習方法を動画で公開中

Tensorflowを利用するには

Tensorflowを利用するには、Anacondaなどの開発環境のパッケージを使うのが簡単です。

Anaconda

Anacondaは、データ分析やグラフ描画など、Pythonでよく利用されるライブラリを含んだ開発環境です。

AnacondaにTensorflowをインストールするには、メニュー画面のEnvironmentsから、Not Installedを選択し、検索BOXに「Tensor」と入力します。一覧にtensorflowが表示されますので、チェックボックスで選択し、画面右下のApplyボタンを押すことでインストールすることができます。

なお、Anacondaなどの開発環境を利用せず、手動でTensorflowをインストールして利用することも出来ますが、中級者向けとなるため、手順は省略いたします。

 

Tensorflowを使った深層学習(ディープラーニング)

それでは、Tensorflowを使った深層学習(ディープラーニング)のプログラムを作ってみましょう。このプログラムは、Tensorflowのサイトのチュートリアル「MNIST For ML Beginners」を参考にしています。

MNIST For ML Beginners

# サンプル用データの取得
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

# Tensorflowライブラリを使うための宣言
import tensorflow as tf

# 画像データを入れる空の入れ物を784個用意。784=32X32=1つの画像のピクセル数
x = tf.placeholder(tf.float32, [None, 784])

# 初期値にゼロをセットする。横784*縦10
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))

# softmax関数を使ったモデル。結果=それぞれの数値の確率
y = tf.nn.softmax(tf.matmul(x, W) + b)

# y_:正解値、後でデータをロードする
y_ = tf.placeholder(tf.float32, [None, 10])

# y(推定値)とy_(正解)の差を最小にする、交差エントロピーは推定値とラベルデータ(正解)のずれ
# reduce_mean:平均、reduce_sum:総和
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))

# トレーニング:重みを最適化して更新していく
# GradientDescentOptimizer:勾配降下法。クロスエントロピーを最小化するよう学習率0.5でトレーニングさせる。
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)

# データの初期化
init = tf.global_variables_initializer()

# セッション(tensorflowの計算)を開始する
sess = tf.Session()

# セッションを実行する(initを実行する)
sess.run(init)

for i in range(1000) :
  # ミニバッチ
  # mnistの次の100個を読み込んで。バッチ:100個のランダムなデータで訓練。1000回繰り返す
  batch_xs, batch_ys = mnist.train.next_batch(10)
  # トレーニングさせる。データを与える元:feed_dict
  sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})

# トレーニングが終わったら結果の評価を行う
# argmax データの入っている番号。結果はTrue/False
correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))

# reduce_mean:精度の平均値、cast:True/Falseを数値(割合)に変換
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

# テストデータを用いて、学習結果の精度を計測
print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))

Tensorflowのサイトからサンプルデータを取得し、行列に格納します。 次に使用する関数やパラメータを決め、最後にTensorflowのセッションを開始することで、モデルの学習が行われます。詳しくは、ソースコードのコメントを参考にしてくださいね。

実行結果は以下のようになります。0.9149という数値は、学習モデルの正解率を表します。

 

田島悠介

Tensorflowについて、理解は深まったかな?

大石ゆかり

概要やプログラムの書き方など、勉強になりましたー!

田島悠介

サンプルプログラムをもとに、いろいろ試して学習を深めるといいよ!

深層学習や画像認識自然言語処理については、また別のところで説明するね。

大石ゆかり

分かりました。ありがとうございました!

 

今回は、深層学習(ディープラーニング)ライブラリのTensorflowについて解説しました。

これからTensorflowを勉強したい、機械学習を使って何か作ってみたいという方は最初に理解しておきたい内容でしょう。

 

また、オンラインのプログラミングスクールTechAcademyでは、AIオンライン講座を開催しています。

AI(人工知能)の構築に必要な機械学習・ディープラーニングについて実践的に学習することができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。

この記事を監修してくれた方

太田和樹(おおたかずき)
ITベンチャー企業のPM兼エンジニア

普段は主に、Web系アプリケーション開発のプロジェクトマネージャーとプログラミング講師を行っている。守備範囲はフロントエンド、モバイル、サーバサイド、データサイエンティストと幅広い。その幅広い知見を生かして、複数の領域を組み合わせた新しい提案をするのが得意。

開発実績:画像認識技術を活用した駐車場混雑状況把握(実証実験)、音声認識を活用したヘルプデスク支援システム、Pepperを遠隔操作するアプリの開発、大規模基幹系システムの開発・導入マネジメント

地方在住。仕事のほとんどをリモートオフィスで行う。通勤で消耗する代わりに趣味のDIYや家庭菜園、家族との時間を楽しんでいる。