前提知識
参考サイト
-
TensorFlowチュートリアル和訳(Deep MNIST for Experts)
- 翻訳サイトはいくつかあるが、他のサイトだとTensorflowのバージョンが古く、サンプルコードに差異がある。Tensorflowのバージョンアップ激しすぎ。
-
『ゼロから作るDeep Learning』オライリー
「Deep MNIST for Experts」は難しい
- 最初のチュートリアル「MNIST for ML Beginners」に比べると、難しい
- 特に「Build a Multilayer Convolutional Network」の章から、急に難しくなる
- CNNを知っていること前提のためか、知らない用語がたくさん出てくる
「Deep MNIST for Experts」で新たに出てきた用語・内容
CNN(畳み込みニューラルネットワーク)
- ReLU
- Convolution(畳み込み)
- pooling(max pooling)
- stride size
学習
- 初期化の方法(微小な正の初期バイアス)
- Dropout
- ADAMオプティマイザー
Tensorflow
tf.truncated_normal
tf.nn.conv2d
tf.nn.max_pool
-
tf.summary.FileWriter
(TensorBoard用)
「MNIST for ML Beginners」の問題点
縦横の2次元データを1次元のデータに変換したことにより、
形状に関する情報(空間的に近い値はピクセル値も近い)が無視されている
⇒ 畳み込みを使って形状を維持する!
※ 『ゼロから作るDeep Learning』7.2.1章 参考
CNNに関する参考サイト
-
定番のConvolutional Neural Networkをゼロから理解する
- 畳み込みなどのアニメーションあり
- Convolutional Neural Networkとは何なのか
- 写真加工(フィルタの確認)
上記サイトが分かりやすいので、説明は省略します。
TensorBoard
Tensorflowの可視化ツール
- TensorBoard: Visualizing Learning(公式)
- あらゆるデータを可視化するTensorBoard徹底入門
- TensorBoardでビギナー向けMNISTチュートリアルを可視化する
mnist_deep.pyで、Tensorboard用のコード
mnist_deep.py の以下のコードは、Tensorboardが参照するデータを出力する
mnist_deep.py
graph_location = tempfile.mkdtemp()
print('Saving graph to: %s' % graph_location)
#⇒ Saving graph to C:\Users\yuji3\AppData\Local\Temp\tmps8xk5yjw
train_writer = tf.summary.FileWriter(graph_location)
train_writer.add_graph(tf.get_default_graph())
Tensorboard起動
- 以下のコマンドを実行する
> tensorboard --logdir=C:\Users\yuji3\AppData\Local\Temp\tmps8xk5yjw
-
localhost:6006
にアクセス - "Graph"で計算グラフを確認