Kerasを使って構築したCNNでの学習結果をTersorBoardに反映する

▼この記事をSNSでシェアする▼

スポンサーリンク

スポンサーリンク

TensorFlowで構築したモデルでどんな処理が行われているのかを可視化して勉強したい・・・・

Pythonの機械学習って便利でライブラリでなんとかやってくれる部分が大きいので、出力結果と学習過程を描画しても処理の内容がいまいち考察できてなくて、モデルのチューニングをどうすればいいかわからないんですよね。

今回はTensorFlowを継承したKerasを使ってモデルを構築して、TensorBoardの描画に必要なログを学習実行時に出力するように設定し、TensorBoardで学習モデルの詳細情報を確認してみようと思います。

実行する学習モデル

概要

今回はscikit-learnで用意されているMNISTの手書き文字のデータをCNN(ニューラルネットワーク)の学習モデルで学習し、その結果をTensorBoardに表示します。

ニューラルネットワークのデバッグや結果の考察に役立てることが趣旨です。

詳細

学習モデル(CNN)

入力:手書き数字の画像は28px*28px(黒字に白背景)

出力:10個の数字(0〜9の数字)

手書き数字の画像を見て、どの数字を判定するかのCNNを構築します。

ソース

L26-28,65でTensorBoardに学習結果を表示するのに必要な設定です。

L26-28でcallbacks属性でログディレクトリの場所、画像・グラフの描画の有効化を指定して、L65で学習を実行する際にcallbacks属性を指定します。

cnn_keras.py

コマンド

学習モデルを実行し、そのあとにlogsディレクトリに生成されたlogを利用し、TensorBoardに学習結果を表示します。

TensorBoardでの詳細情報

グラフ

「GRAPH」タブに実装の通り各層がグラフで表示されています。

正解率・損失率

5回目の学習結果は以下の通りです。

正解率: 0.9884 loss: 0.03779061084749301

その学習結果も「SCALAR」タブで確認できます。

ヒストグラム

入力層では、層のバイアスとカーネル

出力層では、層の出力値のヒストグラムが参照できます。

まとめ

TensorFlowで簡単な演算を実装するのはそこまで難しくないのですが、ニューラルネットワークを構築しようとするのはけっこう複雑です。

Kerasで今回書いて見て、TensorFlowに比べてけっこうシンプルにできるんだなと感じました。

セッションとかプレースホルダとかの記述いらないし・・・

ニューラルネットワークを構築する際に、これをつかっていろいろチューニングできるようになりたいです、

スポンサーリンク


関連記事

▼この記事をSNSでシェアする▼

フォローする

メニュー・主な記事カテゴリ

おすすめ特集!




「ゆとり鳥日記」について
ITを中心に関心の赴くままに好きなように書いていく雑記ブログ!管理人が二人います。
◆フクロウ(ITコンサル)
◆santaka(SE)

詳しいプロフィール
お仕事の依頼・ご要望

ゆとり鳥日記をBTCで応援する