TensorFlow 学習ニューラルネットワーク構築

TensorFlow 学習ニューラルネットワーク構築

1. ニューラルネットワークを構築してレイヤーを追加する

入力値、入力サイズ、出力サイズ、活性化関数

ニューラルネットワークを勉強したことがある人なら、次の図を見れば理解できるでしょう。理解できない場合は、私の別のブログ (http://www.cnblogs.com/wjy-lulu/p/6547542.html) を読んでください。

  1. def add_layer(inputs、in_size、out_size、activate = None):
  2. Weights = tf.Variable(tf.random_normal([in_size,out_size]))#ランダム初期化
  3. baises = tf.Variable(tf.zeros([1,out_size])+0.1)#ランダムでも構いませんが、0に初期化しないでください。固定値はランダムよりも優れています。
  4. y = tf.matmul(inputs, Weights) + baises #matmul: 行列の乗算、multipy: 一般的に数量の乗算
  5. 有効にする場合:
  6. y = アクティブ化(y)
  7. yを返す

2. 二次関数のトレーニング

  1. テンソルフローをtfとしてインポートする
  2. numpyをnpとしてインポートする
  3.  
  4. def add_layer(inputs、in_size、out_size、activate = None):
  5. Weights = tf.Variable(tf.random_normal([in_size,out_size]))#ランダム初期化
  6. baises = tf.Variable(tf.zeros([1,out_size])+0.1)#ランダムでも構いませんが、0に初期化しないでください。固定値はランダムよりも優れています。
  7. y = tf.matmul(inputs, Weights) + baises #matmul: 行列の乗算、multipy: 一般的に数量の乗算
  8. 有効にする場合:
  9. y = アクティブ化(y)
  10. yを返す
  11. __name__ == '__main__'の場合:
  12. x_data = np.linspace(-1,1,300,dtype=np.float32)[:,np.newaxis]#-1,1の数値を300個作成します。これはこの時点では1次元行列であり、次に2次元行列に変換されます ===[1,2,3] -->>[[1,2,3]]  
  13. noise = np.random.normal(0,0.05,x_data.shape).astype(np.float32) #ノイズは (1,300) 形式、サイズは 0-0.05 です
  14. y_data = np.square(x_data) - 0.5 + noise # ノイズのある放物線
  15.  
  16. xs = tf.placeholder(tf.float32,[None,1]) #外部入力データ
  17. ys = tf.placeholder(tf.float32,[なし,1])
  18.  
  19. l1 = add_layer(xs,1,10,アクティブ化=tf.nn.relu)
  20. 予測 = add_layer(l1,10,1,activate=なし)
  21.  
  22. 損失 = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),reduction_indices=[1]))#エラー
  23. train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)# ステップ 0.1 での誤差の勾配最適化
  24.  
  25. sess = tf.Session()
  26. sess.run( tf.global_variables_initializer())
  27. iが範囲(1000)内にある場合:
  28. sess.run(train_step, feed_dict={xs: x_data, ys: y_data})#トレーニング
  29. i%50 == 0の場合:
  30. print(sess.run(loss, feed_dict={xs: x_data, ys: y_data}))# エラーを表示

3. トレーニングプロセスの動的表示

示されている手順は、プログラム内で部分的に説明されています。その他の手順については、 他のブログを参照してください (http://www.cnblogs.com/wjy-lulu/p/7735987.html)

  1. テンソルフローをtfとしてインポートする
  2. numpyをnpとしてインポートする
  3. matplotlib.pyplot をpltとしてインポートします。
  4.  
  5. def add_layer(inputs、in_size、out_size、activate = None):
  6. Weights = tf.Variable(tf.random_normal([in_size,out_size]))#ランダム初期化
  7. baises = tf.Variable(tf.zeros([1,out_size])+0.1)#ランダムでも構いませんが、0に初期化しないでください。固定値はランダムよりも優れています。
  8. y = tf.matmul(inputs, Weights) + baises #matmul: 行列の乗算、multipy: 一般的に数量の乗算
  9. 有効にする場合:
  10. y = アクティブ化(y)
  11. yを返す
  12. __name__ == '__main__'の場合:
  13. x_data = np.linspace(-1,1,300,dtype=np.float32)[:,np.newaxis]#-1,1の数値を300個作成します。これはこの時点では1次元行列であり、次に2次元行列に変換されます ===[1,2,3] -->>[[1,2,3]]  
  14. noise = np.random.normal(0,0.05,x_data.shape).astype(np.float32) #ノイズは (1,300) 形式、サイズは 0-0.05 です
  15. y_data = np.square(x_data) - 0.5 + noise # ノイズのある放物線
  16. fig = plt.figure( 'show_data' )# figure( "data" ) はチャート名を指定します
  17. ax = fig.add_subplot(111)
  18. ax.scatter(x_data,y_data)
  19. plt.ion()
  20. plt.show()
  21. xs = tf.placeholder(tf.float32,[None,1]) #外部入力データ
  22. ys = tf.placeholder(tf.float32,[なし,1])
  23.  
  24. l1 = add_layer(xs,1,10,アクティブ化=tf.nn.relu)
  25. 予測 = add_layer(l1,10,1,activate=なし)
  26.  
  27. 損失 = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),reduction_indices=[1]))#エラー
  28. train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)# ステップ 0.1 でのエラーの勾配最適化
  29.  
  30. sess = tf.Session()
  31. sess.run( tf.global_variables_initializer())
  32. iが範囲(1000)内にある場合:
  33. sess.run(train_step, feed_dict={xs: x_data, ys: y_data})#トレーニング
  34. i%50 == 0の場合:
  35. 試す:
  36. ax.lines.remove(行[0]) は行を削除します。
  37. 例外を除く:
  38. 合格
  39. 予測値 = sess.run(予測、フィードディクショナリ = {xs: x_data})
  40. 線 = ax.plot(x_data,予測値, "r" ,lw = 3)
  41. print(sess.run(loss, feed_dict={xs: x_data, ys: y_data}))# エラーを表示
  42. plt.一時停止(2)
  43. 真の場合:
  44. plt.一時停止(0.01)

4.TensorBoard全体の構造化表示

A. tf.name_scope("name") を使用して大きな構造を作成し、関数 name="name" を使用して小さな構造を作成します: tf.placeholder(tf.float32,[None,1],name="x_data")

B. writer = tf.summary.FileWriter("G:/test/",graph=sess.graph) を使用してグラフファイルを作成します。

C. TessorBoardを使用してこのファイルを実行する

ここで注意してください--->>>まず、ファイルを保存した前のディレクトリに移動します--->>次に、このファイルを実行します

テンソルボード --logdir=テスト

(GIF画像はブロックされています。具体的なインストール手順については「元のリンク」をクリックしてください!)

5.TensorBoard ローカル構造化ディスプレイ

A. tf.summary.histogram(layer_name+"Weight",Weights): ヒストグラム表示

     

B. tf.summary.scalar("Loss",loss): 折れ線グラフは、損失の方向によってネットワーク トレーニングの品質が決まることを示しています。これは非常に重要です。

C. 初期化と操作設定チャート

  1. merge = tf.summary.merge_all()#グラフ 2 をマージ writer = tf.summary.FileWriter( "G:/test/" ,graph=sess.graph)#ファイル 3 に書き込む result = sess.run(merge,feed_dict={xs:x_data,ys:y_data})#パッケージ化されたグラフ merge4 を実行する writer.add_summary(result,i)#ファイルに書き込み、単一ステップの長さは 50

完全なコードと表示効果:

  1. テンソルフローをtfとしてインポートする
  2. numpyをnpとしてインポートする
  3. matplotlib.pyplot をpltとしてインポートします。
  4.  
  5. def add_layer(inputs、in_size、out_size、n_layer = 1、activate = None):
  6. レイヤー名 = "レイヤー" + str(n_layer)
  7. tf.name_scope(layer_name)を使用する場合:
  8. tf.name_scope( "Weights" )を使用する場合:
  9. Weights = tf.Variable(tf.random_normal([in_size,out_size]), name = "W" )# ランダム初期化
  10. tf.summary.histogram(レイヤー名+ "重み" ,重み)
  11. tf.name_scope( "Baises" )を使用する場合:
  12. baises = tf.Variable(tf.zeros([1,out_size])+0.1, name = "B" )#ランダムでも構いませんが、0に初期化しないでください。固定値はランダムよりも優れています。
  13. tf.summary.histogram(レイヤー名+ "Baises" ,baises)
  14. y = tf.matmul(inputs, Weights) + baises #matmul: 行列の乗算、multipy: 一般的に数量の乗算
  15. 有効にする場合:
  16. y = アクティブ化(y)
  17. tf.summary.histogram(レイヤー名+ "y_sum" ,y)
  18. yを返す
  19. __name__ == '__main__'の場合:
  20. x_data = np.linspace(-1,1,300,dtype=np.float32)[:,np.newaxis]#-1,1の数値を300個作成します。これはこの時点では1次元行列であり、次に2次元行列に変換されます ===[1,2,3] -->>[[1,2,3]]  
  21. noise = np.random.normal(0,0.05,x_data.shape).astype(np.float32) #ノイズは (1,300) 形式、サイズは 0-0.05 です
  22. y_data = np.square(x_data) - 0.5 + noise # ノイズのある放物線
  23. fig = plt.figure( 'show_data' )# figure( "data" ) はチャート名を指定します
  24. ax = fig.add_subplot(111)
  25. ax.scatter(x_data,y_data)
  26. plt.ion()
  27. plt.show()
  28. tf.name_scope( "inputs" )を使用する場合:
  29. xs = tf.placeholder(tf.float32,[None,1], name = "x_data" ) # 外部入力データ
  30. ys = tf.placeholder(tf.float32,[None,1],名前= "y_data" )
  31. l1 = add_layer(xs,1,10,n_layer=1,activate=tf.nn.relu)
  32. 予測 = add_layer(l1,10,1,n_layer=2,activate=なし)
  33. tf.name_scope( "loss" )の場合:
  34. 損失 = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),reduction_indices=[1]))#エラー
  35. tf.summary.scalar( "損失" , 損失)
  36. tf.name_scope( "train_step" )を使用する場合:
  37. train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)# ステップ 0.1 でのエラーの勾配最適化
  38.  
  39. sess = tf.Session()
  40. マージ = tf.summary.merge_all()#マージ
  41. ライター = tf.summary.FileWriter( "G:/test/" 、グラフ = sess.graph)
  42. sess.run( tf.global_variables_initializer())
  43. iが範囲(1000)内にある場合:
  44. sess.run(train_step, feed_dict={xs: x_data, ys: y_data})#トレーニング
  45. i%100 == 0の場合:
  46. result = sess.run(merge,feed_dict={xs:x_data,ys:y_data})#パッケージ化されたチャートのマージを実行する
  47. writer.add_summary(result,i)#ファイルに書き込み、1ステップの長さは50です

主にMo Fanを参照してください:https://morvanzhou.github.io/

視覚化に問題があります。この偉大な神を参照してください: http://blog.csdn.net/fengying2016/article/details/54289931

<<:  機械学習に関する9つのよくある誤解

>>:  WOT + ヒーローズ ギャザリング、2018 年に技術者が見逃せないお祭り

ブログ    
ブログ    
ブログ    

推薦する

AIがサプライチェーンと物流に与える影響

1. サプライチェーンにおける人工知能の応用テクノロジーの変革の可能性のため、多くの業界で AI の...

各行列乗算には1光子未満が使用され、手書き数字認識の精度は90%を超え、光ニューラルネットワークの効率は数桁向上します。

現在、ディープラーニングは、ゲーム、自然言語翻訳、医療画像分析など、ますます多くのタスクで人間を上回...

...

産業用AIが製造業に変革をもたらす5つの方法

すべての分野の中で、人工知能は製造業に最も大きな影響を与えており、この変革はまだ始まったばかりです。...

人工知能産業は活況を呈しているが、スタートアップ企業は資金調達が難しくなっている

12月13日、人工知能(AI)スタートアップ企業へのベンチャーキャピタルの収益が鈍化している可能性が...

...

...

人工知能は人類のより良い生活を可能にする

新世代人工知能の活発な発展は、科学技術革新と産業のアップグレードと変革の産業推進の焦点となり、経済社...

NVIDIA AI ゲーム エンジンをテスト: NPC とリアルタイムでチャット、中国語の会話は超スムーズ

『サイバーパンク2077』で黄院士が作成したインテリジェントNPCはすでに中国語を話している?実際に...

2018 年の最もクールな機械学習と人工知能のスタートアップ 10 社

人工知能革命の到来は、IBMの先駆的な研究者アーサー・サミュエルが世界初のコンピューターにチェッカー...

コロナウイルス流行中のIoTの真実と虚構を区別する

モノのインターネットは長い間、インターネットの第2フェーズとして宣伝されてきましたが、現在、コロナウ...

...

IoT が成功するために AI が必要な理由

モノのインターネットは膨大な量のデータを生成します。そのデータは、都市が事故や犯罪を予測するのに役立...

IDC FutureScape: 人工知能がIT業界とビジネス運営を変革する

IDC は、2024 年以降の世界の情報技術業界の予測である FutureScape レポートを発表...

アメリカはAIイノベーションをリードしているのか?フォーブス誌のグローバルAIスタートアップトップ50

NetEase Intelligence News: 人工知能はまもなく私たちの世界を変えるでしょ...