【Tensorfow3】Tensorflowで熱心な実行!アイリスデータセットのダウンロード

【Tensorfow3】Tensorflowで熱心な実行!アイリスデータセットのダウンロード

ども、アイーンです。

 

かつてChainerを武器に倒したはずのアイリスデータセット先輩

なんの因果か、再びヤツが私の前に立ち塞がった。

新武器、Tensorflowを使いこなして

二度と立ち上がれなくなるまでケッチョンケチョンにのしてやりましょう。

 

今回もTensorflow公式サイトより

アイリスデータセットの学習を行っていきます。

 

それでは行ってみましょ

 

アイリスデータセットの概要

アイリスデータセットは

花弁の幅と長さ、がく片の幅と長さという4種類の特徴を用いて

セトサ・ヴァージニア・バーシカラーの3種類を見分けようという分類問題です。

詳細は、下の過去記事をご覧いただければと思いますが

これだけ分かれば十分だと思います。

 

【Chainer実践編1】深層学習に必要なデータってどんなの?ニューラルネットワークを訓練してみたら理解できた。

 

さっそく、データをどこぞから取ってきましょう。

下準備

ここからコードの記述に入ります。

今回の教材は、Tensorflowの公式サイトから持ってきてます。

自分でもやってみたい方は、是非コチラからどーぞ。

https://www.tensorflow.org/get_started/eager

 

まずはAnaconda Navigatorを起動して

Tensorflowの仮想環境を立ち上げます。

 

上のApplications On の箇所を仮想環境に変更し、Jupyter NotebookのLaunchをクリックします。

 

NewからPython3ファイルを立ち上げ、コードを書いていきましょう。

 

まずはインポートからです。

from __future__ import absolute_import, division, print_function

import os
import matplotlib.pyplot as plt

from __future__ import absolute_import, division, print_function

from __future__ というコードは

Python2とPython3に互換性を持たせるためのコードだそうです。

私はPython3でコードを書いていますので、正直必要が無いコードですが

さすがは公式、リスペクトを込めてここでも書いておきます。

 

import os

osライブラリをインポートします。

osモジュールは、オペレーティングシステムと対話する関数を提供してくれます。

簡単に説明すると

os.open()  ファイルを開く

os.close()  ファイルを閉じる

os.getcwd()  現在のカレントディレクトリを表示する

os.chdir()  ディレクトリを移動する

などのファイル操作が出来るようになります。

 

import matplotlib.pyplot as plt

こちらはお馴染みマットプロットリブですね。

グラフの描写を行うためにひつよ・・・ん?

・・・No module named ‘matplotlib’

マットプロットリブがありません?

Anaconda3には標準搭載だろ?

 

調べるか。

 

現在の仮想環境にあるモジュールの確認

 

Anaconda Navigatorの“Environments”から

仮想環境の▶をクリックし、ターミナルを開きます。

 

ターミナルに

pip freeze

と入力します。

すると、インストールされているモジュールが全て表示されます。

 

マットプロットリブを探してみましょう。

 

 

あれ?たしかにない・・・。

 

どうやら仮想環境を作成する際に、勝手にインストールされるわけではないようです。

じゃあインストールしますか。

 

仮想環境にmatplotlibをインストール

pip install matplotlib

これでインストールが始まります。

今回はエラーもなく無事に終わりました。

 

再度インポートしてみると・・・

 

ホッ・・・よかった。

インストールが完了したところで

続きに行きます。

 

 

Tensorflowのインポート

import tensorflow as tf

tfという名前で簡単に呼び出せるようにインポートしましょう。

import tensorflow.contrib.eager as tfe

これは、前回の”熱心な実行”に関するインポートのようです。

熱心な実行  =  eager execution(イーガーエクセキューション)の訳です。

eager excutionについては、このQiitaが役立ちました。

https://qiita.com/hiroyuki827/items/730b4684d8e84760b5ea

ありがとう、@hiroyuki827 さん

 

簡単に言うと

Tensorflowでは

1.ディープラーニングのネットワークを作る

2.ネットワークに入力値を流し込んで計算する

という手順が必要です。

 

例えれば

1.工場の製造ラインを作る

2.製造ラインに原材料をぶち込んで加工する

という感じですね。

 

工場が出来ていないと、原材料の加工もできない

という状況は、Tensorflowの学習を手間のかかるものにしてしまうんですね。

 

そこで、eager executionを起動すれば

途中で解除することはできませんが

工場が無くても多少の加工が出来るようになる。

 

ってところでしょうか。

くわしい説明や例がありますので

是非@hiroyuki827 さんの記事をご参考ください。

 

tf.enable_eager_execution()

これで、eager executionを起動します。

 

現在の状況を表示してみると

となりました。

下準備は完了。

熱心な実行を始めまていきましょう。

 

データセットのダウンロード

ここで、アイリスデータセットをダウンロードします。

が、その前にターミナル画面に行きましょう。

後の操作により

現在のディレクトリに自動で.kerasというフォルダを作り

その中にデータセットを格納してしまいます。

 

私はCドライブの直下にAnaconda3のインストールをしているため

そこにファイルをまとめておきたい!

そのために

cd ..

を繰り返し、Cドラ直下へ移動した後

cd Anaconda3

と入力し

カレントディレクトリをAnaconda3に変更しておきます。

 

みなさんも、お好きなところにディレクトリを移動しておいてください。

 

それでは、ダウンロードに入ります。

 

train_dataset_url = "http://download.tensorflow.org/data/iris_training.csv"

train_dataset_fp = tf.keras.utils.get_file(fname=os.path.basename(train_dataset_url),
                                           origin=train_dataset_url)

 

tf.keras.utils.get_file関数を使って、データセットをダウンロードします。

train_dataset_urlにファイルのある箇所のURLを書いておき

train_dataset_fpによりファイルをダウンロードします。

 

詳細は公式ユーティリティを参照しましょう。

https://www.tensorflow.org/api_docs/python/tf/keras/utils/get_file

 

print("Local copy of the dataset file: {}".format(train_dataset_fp))

返り値に、ファイルの保存場所が入っているため

表示して見に行きましょう。

 

プリントしてみると

Local copy of the dataset file: /tmp\.keras\datasets\iris_training.csv

 

ん?/tmpだと?

Anaconda3の直下に指定したよな?

 

 

・・・ある。

 

この作業の前に、カレントディレクトリをユーザーの直下にしていたため

本名丸出しで作業しつつ、そこにダウンロードを指定してしまったため

Anaconda3直下に移動してから解説したんですが

権限の問題かも。Cドラ直下の/tmpフォルダに作成されました。

 

まいっか。

 

ファイルを開くと

こんな感じになっています。

 

 

まとめ

 

これでダウンロードが完了です。

ファイルの内容やトレーニング前の前処理については

次回の解説にします。

 

これで貴方の肩書は「熱心なダウンローダー」です。

ここからの肩書には、たぶん”熱心な”が付くんだろうなぁw

 

それでは。