本連載の「ゲーミングPCで試すディープラーニング、NVIDIAのDIGITSを使ってみる」では、MNISTデータセットを使って、LeNetを動かしてみた。ここではまず、学習データがどうなっているか、ユーザーディレクトリにあるmnistディレクトリを見てみることにしよう。Pythonのコマンドを実行しているとして説明を進めるので、他のディレクトリなどを使った場合は適宜読み替えてほしい。

 データセットの作成では、mnistの下にあるtrainディレクトリを指定した。ここを見ると数字の付いたフォルダがあり、その下に大量の画像ファイルがある。これが学習データになる。いわゆる「正解」情報はディレクトリ名として与えられ、ディレクトリ内部に同じ正解を持つ学習データファイル(画像ファイル)が入る。

 全く違う画像でも、同じようなデータ構造を作れば、LeNetを学習させられる。ただし、LeNetなどのニューラルネットワークは、受け付ける画像のサイズが決まっているため、データセットの作成時に解像度をニューラルネットワークに合わせる必要がある。LeNetを使う場合、28×28ドットでグレースケールの画像データを使わなくてはならない。

 なおDIGITSには、こうしたデータセット(学習対象データ)の状態を表示する機能がある。DIGITSで「Dataset」タブを開き、該当するデータセットを選ぶ。各データセットのページには、学習データ(Train)と検証(Validation。Valと略される)のデータベースがある。作成されたデータセットのデータベースなどは、DIGITSのJob Directory(ジョブ・ディレクトリ)に置かれる。場所は、データセットページ上部の「Job Infomation」にある。

画面1●データセットのページを開くと、「Job Infomation」のところに「Job Directory」という項目があり、これがDIGITSが管理するJobデータの場所となる
画面1●データセットのページを開くと、「Job Infomation」のところに「Job Directory」という項目があり、これがDIGITSが管理するJobデータの場所となる
[画像のクリックで拡大表示]

 ジョブ・ディレクトリをのぞいてみると、2つのデータベース用ディレクトリ(train_db、val_dv)といくつかのファイルがある。拡張子がlogのファイルは、データベース作成時に出力されたログファイルである。エラーなどがあった場合には、これを確認する。データベースディレクトリには、バイナリ形式のデータベースファイルがある。このようなファイルを作るのは、学習時にソフトウエアからのアクセスを簡単にして、処理を高速化するためだ。

画面2●Jobディレクトリを開いて見たところ。train_db、val_dbは、画像をデータベースファイル化したものが入っている。~.logファイルは作業時のログ出力で、エラーなどがあった場合にはこれを見る
画面2●Jobディレクトリを開いて見たところ。train_db、val_dbは、画像をデータベースファイル化したものが入っている。~.logファイルは作業時のログ出力で、エラーなどがあった場合にはこれを見る
[画像のクリックで拡大表示]

 DIGITSのデータセットのページにある「Create DB(tarin)」には、対象になったデータに関する要約などがある。ここにあるグラフは、カテゴリ(MNISTなら0~9の数字)と、画像データの数が縦棒グラフで表示されている。マウスカーソルをグラフに合わせるとカテゴリとデータ数が表示される。また、下にある「Explore the DB」をクリックすると、データベースに登録された画像データを表示させることが可能だ。

画面3●データセットのページにある縦棒グラフはディレクトリごとのデータ数を表している。マウスカーソルを置くと数字などを表示できる
画面3●データセットのページにある縦棒グラフはディレクトリごとのデータ数を表している。マウスカーソルを置くと数字などを表示できる
[画像のクリックで拡大表示]
画面4●棒グラフの下の「Explore the db」ボタンでは、学習対象となるデータを表示できる
画面4●棒グラフの下の「Explore the db」ボタンでは、学習対象となるデータを表示できる
[画像のクリックで拡大表示]

 このようにDIGITSを使う場合、学習データと言っても、とりあえずディレクトリに分類したファイルを用意すればよい。