Kaggle学習の道(三)-Digit Recognizerの構築Tensorflow図
4589 ワード
-この記事では、Digit Recognizerの分析について説明します.コードについては、詳細なコメントを書いています.興味があれば、次の手順に進んでください.https://github.com/Skyamz/Data_Recognizer
一、いくつかの先行問題
Tensorflowとは?
Tensorflowは、データストリームのシステムとして理解される.フロントエンドはTensorflow図を構築し,バックエンドはsessionでこの図の計算を実行する.図中はデータを保存しないで、これらのデータはすべて流れて、任意に伝送することができて、Tensorflowはただ1つの計算のフレームワークを構築することを担当して、データを受信した後で、計算の結果は出力します.ここでのデータはテンソル(Tensor)と理解できる.つまりTensorflowに特有のデータです.
どうしてTensorflowを選んだの?
私たちのデータ量はとても大きくて、Tensorflowは分布式で、処理が速いです.Tensorflowは前の通俗的な元に基づいて一言をまとめると、ある図のライブラリ(この図はある関係を判断する)を探しに来て、特に画像の特徴の関係を探して、とても正確です.
Tensorflowは具体的にどのように働いていますか?
公式サイトの上にずっと掛けてある図を置いてください.この図にはボリューム層とpooling層がないので、回帰モデルと呼ぶしかありません(ボリューム層とpooling層は後述します).まずこのgifを見てみましょう.
各ノードは動作であり、流れる黒い線は伝送されるデータ、すなわちテンソルである.仕事の過程を大体まとめることができます.
ここではTensorflowのアーキテクチャの問題に関連しています.今回のプロジェクトとは何の関係もありませんので、ここでは詳しく説明しません.興味があれば、次の手順に進んでください.http://www.jianshu.com/p/a5574ebcdeab
データはいったいどうやって読み取ったのですか?またどのようにデータがこの図を出したと判断して、計算を始めますか?
ここではまず、epochsという名詞を導入します.どういう意味ですか.私は今40000行のデータを持っていて、私はこれらのデータをTensorflow図の中に置くたびに完全に走って、epochsは+1します.つまり、データセットを完全に計算した回数を表します.ここでは,構造図と計算データを2つのステップに分け,これは2つのスレッドと理解できる.一般的に、データ計算を行うときは、まずメモリキューにデータを読み込み、計算を担当するスレッドがメモリキューからデータを取り出すとokになります.現在epochsが導入されていますが、データ全体を何度も計算したいのではないでしょうか.
ファイル名キュー+メモリキューデュアルキューの形式でファイルを読み込み、epochsを容易に管理できます.100行目のデータをファイル名キューに入れ、50はepochsとして動作し、100行目の最後にend(終端)を設定します.メモリキューはファイル名キューからデータを読み込み、50行ずつepochs+1、endまで読み終わる.
二、CNNを構築してデジタル手書き体識別問題を解決する
まず、解決プロセスのフレームワークをプレビューし、各ステップの意味を説明します.
コンボリューション
ボリューム操作手順:3*3のボリュームコアで6*6のマトリクスフローをボリューム解除します:ここではSAME方式を使用しています.
プール化
プール化操作プロセス:3*3のマトリクスで6*6のマトリクスフローをプール化し、9つの数の中で最大を選択します.この操作はmax pooling:と呼ばれます.
緊密な接続層の確立
は第1層の処理を経て、ピクチャサイズは従来の28*28から7*7になり、64の特徴値がある.このステップでは、1024個のニューロンを有する緊密な接続層を追加し、各ニューロンは前の層の出力に接続されている.
Dropout
はDropout技術を用い,主にオーバーフィットを防止するためである.dropoutは主に有効パラメータの数を減らす.Dropoutは、各トレーニングフェーズでネットワークからノードを削除します.各ノードまたはkeep_prob確率はネットワークに保持されるか、確率1-keep_で保持される.prob破棄.トレーニングフェーズが終了すると、ノードは元の重みでNNに返される.dropoutのいくつかの一般的な解釈を見てください.http://blog.csdn.net/stdcoutzyx/article/details/49022443
Softmax層
softmaxレイヤを追加します.softmaxモデルは、異なるオブジェクトに確率を割り当てるために使用できます.例えば,1枚の画像が9の確率で80%,8の確率で5%であると判断する確率はsoftmaxで割り当てられる.
memoryjdch 2017-07-20