簡単なニューラルネットワークを使って、学習回数ごとに学習データとテストデータの誤差の出力をしたいと考えています。
使っているコードは以下のようになります。
python
1# -*- coding: utf-8 -*- 2#@test {"output": "ignore"} 3training_steps = 25000 4for seed in range(1,11): #seedを1~10まで繰り返す 5 losses = [] 6 7 with tf.Session() as sess: 8 # Set up all the tensors, variables, and operations. 9 input = tf.constant(bias_with_x) 10 target = tf.constant(np.transpose([y_train]).astype(np.float32)) 11 12 #[ここは重みと閾値の初期化の部分のため省略] 13 14 tf.global_variables_initializer().run() 15 16 y1 = tf.nn.relu(tf.matmul(input, weights)) 17 y2 = tf.nn.relu(tf.matmul(y1, weights1)) 18 yhat = tf.sigmoid(tf.matmul(y2, weights2)) 19 yerror = tf.subtract(yhat, target) 20 loss1 = tf.nn.l2_loss(yerror) 21 L2_sqr = tf.nn.l2_loss(weights) + tf.nn.l2_loss(weights1) + tf.nn.l2_loss(weights2) 22 loss = loss1 + lambda_2 * L2_sqr 23 24 input_test = tf.constant(bias_with_x_test) 25 target_test = tf.constant(np.transpose([y_test]).astype(np.float32)) 26 y1_test = tf.nn.relu(tf.matmul(input_test, weights)) 27 y2_test = tf.nn.relu(tf.matmul(y1_test, weights1)) 28 yhat_test = tf.sigmoid(tf.matmul(y2_test, weights2)) 29 30 update_weights = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss) 31 32 for i in range(training_steps): 33 update_weights.run() 34 losses.append(loss.eval()) 35 # Training is done, get the final values for the graphs 36 betas = weights.eval() 37 yhat = yhat.eval() 38 error = np.sqrt(((y_train-yhat)*(y_train-yhat)).mean()) #RMSEの算出 39 40 size = len(y_train) 41 MAE = (np.sum(np.abs(y_train-yhat)))/size 42 43 yhat_test = yhat_test.eval() 44 size = len(y_test) 45 MAE_test = (np.sum(np.abs(y_test-yhat_test)))/size 46 47 global MAE_train_ave 48 MAE_train_ave += MAE 49 50 global MAE_test_ave 51 MAE_test_ave += MAE_test 52 53Train = MAE_train_ave/10.0 54Test = MAE_test_ave/10.0 55print('学習誤差 : %s' % Train) 56print('テスト誤差 : %s' % Test)
この処理の流れだと、最後に更新した学習回数(training_steps)のみの出力となっていしまいます。5000回ごとに出力させたいので、そのような処理のコードを入れたら良いのは分かるのですが、自分の理解不足で差し込んでも上手く処理ができていない状態にあります。
どの部分にどのようなコードを差しこめばよいか回答いただけるとありがたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/03 10:19