I.前文
すでにゆっくりと徐々に単一ニューロンから「登る」ニューラルネットワークと共通の最適化には、一つずつ解決されると、その後、前進実用的なアプリケーションの問題である、あなたは実用的なアプリケーションを持って開始する前に、「フレームワーク」は判明ので、バックは、我々はそうニューラルネットワークを実装し、自分の経験を持って前に多くの作業を減らすことができますフレームワークを使用して、ビジネスではなく、ネットワーク自体に集中する必要がある仕事をしているため、今は比較的容易なの数を理解するための枠組みを設定します。この記事では、我々は仕事の前にそれをリセットするために、より一般的なTensorflowを使用します。
Tensorflowのインストールについての備考:
1)python3.6をインストールし、高いバージョンはサポートしていません。
2)にtensorflowをインストールするPIP
二、softmax
あなたは、本明細書において使用されるソフトマックスとして、我々はもう少し難しい問題を得ることができ、問題を解決するために私たちの前で「ソフトマックスは」「それは9であるかどうかにデジタル写真の束から特定」することで、新技術の使用で、ここで言う必要が開始する前に、例えば:
「数のデジタル画像を識別します。」
この強力な、と私たちの前には、ここでは「2級」と認識し、我々はデジタル写真のいくつかは、その確率で識別できるソフトマックスを意味し、「マルチ分類を。」されるだけでなく、
実際には、少し変わらず、技術的には全体的なニューラルネットワークの構造を変更しましたが、我々は、ニューラルネットワークを使用する前に、「活性化機能」を覚えていませんか?確率は「数9である」として0と1の間の間隔値に出力を意味シグモイドを使用して一般的な最後の層は、発現しました。あるいはシグモイドソフトマックスは、出力が例えば数が、数10ではない加えて、本明細書で使用されます。
[0.1、0.2、0.3、0.7、0.3、0.1、0.2、0.3、0.1、0.2]
次のようにその意味は次のとおりです。
0確率:10%
1つの確率:20%
確率は30%
確率の4:70%
...
対応するラベルはまた、などの天然入力の数十、です。
[0、0、0、0、1、0、0、0、0、0]
それは、この表現が「one_hot_label」と呼ばれ、私たちは絵が数「4」で入力することを意味しています。このような入力と出力が「マルチ分類」ベースの形態であり、我々が1つの熱いフォームに直接ラベルデータを使用して加算mnistデータセットでは、「one_hot_label = True」にのみ必要です。
入力と出力の形態に加えて、同じ、ソフトマックス広がり関数ではなく、S字状の広がりが確かに同じではありませんが、Tensorflowのこれらの強力な手段が、我々はそれを心配する必要はありません逆。ここでは、徐々に、ニューラルネットワークベースのTensorflowを実現するために来ています。
第三に、プレースホルダプレースホルダを作成します
実際には、ここでYは、入力画像ベクトルラベルサイズ784と10のベクトルの大きさで表され、入力xです。TFはtf.placeholderが実際に2つの空の配列である、ここで定義されたtensorflowエンティティ、次のとおりです。
(784、なし)和(10、なし)
最初tensorflowにニューラルネットワークを構築する意味「プレースホルダ」プレースホルダの役割に1次元ベクトルの後ろに取得するためのプレースホルダは、単にデータが入力されたプレースホルダの道を押して、良い場所を占め、そのようなXとして、実走行を投げましたIMGの入力に関係なく、あなたが入力のセクションにカットし784を押すように、とにかく、何であるか形状、784ではありません。
第四に、B、Wの初期化パラメータ
全体的に前の初期化パラメータは、ほぼ乱数を生成するためにTFを除いて変更し、wGroup bGroupは(パラメータ名のみの入力にTFフレーム)パラメータをマージします。
第五に、広がり関数
ここでtf.matmul()W IN製品マトリックスを用いて実施され、次いで()プラスB tf.addによって達成しました。しかし、ここで、それは様々な操作のニューラルネットワークの構造によってのみ、「伝播機能」は本当にコンピューティングの普及をしないで「配置は」まあ、最後の層の操作は、結果を計算するために活性化関数を使用しますが、直接A.を返しませんでした の「機能喪失」に残りの動作を制御します。
第六に、機能の喪失
このようAT、実際には、それは考えられる、ここでは行列ではないではない理由、それはときにのみ、ニューラルネットワーク稼働計算の長いリストの結果である、ちょうど転置演算である)(ここではtf.transpose意志が行列です。だからここでAは、実際にコレクションの「オペレータ」のシリーズ、使用tf.transpose()は転置操作に重畳されています。
tf.reduce_meanは、()ここで、「損失」の計算であるが、実際に計算されていないが、この操作は、「配置」まあ、最終的な結果はcostFunとして返されます
七つの完全な実装
などが、また、「バックプロパゲーション」は意味言いませんでしたか?ここでは、ゆっくりと、パニックにならないでください。
モデル、プレースホルダ、initialize_parametersでは、前方、costCALのみを処理するために、ニューラルネットワーク「を構築」、前に議論されています。
オプティマイザ= tf.train.AdamOptimizer(learning_rate = learning_rate).minimize(costFun)
この文はアダムAdamOptimizer損失関数の最適化アルゴリズムを使用し、指定された使用を最小限に抑えるには、実際に我々は損失関数costFunが最小になる傾向構築するためにアダムの最適化アルゴリズムの蔓延を逆転するために必要なものをまとめることを示している、バックプロパゲーションを構築することです。
_、コスト= sess.run([オプティマイザ、costFun]、feed_dict = {X:train_img、Y:train_label})
これはfeed_dictが先に「プレースホルダ」形状とネットワークにtrain_imgのtrain_label入力、[オプティマイザ、costFun]指定されたネットワーク「フォワード伝搬+バックプロパゲーション」および損失の計算であり、実際のネットワーク動作であります。
パラメータ= sess.run(パラメータ)
バック最適化されたとしてパラメータのみが出力されます。
八、要約
Tensorflowが再び達成し、そして第二にも導入されたソフトマックスつ以上のクラス分類に拡張される前に、このセクションでは、単にニューラルネットワークの使用によって達成されます。Tensorflowはについて話をする別の章を開くために、可能なその後の発展の基礎となっています。
このセクションでは、取得AI14返信公共の「学習ゼロベースの愛」に注意してくださいコード番号の完全な実装を提供します。