ニューラルネットワークを構築する手順

準備、前方伝播と逆伝播ループ反復:レッスンは、ニューラルネットワークに4つのステップを構築します。 
√0インポートモジュールは、シミュレートされたデータセットを生成;.
インポート
定数定義は、
データ・セットを生成
√1フォワード伝搬:入力パラメータおよび出力を定義
X = Y_ =
W1 = W2 =で
A = Yの=
バックプロパゲーション√2:定義損失関数、バックプロパゲーション法の
損失=
train_step =
。√3セッションを生成し、トレーニング段階は、車輪
tf.sessionで()は、ASセッション数
。init_op global_variables_initializerのTF =()
sess_run(init_op)
手順= 3000
レンジ(ステップ)におけるIのために:
=スタート
終了=
sess.run(train_step、feed_dict :)

Pythonコード:

#のコーディング:UTF 8 0インポートモジュールは、シミュレートされたデータセットを生成します。Tensorflowの研究ノート(北京)が完全にニューラルネットワークの学習構築するために解決tf3_6.py 
インポートTF AS tensorflow
 インポートNP AS numpyの
BATCH_SIZE = 8を
SEED = 23455 

RDM = np.random.RandomState(SEED)
X- = rdm.rand(32,2 
Y_ [INT(X0 + X1 <1)] = ため(X0、X1)におけるX-] #for(X0、X1)は、xのxからのすべての値X0及びX1を取ることで、[INT(X0 + X1 <1)]次に、平均X0 + X1 <1、Y_ = 1、そうでない場合は0、
 印刷" X-:\ N- " 、X-)
 プリント" Yは_:\ N- " 、Y_)
XTf.placeholder =(tf.float32、形状=(なし、2)) 入力用のプレースホルダが定義 
Y_ = tf.placeholder(tf.float32、形状=(なし,. 1)) プレースホルダで実装プレース 
W1 = TF .Variable(tf.random_normal([2 ,. 3]、STDDEV。1 =、= SEED。1)) 正規乱数は、 
W2 = tf.Variable(tf.random_normal([3 = 1、種子、1]、STDDEV = 1)) 正常乱数 
A = tf.matmul(X、W1) ドット積 
のW2 Y = tf.matmul(A)#1 の内積

2及び伝播方法バック定義損失関数。
= tf.reduce_mean loss_mse(tf.square(Y- Y_))
train_step = tf.train.GradientDescentOptimizer(0.001 ).minimize(loss_mse)
= tf.train.MomentumOptimizerのtrain_step(0.001,0.9).minimize(loss_mse) train_step = tf.train.AdamOptimizer .minimize(loss_mse)(0.001) 

3がセッションを生成、トレーニングステップが車輪。
のSESとしてtf.Session()と:
    init_op = tf.global_variables_initializer() は、初期化
    sess.run(init_op)
    出力電流(訓練されていない)パラメータ値。
    印刷" W1:N- \ " 、sess.run(W1))
     を印刷" W2:N- \ " 、sess.run(W2))
     を印刷" N-を\ " 
    
    #のトレーニングモデル。
    = 3000 STEPS  I 
    レンジ(ステップ): 3000は轮 
        32%(iはBATCH_SIZEを*)=開始iが8%32 * 
        端を= + BATCH_SIZE開始     iが8%×32 + 8 
        sess.runを(train_step、feed_dict = {X:X [開始:終了]、Y_:Y_は[開始:終了]を})
         であれば、I%500 == 0:
            total_loss = sess.run(loss_mse、feed_dict = {X:X、Y_:Y_})
             プリント" %d個のトレーニングステップの後(s)は、すべてのデータにloss_mseされ%G "(I、total_loss)) 
    
    输出训练后的参数取值。
    印刷" の\ n " プリント" W1:\ N- " 、sess.run(W1))
     を印刷" のW2:\ N- " 、のW2 sess.run()) #
 唯一の演算処理運ばビルド
#の算出マップ、ノーオペレーション、我々は、操作をしたい場合結果は、「セッションsession()」までに使用されます。√セッション(セッション):グラフ操作で計算ノードを行う   
    印刷" :W1 \ N- " 、W1)
     プリント" :\のN- W2 " のW2)
 " "" 
X-:
[0.83494319 0.11482951] 
 [0.66899751 0.46594987] 
 【0.60181666 0.58838408] 
 [0.31836656 0.20502072] 
 [0.87043944 0.02679395] 
 [0.41539811 0.43938369] 
 [0 0.68635684。
 【0.97315228 0.68541849] 
 [0.06727785 0.57784761]
 【0.03081617 0.89479913] 
 [0.24665715 0.28584862] 
 [0.31375667 0.47718349] 
 [0.56689254 0.77079148] 
 [0.7321604 0.35828963] 
 [0.15724842 0.94294584] 
 [0.34933722 0.84634483] 
 [0.50304053 0.81299619] 
 [0.23869886 0.9895604] 
 [0.4636501 0.32531094] 
 [0.36510487 0.97365522] 
 [0.73350238 0.83833013] 
 [0.61810158 0.12580353] 
 [0.59274817 0.18779828] 
 [0.87150299 0.34679501] 
 [0.25883219 0.50002932] 
 [0.75690948 0.83429824] 
 [0.29316649 0.05646578] 
 [0.10409134 0.88235166] 
 [0.38492705 0.48384792] 
 [0.69234428 0.19687348] 
 [0.42783492 0.73416985] 
 [0.09696069 0.04883936] 
Y_:
[1]、[0]、[0]、[1]、[1]、[1]、[1]、[0 ]、[1]、[1]、[1]、[0]、[0]、[0]、[0]、[0]、[0]、[1]、[0]、[0]、 [1]、[1]、[0]、[1]、[0]、[1]、[1]、[1]、[1]、[1]、[0]、[1]] 
W1:
[-0.81131822 1.48459876 0.06532937] 
 [-2.4427042 0.0992484 0.59122431] 
W2:
[-0.81131822] 
 [1.48459876] 
 [0.06532937] 


0トレーニングステップ(複数可)の後、すべてのデータにloss_mseは5.13118である
後500トレーニングステップ(S)すべてのデータのloss_mseが0.429111である
1000年のトレーニングステップ(複数可)した後、すべてのデータのloss_mseは0.409789です 
後に1500トレーニングステップ(S)、すべてのデータのloss_mseが0.399923である
2000のトレーニングステップ(複数可)した後、すべてのデータのloss_mseは0.394146です
2500トレーニングステップ(複数可)の後に、すべてのデータにloss_mseは0.390597であり


、W1:
[-0.70006633 0.9136318 0.08953571] 
 [-2.3402493 -0.14641267 0.58823055] 
W2:
[-0.06024267] 
 [0.91956186] 
 [-0.0682071]] 
""」
学ぶ:ムーレッスンAPP人工知能の練習-Tensorflowノート、北京大学曹操建教師コース

 

 

 

初期化

おすすめ

転載: www.cnblogs.com/fcfc940503/p/10929120.html