全2668文字
PR

Pythonのプログラミング環境には複数の選択肢がある。この特集では、3つの代表的なPythonプログラミング環境を取り上げ、それぞれの特徴や構築方法などを解説する。

 最後に、Colabの特徴であるGPU/TPUの利用について説明します。Colabでは、AI関連の計算を高速に行うGPUやTPUが使えます。実際にGPU/TPUを使って、簡単なプログラムを実行してみましょう。まずはニューラルネットワークを使って画像を判別するプログラムを作り、動作確認を行います。その後、同じプログラムをGPUを使って実行してみます。

ニューラルネットワークの作成と学習

 本稿で画像の判別に使うのは、「MNIST」(エムニスト)というデータセットです。MNISTは、図23のような0~9の手書き数字画像のデータを集めたものです。全部で7万枚の画像が収録されており、各画像がどの数字を表すのかという正解情報(ラベル)も付属しています。

図23●MNISTに含まれる画像の例
図23●MNISTに含まれる画像の例
[画像のクリックで拡大表示]

 ここでは、入力された画像が0~9のうちどの数字なのかを、ニューラルネットワークを使って判別するプログラムを作成します。まずはMNISTを使って、ニューラルネットワークの学習を行います。次に、学習済みのニューラルネットワークを使って、入力された任意の手書き数字の画像を判別します。

 前述の方法でColabにログインし、新しいノートブックを作成してください。そして、セルにリスト8を入力し、「Shift」+「Enter」キーで実行してください。

リスト8●TensorFlowを使ってMNISTをダウンロード・加工するコード
リスト8●TensorFlowを使ってMNISTをダウンロード・加工するコード
[画像のクリックで拡大表示]

 リスト8では、GoogleのAIライブラリーであるTensorFlow(テンソルフロー)を使っています。また、MNISTをダウンロードした後に、ニューラルネットワークで扱えるようにデータ処理をしています。

 実行結果は図24のようになります。

図24●リスト8の実行結果
図24●リスト8の実行結果
[画像のクリックで拡大表示]

 次は、リスト9を入力し、実行してください。ニューラルネットワークを作成し、学習とテストを行います。

リスト9●ニューラルネットワークを作成して学習・テストするコード
リスト9●ニューラルネットワークを作成して学習・テストするコード
[画像のクリックで拡大表示]

 上記のプログラムは、実行に少し時間がかかります。図25のように、画面に進捗が表示されるので、実行が終わるまでお待ちください。「Epoch」(エポック)はデータの全体を学習する回数を表し、「accuracy」は正解率を表します。

図25●リスト9の実行結果
図25●リスト9の実行結果
[画像のクリックで拡大表示]

 各エポックの学習にかかった時間は、「7s」(7秒、sはsecondの略)のように表示されます。学習時間の合計は34秒でした。