質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

0回答

1493閲覧

Tensorflowを用いたニューラルネットワークの予測評価について

muuu4649

総合スコア11

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/11/23 15:20

編集2022/01/12 10:55

#やりたいこと
・Tensorflowを用いたニューラルネットワークで、読み込んだcsvデータを使用し、数値予測を行いたい。
・トレーニングデータ(x_train,y_train)でモデルを作り、テストデータ(x_test,y_test)で評価したい。
・ニューラルネットワークの隠れ層は活性化関数(シグモイド)一層。
・損失関数は絶対平均誤差(MAE)で行いたい。

#現状の問題
・Accuracyが1.0になってしまう。csvデータはおそらくおかしくない。(kerasで作ったニューラルネットワークで確認済み)
・Session内の定義がおかしいと考えている。

#問題のプログラム

import numpy as np import pandas as pd import tensorflow as tf # Parameters learning_rate = 0.01 training_epochs = 10 batch_size = 100 display_step = 1 train_size = 800 step_size = 1000 # Network Parameters n_hidden_1 = 614 n_input = 614 n_classes=1 data=np.loadtxt("input.csv",delimiter=",",dtype="float")#入力変数 data1=np.loadtxt("output.csv",delimiter=",",dtype="float",skip_header=1)#目的変数 X1=data[0:4000,0:614] Y1=data1[0:4000,0:1] x_train=X1[0:3000,:] y_train=Y1[0:3000,:] x_test=X1[3000:4000,:] y_test=Y1[3000:4000,:] # tf Graph input x = tf.placeholder("float", [None, n_input]) y = tf.placeholder("float", [None, n_classes]) # Create model def multilayer_perceptron(x, weights, biases): # Hidden layer with Sigmoid activation layer_1 = tf.add(tf.matmul(x, weights['h1']), biases['b1']) layer_1 = tf.nn.sigmoid(layer_1) # Output layer with linear activation out_layer = tf.matmul(layer_1, weights['out']) + biases['out'] return out_layer # Store layers weight & bias weights = { 'h1': tf.Variable(tf.random_normal([n_input, n_hidden_1])), 'out': tf.Variable(tf.random_normal([n_hidden_1, n_classes])) } biases = { 'b1': tf.Variable(tf.random_normal([n_hidden_1])), 'out': tf.Variable(tf.random_normal([n_classes])) } # Construct model pred = multilayer_perceptron(x, weights, biases) # Define loss and optimizer cost = tf.reduce_mean(tf.map_fn(tf.abs, y - pred)) #cost = tf.reduce_mean(tf.losses.mean_squared_error(predictions=pred,labels=y)) optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost) # Initializing the variables init = tf.initialize_all_variables() # Launch the graph with tf.Session() as sess: sess.run(init) # Training cycle for epoch in range(training_epochs): avg_cost = 0. # Loop over step_size for i in range(step_size): # 訓練データから batch_size で指定した数をランダムに取得 ind = np.random.choice(batch_size, batch_size) x_train_batch = x_train[ind] y_train_batch = y_train[ind] # Run optimization op (backprop) and cost op (to get loss value) _, c = sess.run([optimizer, cost], feed_dict={x: x_train_batch, y: y_train_batch}) # Compute average loss avg_cost += c / step_size # Display logs per epoch step if epoch % display_step == 0: print ("Epoch:", '%04d' % (epoch+1), "cost=", "{:.9f}".format(avg_cost)) print ("Optimization Finished!") # Test model correct_prediction = tf.equal(tf.argmax(pred, 1), tf.argmax(y, 1)) # Calculate accuracy accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float")) print ("Accuracy:", accuracy.eval({x: x_test, y: y_test}))

#出力結果
Epoch: 0001 cost= 0.369236527
Epoch: 0002 cost= 0.293005231
Epoch: 0003 cost= 0.240351768
Epoch: 0004 cost= 0.254986027
Epoch: 0005 cost= 0.280752749
Epoch: 0006 cost= 0.282177720
Epoch: 0007 cost= 0.265220450
Epoch: 0008 cost= 0.253898602
Epoch: 0009 cost= 0.276555079
Epoch: 0010 cost= 0.260554105
Optimization Finished!

Accuracy: 1.0

至らない点があるかもしれませんがよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tiitoi

2018/11/23 15:24

accracy 1 になることのなにが問題なのでしょうか?
muuu4649

2018/11/23 15:44

回答ありがとうございます。そもそも自分がうまく理解できていない部分が多いです。申し訳ありません。本当はニューラルネットの学習状況はMAEで評価したいですが、テストデータを用いて予測した結果評価は決定係数で行いたいです。それをどう表現すれば良いかわからないことが自分が混乱している原因だとも思っています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問