2を学習keras

今日、画像データを処理するための最も主流の技術は、ニューラルネットワーク、CNNは特に有名で、特に畳み込みニューラルネットワークの深さとして来ます。CNNは、MNist LeNet-5分類データセットを達成するために、モデルを構築するために本明細書で使用されるので、より良好なCNN CNNの導入と使用kerasを説明することによって理解リーダー。

1.CNN はじめに

CNNは、自動化された特徴抽出機械学習モデルです。まず、基本的なビルディング・ブロックの一部を使用するCNNを紹介します:

1.1コンボリューション層:重量の共有:コンボリューション層では、重要な概念があります。私たちは、畳み込みカーネルと入力による操作を畳み込み。図は、以下の方法を畳み込み演算によって理解されます。左から右へ、各スライドフレーム1(ステップ1)からの入力スキャンの畳み込みの後、次の図に示すスライド、畳み込みカーネルの対応する要素の入力フレームの各要素の位置蓄積緑色を乗算し、緑色のボックスに0の出力を得ることができます。一般に特徴マップの複数を得るために、入力データ照合の畳み込みを畳み込む複数の使用。


図1の畳み込み演算

1.2活性層:線形畳み込み演算が算出されるように、出力層の畳み込みは、非線形マッピングです。一般的な活性化関数はrelu、双曲線正接、シグモイドなど、一般的に使用さreluを持っています。

理由非線形活性化関数1.2.1の導入:

非線形写像を導入することなく、その後、どんなに多くの層ニューラルネットワークの線形結合の、1つの隠れ層の効果に匹敵する入力出力は、存在しません。

1.2.2理由reluの一般的な使用:

明らかに単純TANHシグモイドよりも、することができるであろうrelu誘導体を用いてバックプロパゲーション勾配計算の計算量を減らします

一方、使用TANH 及びシグモイドの層の数がより容易勾配の消失をもたらす場合、我々は、多層ニューラルネットワークを有する場合、それぞれの層がなければならない、1(活性化関数の導関数は、式を参照することができる)TANHシグモイドので、少ない誘導体以外であります乗算この誘導体は1以上であり、それは勾配消失と呼ばれるゼロに近いことが可能です。出力が0でない場合Relu誘導体は効果的勾配を消失回避することができる誘導体は、1である、使用しました。

さらに、マップは0未満RELUされるように、ニューロン間の依存性を減少させる、まばらなネットワークことは、0であるオーバーフィッティングを回避します


図2:右シグモイド、TANH、relu活性化機能に委ね

プール層:目的は、特徴マップのプールの大きさを減らすために、データの計算量を削減することです。層をプールする操作をプールするためのコンボリューション後の層、コンボリューション出力、です。操作をプーリング、二つの一般的およびMaxPooling MeanPoolingがあります。ウィンドウ(* 2、典型的には2)のプールを選択し、次に左から右へ走査し、ステップは、一般に2です。最大プールとしてウィンドウの位置の出力を選択するように、動作以下、図MaxPooling。例えば:特性値は、4つの緑色のボックスを左に、値として6位に対応する最大出力特性を選択します。そしてプールMeanPoolingウィンドウのための特徴値を平均しました。

完全なリンク層:主な機能は、再フィット、特性情報の損失を減らすことです。複数のマトリックス、及び完全に接続された入力ベクトル層は、接続層は、ベクトルの「平坦化」特徴マトリックス複数の、全体の前に行われることを特徴とする請求畳み込み演算によってプールが得られます。

 

コンボリューションのために、CNNプールの操作は、実際には、多くの記事を詳細に説明するが、どのようなコンボリューションのポイントがあると、プールは多くの記事が明確な説明が与えられていないということです。いくつかは、コンボリューションとプールが大幅にだけこのような理由の、重みパラメータを減らすことができると思うかもしれ?もちろん、次のCNNは、畳み込みとプールの重要性を理解するために効果的な分類を達成する方法を説明しますありません。

用深度学习解决图像识别问题,从直观上讲是一个从细节到抽象的过程。所谓细节,就是指输入图像的每个像素点,甚至像素点构成的边也可以理解为是细节。假设我们大脑接收到一张动物图,大脑最先反应的是该图的点和边。然后由点和边抽象成各种形状,比如三角形或者圆形等,然后再抽象成耳朵和脸等特征。最后由这些特征决定该图属于哪种动物。深度学习识别图像也是同样的道理。这里关键的就是抽象。何为抽象呢?抽象就是把图像中的各种零散的特征通过某种方式汇总起来,形成新的特征。而利用这些新的特征可更好区分图像类别。如刚才这个例子,点和边就是零散的特征,通过将边进行汇总我们就得到了三角形或圆形等新的特征,同理,将三角形这个特征和一些其他零散的特征汇总成耳朵这个新特征。显而易见,耳朵这个新特征会比三角形特征更利于识别图像。

深度学习正是通过卷积操作实现从细节到抽象的过程。因为卷积的目的就是为了从输入图像中提取特征,并保留像素间的空间关系。何以理解这句话?我们输入的图像其实就是一些纹理,此时,可以将卷积核的参数也理解为纹理,我们目的是使得卷积核的纹理和图像相应位置的纹理尽可能一致。当把图像数据和卷积核的数值放在高维空间中,纹理等价于向量,卷积操作等价于向量的相乘,相乘的结果越大,说明两个向量方向越近,也即卷积核的纹理就更贴近于图像的纹理。因此,卷积后的新图像在具有卷积核纹理的区域信号会更强,其他区域则会较弱。这样,就可以实现从细节(像素点)抽象成更好区分的新特征(纹理)。每一层的卷积都会得到比上一次卷积更易区分的新特征。

プールの主な目的は、重みパラメータを減らすことですが、なぜMaxpoolingやこの地域のMeanPooling代表的な特徴を行うことができますか?これはおそらく、それの重要な機能のいくつかを失うことはありませんか?これは、ある画像データが連続領域の相関を有し、画素値は、一般的に非常に異なっていない地域です我々はMaxpooling MeanPoolingを使用したり、機能の多くを失うことはありませんので、このような目のローカルエリアとしての画素値の差は、大きくありません。

 

2つのプロジェクト

2.1 モデルの紹介

CNNの上記の説明では、CNNの読者は、私たちは、この共通モデルCNN LeNet-5モデルを構築し、一定の理解を持って、そしてMnistデータセットを予測する必要があります。


図3:LeNet-5モデル

図LeNet-5モデルから、このモデルは、以下の構造から理解することができます。

第1層:畳み込み層

この層の元の入力画像画素は、モデル画像が1のステップで、32 * 32 * 5 * 5 1,6-畳み込みカーネルを受け入れ、0は、完全充填するために使用されていません。したがって、この層のサイズは、出力32-5 + 1 = 28、6の深さです。

第二層:細胞層

入力層の出力は、第一の層であり、ノード28 * 28 * 6の行列です。このフィルタは、サイズ層が2×2で使用するステップの長さ及び幅は2であり、この層の出力は、マトリクスのサイズ14 * 14 * 6です。

第三層:レイヤのコンボリューション

この層の入力行列のサイズが6,16 * 14 * 14 * 5畳み込みカーネル、すべて0が1のステップで、それを埋めるために使用されていない場合、この層の出力は、10 * 10 * 16です。

第四層:細胞層

出力マトリックス層5 * 5 * 16であるので、フィルタ層は、2 * 2、ステップ2を使用して形成されています。

五階:完全に接続層

前述のように、完全接続層のニーズに先立って、ベクターの「平坦化」の5 * 5 * 16マトリックスであることが。出力の数は、本層の120ノード。

第6層:全体の接続層

層84の出力ノードの数。

第七層:完全に接続層

最後の層は、出力ノード番号は、タグ10の数、サンプルです。

2.2 コードの実装

2.2.1 データ入力と処理

Mnistデータセットの手書き、トレーニングセットは60枚の000写真を持って、テストセット10,000絵がある、ラベルが0-9です。IDX Mnistデータセットファイル形式が多次元ベクトルと行列を格納するためのファイルフォーマットであるため、直接読み取ることができません。読むには二つの方法があります。最初Keras.datasetsライブラリはmnistデータセットを直接呼び出すことができましたが、原因が必要にKerasは、ダウンロードすることをお勧め遅く、データセットをダウンロードするためのアドレスを指定し、2番目は、データセットを解析するために、構造体のライブラリ関数を使用することです、あまりにも多くの問題が、あなたは試すことができます。


図4:インポートデータセットMnist

mnistデータセットは、単にいくつかの簡単な前処理を行うために、入力データ型は、データのfloat32に変換され、正規化されます。ホット符号化されたラベルの、最終出力ノード10の数、タグは一次元であるからです。


図5:データの前処理

2.2.2LeNet-5 建設モデル


図6:Kerasモデル構造LeNet-5

2.2.3トレーニングモデル


図7:トレーナー

2.2.4評価モデル


図8:評価モデル

テストセットの最終的な精度は、到達することができ 99.7%を

単純なプロジェクトを実施することにより、いずれかのヘルプは、私たちは、CNNの詳細情報だけでなく、Kerasアプリケーションに精通。最終的なモデルはまた次回を使用して簡単に、ローカルに保存することができます。


図9:保存したモデルを読み込みます

3。転移学習

転移学習はしている新しいモデルを訓練する助けに新しいモデルに移行するモデルパラメータを訓練してきました私たちは、移行を通じて学ぶことができるので、あなたがトレーニングモデルをスピードアップするために、いくつかの方法で、モデルへのモデルパラメータを共有することを学んだだろう、その最も相関データやタスクを考えます。

keras.applicationsライブラリは、すでにモデルの数を訓練した、我々はそれによって、私たちはモデルを取得したい既存のモデルにいくつかの変更を加えることができ、モデル構築とトレーニングの効率を向上させることができますまた、我々は良いアイデアですアイデアを用いた学習データ転送が不足しているとき。次の図では、単にVGG16を達成した学習を通って移動します。しかしながら、へVGG16モデルは、入力されたRGB画像を必要とする、画像処理モジュールのOpenCVを使用する必要があります。


図10:移行学習による高ビルドvgg16モデル

マップすることで、あなたはすべての再訓練は長い時間がかかります場合3364万正味重量は、あるvgg16、我々はより多くの畳み込みと層のプールを構築することを学ぶために移行することで保存することができ、かつ時間のトレーニングパラメータを保存することができていることがわかります時間。応じて再列車ネットワークの重みパラメータにするかどうか、 我々が使用したデータセットで使用されることは、元のモデルと一緒に配布されるデータセットの分布が適切であるかどうか モデルが関連していない場合は、訓練モデルの学習データの分布を作ることであるため、既存のネットワークの重みは、我々のデータセットには適していません。

オリジナルの記事は、0を発表 ウォンの賞賛0 ビュー41

おすすめ

転載: blog.csdn.net/rocking_struggling/article/details/104031801