テンソルフロー(TensorFlow)を利用したPythonによるAIプログラミングを現役エンジニアが解説【初心者向け】

初心者向けにテンソルフロー(TensorFlow)を利用したPythonによるAIプログラミングについて現役エンジニアが解説しています。TensorFlowはGoogle社に開発されているディープラーニング向けのライブラリです。ブラウザ上で開発できるJupyter Notebookを使ってチュートリアルを行ってみます。

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

テンソルフロー(TensorFlow)を利用したPythonによるAIプログラミングについて解説します。

Pythonについてそもそもよく分からないという方は、Pythonとは何なのか解説した記事をまずご覧ください。

 

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

 

田島悠介

今回は、Pythonに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

テンソルフロー(TensorFlow)を利用したPythonによるAIプログラミングについて詳しく説明していくね!

大石ゆかり

お願いします!

この記事では、TensorFlowと呼ばれるディープラーニング向けのライブラリを使って、Pythonで機械学習を実践してみます。

機械学習を勉強中の方や、ディープラーニングを使ってみたい方は手を動かしながら読んでみると良いでしょう。

TensorFlowとは?

Pythonにおける通常の機械学習は、scikit-learnと呼ばれる機械学習に特化したライブラリを使うことによって、簡単に実践することができます。

そして、通常の機械学習に加えて敷居が高いと思われがちなディープラーニングであっても、Pythonでは専用のライブラリを使えば誰でも簡単に実践することができます。

Pythonのディープラーニング向けライブラリにはいくつかありますが、今回はGoogle社が開発したTensorFlowというライブラリを使います。

ディープラーニングの実践で注意しなければならないことは、通常のコンピュータを使ってディープラーニングを行おうとすると、計算量が多く、時間がかかっていつまで経っても終わらないことがあるという点です。

このようなデメリットは、ディープラーニングを行う際には注意しておくことが大事です。

今回行うディープラーニングではそれほど重い処理を行うわけではないので安心してください。

機械学習・ディープラーニングの学習に最適な環境

機械学習や、データ解析では、Jupyter Notebookというブラウザ上で開発できる環境を使うことが多いです。

Jupyter Notebookを使うメリットは、コードや実行結果をそのままの形で保存できるので、後で振り返りやすい点や、実験的にコードを実行したいときに便利などたくさんあります。

今回はJupyter Notebookを使ってディープラーニングを実践していきたいと思います。

Jupyter Notebookをインストールしていない方は、Jupyter Notebookをインストールしてから行ってください。

[PR] JavaScript・jQueryで挫折しない学習方法を動画で公開中

TensorFlowを導入してみよう

それでは、TensorFlowを実際に導入してみましょう。この記事では、GPUではなく、CPUを使ったディープラーニングを行います。Windowsの場合はコマンドプロンプトで、Macの場合はコマンドラインで

pip3 install tensorflow

を実行してください。

Successfully installed tensorflow

のようなものが表示されたら、TensorFlowのインストール完了です。

 

TensorFlowを使ってコードを書いてみよう

今回は、Googleが公式に提供しているチュートリアルを参考にしてTensorFlowを動かしていきます。

MNISTファイルという手書き文字のデータを学習して、新しい手書き文字の数字を予測するというプログラムを書いていきます。

tensorflowで使用するMNISTファイルという手書き文字のデータ

それでは、順番にコードを書いていきましょう。

まずは

from __future__ import absolute_import, division, print_function, unicode_literals
import tensorflow as tf

この部分は必要なライブラリをインポートをしています。

1行目は、__future__ というモジュールからabsolute_import, division, print_funvtion, unicode_literalsというパッケージを読み込むためのものです。

2行目ではPythonでTensorFlowを実行するための部分です。

次は、

mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

と書いて実行してください。すると、MNISTファイルをダウンロードします。

MNISTファイルというのは”Mixed National Institute of Standards and Technology database”の頭文字を取ったもので、手書き数字の画像のデータセットです。

AIプログラミングではよく使われる画像のデータセットで、学習の際によく出てくるものなので、覚えておくと良いかもれません。

x_trainという学習用のデータと、学習済みのAIの性能を評価するためのx_testというテスト用のデータから成り立っています。

mnist = tf.keras.datasets.mnist

でMNISTファイルをダウンロードし、

(x_train, y_train), (x_test, y_test) = mnist.load_data()

でデータを訓練用とテスト用に分けています。その次の、

x_train, x_test = x_train / 255.0, x_test / 255.0

でデータの大きさを揃えています。これは、データの前処理とか、preprocessingと言って、データの前処理です。AIプログラミングでは重要なので知っておいてください。

それでは、実際にモデルを構築してみます。

次のコードを実行してみてください。

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(
  optimizer='adam',
  loss='sparse_categorical_crossentropy',
  metrics=['accuracy']
)

ここでは、

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])

で、layerと呼ばれる学習のための層を指定して、

model.compile(
  optimizer='adam',
  loss='sparse_categorical_crossentropy',
  metrics=['accuracy']
)

では、optimizerで最適化プロセスのアルゴリズムを、lossで性能の指標である損失関数を、metricsで正解率を最大にすることを指定しています。

正解率以外にも再現率、適合率などの指標があり、用途によってどれを選ぶかが変わってきます。

続いて、

model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test, verbose=2)

を実行してみてください。

この部分は、

model.fit(x_train, y_train, epochs=5)

で学習用データを使って手書き文字の学習を行い、

model.evaluate(x_test, y_test, verbose=2)

で学習性能を評価しています。

[0.07257028500265442, 0.9781]

というような表示が出てくれば、学習ができていることが確認できます。

2番目の0.9781という数字が正解率です。

このように、少しのコードで98%近い性能を持つAIをプログラミングすることができました。

この記事では、Goolge社製のディープラーニング用ライブラリであるTensorFlowの説明と、実際にコードを書いてディープラーニングを実践してみました。

より詳しく知りたい方は、TensorFlowのチュートリアルをもっと読んでみるといいでしょう。

他にも、AIの応用例について知りたい場合はこちらの記事を参考にしてみてくだい。

監修してくれたメンター

小倉翔悟(おぐらしょうご)

AIプログラミングを使って開発を行う大学3年生。

プログラミング歴は約3年でPythonは割と得意。好きな物理理論は一般相対性理論で動物も好き。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

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

 

オンラインのプログラミングスクールTechAcademyではPythonを使って機械学習の基礎を学ぶPythonオンライン講座を開催しています。

初心者向けの書籍を使って人工知能(AI)や機械学習について学ぶことができます。

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

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。