icon
icon

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

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

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,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] 未経験からWebエンジニアを目指す方法とは

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の応用例について知りたい場合はこちらの記事を参考にしてみてくだい。

監修してくれたメンター

メンターOS

AIプログラミングを使って開発を行う。

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

 

大石ゆかり

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

田島悠介

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

大石ゆかり

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

 

TechAcademyでは、初心者でもPythonを使った人工知能(AI)や機械学習の基礎を習得できるオンラインブートキャンプPython講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。