テクノロジー

これを読めばOK!機械学習でのTensorflow攻略法【Python初心者向け】

機械学習をやってみたい!そんな思いでPythonを始めたものの、レベルが高すぎてまだまだ手をつけられそうにない・・・なんて尻込みますよね。そんな方、今から一緒に機械学習を始めましょう!

Pythonを初めて間もない方が予備知識もなく機械学習のプログラムを眺めると、とんでもなく難しいことをしているように見えてしまいます。しかし、丁寧に一行ずつ何が書いてあるのかを読み解けば理解することは難しくありません。

そんな中、特にTensorFlowはプログラミングの文法が簡単で、あらゆる機械学習が実行できる特徴があります。そして、ディープラーニングといえばTensorFlowというほど人気があります。

この記事を読めば、PythonでTensorFlowの基礎について理解でき、ディープラーニングを始めとした機械学習を実行できます。最後まで読んでTensoFlowの世界に入門しましょう!

それでは今回は、いくつかある機械学習ライブラリの中でもTensorFlowをピックアップし、解説します

そもそもTensorflowとは


TensorflowとはGoogleが開発したライブラリ(プログラミング言語の拡張機能を追加するような働きをするソフトウェアのこと)です。TensorFlowを追加すると様々な機械学習に関する機能が実行できるようになります。

現在、Tensorflow 2.0が公開されており、従来のTensorFlowよりも使用できる機能や文法が大きく変更されています。TensorFlowでは何行もかけて記述しなければいけないことが、TensorFlow2.0ではたった1行で記述できるほど使い勝手がよくなったとのこと。

そのため特に理由がない限り、TensorFlow2.0を使用することをオススメします。また今回はTensorFlow2.0の使用を想定していますので、TensorFlowを入手する際にはバージョンにご注意ください。

TensorFlowとPythonでそれぞれできること


それではTensorFlowを使ってできることを、もう少し具体的に紹介します。

まずはディープラーニングの構築です。ディープラーニングは大まかに入力層・中間層・出力層の3つから成りますが、それぞれの層をたった1行で作成すできます。作成したディープラーニングに学習させるためのデータをインターネットから入手できますし、学習の実行や学習結果の確認も数行で記述ができます。

また、ディープラーニングを用いた画像中の物体を検知や画像検索、リアルタイム翻訳など、実用的な機能も備えています。TensorFlowはGoogleが自社のサービスを作成する技術を転用しているので、TensorFlowで使用できる機能は世界最先端の技術と言えるでしょう。

また、Pythonは機械学習の分野で最も人気のあるプログラミング言語です。その人気の秘密は、文法のシンプルさ。難解になりがちな機械学習を非常に簡潔に記述できるため、たくさんの機械学習ライブラリが開発されて今の地位を確立しました。

Pythonを使いこなせばデータサイエンティストと言われるようなデータの分析を行ったり、TensorFlowを用いてディープラーニングを実行したり、デスクトップアプリケーションを作成して世界に公開できます。

まずはTensorflow・Pythonをそれぞれインストールしよう


それではPythonでTensorFlowを実行するための準備を始めましょう。

まずは、Pythonの公式サイトからインストーラーをダウンロードします。ここで注意ですが、Pythonインストーラーのバージョンは3.5~3.7から選択してください。これ以外のバージョンではTensorFlowが対応していません。

Pythonインストーラーのダウンロードが完了したらインストーラーを実行します。インストーラーに特別な設定は必要ないので、特に理由がなければデフォルトの内容のまま進めて問題ありません。これでPythonのインストールが完了しました。

次に、Python標準機能のpipをアップデートします。pipとはPythonライブラリの管理ソフトで、ライブラリの追加や削除が実行できます。それではコマンドプロンプトを開きましょう。キーボードの「windowsキー+R」を押すとファイル名を指定して実行という画面が開くので、「cmd」と入力するとコマンドプロンプトを簡単に開けます。

コマンドプロンプトに「pip install -U pip」と入力するとpipが最新化されます。pipのアップデートが終わると続けてコマンドプロンプトに「pip install tensorflow」と入力します。これでtensorflowをPythonに追加することができました。

Tensorflowを利用して、Pythonでコードを書いてみよう


いよいよTensorFlowを利用したプログラムの作成です。まずは下記のサンプルコードを作成し、実行しましょう。これはTensorFlowの公式サイトで公開されているコードで、初心者が最初に取り組むものです。

### mnist .py ########################################
from __future__ import absolute_import, division, print_function, unicode_literals
import tensorflow as tf
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
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation=’relu’),
tf.keras.layers.Dense(10, activation=’softmax’)
])
model.compile(optimizer=’adam’,
loss=’sparse_categorical_crossentropy’,
metrics=[‘accuracy’])
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test, verbose=2)
############################################

無事実行できれば、コマンドプロンプトにたくさんの英文が表示され、最終行に「accuracy: 0.9765」のように記載されます(数字の部分は多少異なります)。これで機械学習を実行できました!

といっても、内容がわからなければ意味がありませんよね。サンプルコードを上から順に説明しましょう。

始めの2行、fromとimportでTensorflowを使う準備をしています。fromの行でTensorFlowを迎えるのに必要な準備をして、importの行で実際にTensorFlowの利用を宣言しています。

「mnist=」で始まる3行は、学習に利用する、画像のような手書き文字をダウンロードし、学習用データと検証用データとして登録しています。

「model=」から6行はディープラーニングの本体を作成しています。「tf.keras.layers.」から始まる行は、それぞれ入力層・中間層・出力層の定義です。

手書き文字が28×28ピクセルの画像なので入力層に(28, 28)と設定、中間層の128は28×28=784より小さい数字を適当に選んでいます。出力層の10は手書き文字が「0~9」の10文字であると示しています。

「model.compile」の行でディープラーニングを実行可能な状態にし、「model.fit」の行で学習を実行、「model.evaluate」の行で学習結果の確認をしています。

今説明した、たったの20行程度でTensorFlowを利用したディープラーニングを実行することができました。実に簡単ですよね。

もしTensorflowやPythonでわからないことがあったら、こうやって解決しよう!


Pythonでプログラミングをしていると、エラーの発生や、どのように記述すればよいのかわからず途方に暮れることが度々あるでしょう。こんなときの解決方法を紹介します。

まず、最も手っ取り早いのは、エラーメッセージなどをキーワードにしてGoogle検索することです。大抵の問題はネット上で質問されているので解決策が見つかります。また、Qiitaというウェブサイトはたくさんのプログラミング上級者がプログラミングについて記載しているので困ったときに調べてみるのがオススメです。

初心者の中でもプログラミングに自信が出てきた方は、問題が発生しているライブラリのマニュアルを読みましょう。残念ながらほとんどのマニュアルは英語ですが、どこよりも詳しい情報を得ることができるので、きっと探している解決策も判明するはずです。これは、プログラミング中級者にステップアップするために必要な道でもあるので根気よく取り組むと良いです。

マニュアルを読んでも問題が解決できない場合、問題が発生しているライブラリのソースコードを読むことで解決策が見つかることもあります。かなりプログラミングの知識が付かないと完全に理解することは難しいですが、断片的にでも理解できれば解決のヒントが見つかるかもしれません。

何か困った場合は、以上のような手順で解決策を探しましょう。


さて、今回はPythonでTensorFlowを用いた機械学習について解説しました。以上の内容をまとめると、下記のようになります。

  • TensorFlowをPythonに追加すると機械学習に関する機能が利用できる
  • TensorFlowを利用するとディープラーニングの構築、画像中の物体検知、画像検索、リアルタイム翻訳などができる
  • Python公式サイトからインストーラーを入手し、実行することでPythonをインストールする
  • コマンドプロンプトで「pip install -U pip」でpipを最新にする
  • 「pip install tensorflow」でTensorFlowをPythonに追加する
  • たったの20行程度でTensorFlowを利用したディープラーニングを実行できる
  • ・困ったときはGoogle検索・ライブラリのマニュアル・ライブラリのソースコード の順で解決策を探る

TensorFlowを利用すると、非常に短い行数で機械学習の一つであるディープラーニングを実装できました。入力するデータが変わっても、データに合わせてプログラムを少し変更するだけで対応できます。今回紹介したサンプルコードをどんどんカスタマイズしてTensorFlowの知識を増やしましょう!