アプリケーションtensorflow練習ニューラルネットワークの学習

  ニューラルネットワーク上のDeeplearning.ai最近の研究では、いくつかのテストをした、洞察力の数、記録、共有することを学ぶがあります。

 まず、ニューラルネットワーク

    ニューラルネットワーク:ニューラルネットワーク、アプリケーション情報処理の構造の類似した脳のシナプス結合の数学的モデル

    1、ニューロン

     ニューロンは、環境の変化を感じ、次のニューロンに情報を渡すことができ、人間の脳は860億個の神経細胞を持っています

  

  

    2、進化論

   

 

    6億年前、地球上の生命が表示されるようになったが、何もできない、問題は、私たちは緊張しないではないということです
    、何の神経移動することはできません、任意の情報を処理することができない死まで、唯一の沈黙があり、
    後に、クラゲがあった、クラゲました私たちは、それが神経系の世界で最初のセットがあるので、神経を持っている必要があります-ニューラルネットワーク
    それは世界中から収集することができるように、重要な情報クラゲニューラルネットワーク、などの捕食動物や食べ物がある場合などをし、この情報を渡します体のさまざまな部分に
    クラゲが生存の可能性を向上させるだけではなく、あてもなく、フローティング、幸運を祈願するために、環境の変化に対応できることを意味します

     3、学習の深さ

  

 

    2006年には、ジェフリー・ヒントン、最初の単語の「深さ」を使用して、学習の深さを提案:先駆者を紹介します。

呼ばれる貪欲層が賢明事前訓練政策の導入は、他の研究者は、これは熱意の波につながったニューラルネットワークのより深い訓練のために非常に有効であることを見出しました。

    しかし、そこに業界、そのビューは - そして、彼らは研究資金を申請するために、そう

 

    4、アンドリュー・ウビュー

  

 

     偉大な神のビューが矛盾している時、当然のことながら、これが理由である必要があります。

    これは、基本的な「ニューラルネットワーク」深い学習の重要性を認識し、学習、練習の効果のNgの深さの研究の深さです。これは、彼が後ろにニューラルネットワークに焦点を当てていた理由です。

 

学習の深さの第二に、台頭

 

 

 

    理由:データ、コンピューティングパワー、アルゴリズム

    (1)アルゴリズム:連続イノベーションの20年近く、より迅速に計算するために技術革新の多くは、(例えば、シグモイド関数はRelu機能に進化しました)

    勾配降下法は、パラメータにはほとんど変化は、トレーニングが非常に遅い場合ように端(2)シグモイド関数は、勾配は、約0、非常に小さいです

    (3)高速なコンピューティングが重要である:アイデア - コード - 実験、素早く反復を検証します

  

    このようなベクターマシンSVMなどの伝統的な機械学習方法、データ量の増加とともに、少量のデータを扱うときに、パフォーマンスが向上します。しかし、一定量のデータは、ボトルネックが発生しますとき、
優れた「パフォーマンスのパフォーマンス」を実現するために、次にどのように意味:最初の大規模ニューラルネットワークのニーズ、第二には、多くのデータが必要です
    :パフォーマンス上のトレーニングデータセットのサイズに影響を及ぼす
    データセットが小さい場合には、1:SVMのパフォーマンスも同様に、比較的高いのスキル手動設計コンポーネントである可能性が高い
    2、とき大規模なデータセット:ニューラルネットワークアルゴリズムは、他の安定をリードします 

 

 第三に、産業用アプリケーション

 

  (1)学習指導
  音の深さは、学習停止しませんが、現在唯一の経済的利益に機械学習を教師あり学習生成する決して誇張

  (2)非構造化データの
  シーン早いフィールドは、構造化データの経済的利益を生成し、人々がイメージで進歩を遂げることができるように、深学習とニューラルネットワークを感謝する必要性を、音声フィールド(非構造化データ)

 

共通の構造第四に、ニューラルネットワーク

  私たちは、レビューショーのために、この1をより理解している必要があります

  深ニューラルネットワークアーキテクチャ:DNN、CNN、RNN、LSTM、BLSTM

 

 

 第五に、ニューラルネットワーク学習システムの深さのアプリケーションは、それがどのように動作するかです 

  例えば、価格予測:

  住宅面積知られ、それは家の面積の望ましい予想価格です-価格:一次関数でフィットする;
  からなる魔法のニューラルネットワーク:十分な長(x、y)は、正確に計算することができますマッピング機能。

  私たちの使命は、次のとおりです。与えられたxとyのために、フィッティング関数を見つけます

 

 

  私たち以下の要因が住宅価格を拡張:エリア、お部屋タイプ、場所、周囲の設備
  X:X1、X2、X3、 X4 ...... 条件は複数の入力になる:n次元ベクトル
  の隠れ層の:あなただけの線形マッピングを行う場合は、出力を永遠にXは、発現が十分に線形変換ではない
  機能を活性化するために非線形変換関数を、目的は、より高い次元の特徴を抽出することであるより見る
  (バイナリ分類アプリケーションを、出力層の正規化を行う:確保するために、意味のある出力ソフトマックス関数)

 

六、デモ・検証

  以下に基づいて、当社の実験環境:パイソン+ tensorflowは、予測モデルを検証し、正しくツール環境を操作できます。

    1、tensorflow

Googleのオープンソース深度学習ツール
(第一世代のシステム上のDistBeliefパフォーマンスの拡張性は非常に良いですが、研究のために必要な柔軟性を達成する上で)作業の効率を高めるために第二世代の学習プラットフォーム
CPUへとGPU二つのバージョン
C ++、Python用のフロントエンドのサポートを書くための基礎となるC ++は、社内のサポートは行くし始めている
、携帯電話、PC、サーバークラスタリングなど、さまざまなハードウェアプラットフォーム上で実行するためのサポート、
Tensorboard、Webインターフェイス、デバッグツール:ツール

 

    2、アナコンダ 

Anacondaは、大規模データ処理、予測分析、および科学計算用のPython言語のオープンソースリリース、導入と管理を簡素化であるパック
公式サイトをします。https://www.anaconda.com/download/
の多くが事前にロードされましたこのようピップなどのサードパーティのライブラリは、
科学的なコンピューティング環境を含む、Pythonの3.6を推奨、しないのPython 2.xのパッケージ
tensorflow注意をインストールするには、コマンドをピップ:アナコンダをインストールした後は、のコマンドPIPツールのインストールtensorflowを使用します。--proxy 10.14.87.100:8080 PIP tensorflow(CPUインストールされたバージョン)をインストールします。http://auth-proxy.oa.com/DevNetTempVisit.aspxにエクストラネットへの一時的な許可を申請する必要があり

   

    3、Jupyterノート

Jupyterノートブック(以前は知らIPythonノートブック)は、対話型のノートブック、実行サポート40の以上のプログラミング言語です。
データ分析のための処理-計算-の分析
Pythonパッケージは、サードパーティのサポートの富をもたらし、自分を繰り返し、ホイールを作成する必要はありません
、徐々に、そのような複数のセルの切り取り/貼り付け、PPTショー、セルタグなど豊富な機能であり、

 

    4、ニューラルネットワークの設計

     

ニューラルネットワークを訓練する最も簡単なものは
一つだけのニューロン有する
入力:X(1、n)の
出力:Y(1、N)

目標:トレーニングを介して反復トレーニング、パラメータフィッティング関数が収束する(B、W)となるよう

 

  

 

W比較的深いニューラルネットワークのパラメータでは、B Lは、各順方向伝搬の結果に応じて算出され、

層の更新によって誘導体(例えば、最速の勾配降下)した後、逆拡散、層(逆)、

一回の反復(またはトレーニングと呼ばれる)は、Sigma活性化機能、m個のサンプルを完了します。

勾配降下ではなく、最小値、最小値を必要とされます。

注意:ステップの選択は非常に重要です、でも発散あまりにも極端ではない点にステップアップし、収束ステップ短いリードタイムが長すぎます。

 

  パラメータの更新:

 

 

 

  一般的なトレーニング・プロセスの概要:

  

  

要約すると:作業手順をニューラルネットワークシステムのおおよその深研究はに分かれています。

  図1は、前方に伝播:計算損失関数
  2、バックプロパゲーションネットワークパラメータ更新
  3、1/2リンクは連続の反復実施を繰り返します

 

添付ファイル:別のデモ、Mnistクラス予測手書きの数字

  :、実験上のルックMNIST実験不満を感じる
  アメリカ国立標準技術研究所からセットMNISTデータ、アメリカ国立標準技術研究所( NIST) 250の異なるヒト手書きからデジタルで構成されるトレーニングセット(トレーニングセット)。そのうち50%が高校生です、国勢調査局(国勢調査局)テストセット(テストセット)からのスタッフの50%は、手書きのデジタルデータの同じ割合です。

  MNISTデータは、4つの部分からなるhttp://yann.lecun.com/exdb/mnist/、で利用可能な設定:
  トレーニング画像がSET:電車・画像・IDX3は-ないubyte.gz(60,000サンプル)
  トレーニングセットラベル:列車のラベル-IDX1-ubyte.gz( 60,000 タグ)
  試験画像のSET:画像-T10K-IDX3はない-ubyte.gz(10,000サンプル)
  テストセットラベル:ラベル-T10K-IDX1-ubyte.gz(10,000タグ)

  私たちは、これらの写真を可視化することができます。

  

        6デジタルたとえば、程度長い。このように:

  

 

 私たちの仕事は、手書きの数字を認識するようにニューラルネットワークを訓練することです。

次に、試運転の後に設定された基準データをダウンロードすることができ、テストmnistのjupyter環境下で実際のコード、特に調節可能なパラメータであり、興味を持っています。

!#は/ usr / binに/ python3.5
# - * -コーディング:UTF-8 - * - 。
以下のように、上述した思想#コードを達成するために:
#1はmnist手書きデータ;.読み出し
[0〜#2のデータ値を,.浮動小数点形式の1]の範囲は、(黒い背景は、0から255-ホワイトの見通し)で白黒に変換される;
。コンテンツmnist.train.labelsに基づいて、#3が各ピクチャの確立がある数値インデックスを生成し、それが表します;関連するデジタル、それによってディレクトリセーブ対応を作成し
、次にmnist.train.imagesスルー#4ループ、各画像画素はクラスインスタンスPILイメージに割り当てられた、第三に画像を保存するために、画像クラスのsaveメソッドを呼び出します手順で作成したディレクトリに対応します。
#結果:mnistの真の画像含まカレントディレクトリに生成mnist_digits_imagesディレクトリ

インポートOSの
TF ASインポートtensorflowを
tensorflow.examples.tutorials.mnistインポートINPUT_DATAから

PILインポートイメージから

#は、画像の幅と高さを宣言
行を= 28の
COLS = 28

抽出する画像の#数
images_to_extract = 8000

パス#でのカレントディレクトリ保存する
SAVE_DIR =「./mnist_digits_images」

#はデータmnistを読み込みを
= input_data.read_data_sets MNIST( "/ AI-データ/ MNIST"、one_hot = False)が

#は、セッション作成
のSES = tf.Session()

は、全体像の取得
形状を= sess.run(tf.shape(mnist.train.images) )
形状= IMAGES_COUNT [0]
pixels_per_imageの形状= [1]

取得タブ位数
形状= sess.run(tf.shape(mnist.train.labels))
labels_count形状= [0]

は、二次元シートmnist.train.labelsあります続いて、生成されたデジタル画像のディレクトリ名の目的のために、それは一次元必要である量、(後限りFalseに設定one_hot属性データとして見出され、それ自体をmnist.train.labels一次元である)
#labels = sess.run(tf.argmax (mnist.train.labelsは、1))
= mnist.train.labelsラベル

#予想されるフォーマット・データ・セットかどうかをチェックする
(IMAGES_COUNT == labels_count)及び(shape.size == 1)場合:
印刷(「データ・セットが%の合計が含まれていSピクチャ、およびタグ%s「は%(images_count、labels_count))
印刷( "%sの画素を含む各画像" %(pixels_per_image))
プリント( "データ型:%s"は%(mnist.train.images.dtype))

#1 mnist画像データ値の範囲は[0,1] 、あなたは人間の目ように、[0255]、に拡張する必要があります
:mnist.train.images.dtype ==「のfloat32」IF
印刷は、(「バイナリ[0255]に[0,1]からデータ型を用意し...」 )
範囲(0、images_to_extract)におけるIのための:
のためのnにおける範囲(pixels_per_image):
mnist.train.images [I]が[N-] = 0 :! IF
mnist.train.images [I] [N-] = 255
#起因データ多数の画像を設定し、多くの時間を取ることができる変換は、変換の進行状況を印刷する必要がある
IF((I + 1)%50)== 0:
印刷(「画像の浮動小数点値の拡張スケジュール:%sの張、の合計を変換%sの張に変換する必要があり、 "%(I + 1、images_to_extract))

ディレクトリ保存デジタル画像を作成する
範囲(10)に私のために:
DIR =" %sの/%sの/「%(SAVE_DIR、I)
IFないOS。 path.exists(DIR):
印刷( "カタログ""%S" "は存在しません!自動的に作成され..." %dirを)
os.makdirs(DIR)

画像処理ライブラリで#パイソン、生成ピクチャ
インデックス= [範囲におけるX 0(0、10)]
の範囲内のiについて(0、images_to_extract):
IMG Image.new =( "L"、( COLS、行))
M中範囲(行):
N-における範囲(COLS):
img.putpixel((N、M)、INT(mnist.train.images [I] [N-M * colsの+]))
#パスはで表される対応する格納されたデジタルラベル画像を生成する
ラベルのための桁= [I]
パス= "%S /%S /%s.bmp" %(SAVE_DIR、ラベル[I]、インデックス[用桁])
指数[ための数字を] + = 1
img.save(パス)
による画像データセットの多数の#、保存プロセスは多くの時間がかかることがあり、印刷の進行状況を保存することが必要である
((I + 1)%50)== 0の場合:
印刷(「ピクチャー進行状況を保存:保存された%sの張、張は%sの保存合計「%(I + 1、images_to_extract))

他:
印刷(」画像の数とラベルの数「)と矛盾!

 

おすすめ

転載: www.cnblogs.com/zhaogang99/p/11428660.html