準備、前方伝播と逆伝播ループ反復:レッスンは、ニューラルネットワークに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ノート、北京大学曹操建教師コース
#初期化