2017-08-04 13 views
0
import tensorflow as tf 

x = tf.placeholder(tf.float32, [None,4]) # input vector  

w1 = tf.Variable(tf.random_normal([4,2])) # weights between first and second layers 

b1 = tf.Variable(tf.zeros([2]))    # biases added to hidden layer 

w2 = tf.Variable(tf.random_normal([2,1])) # weights between second and third layer 

b2 = tf.Variable(tf.zeros([1]))    # biases added to third (output) layer 

def feedForward(x,w,b):      # function for forward propagation 
  Input = tf.add(tf.matmul(x,w), b) 

      Output = tf.sigmoid(Input) 

      return Output 


>>> Out1 = feedForward(x,w1,b1)    # output of first layer 

>>> Out2 = feedForward(Out1,w2,b2)    # output of second layer 

>>> MHat = 50*Out2        # final prediction is in the range (0,50) 



>>> M = tf.placeholder(tf.float32, [None,1]) # placeholder for actual (target value of marks) 

>>> J = tf.reduce_mean(tf.square(MHat - M)) # cost function -- mean square errors       

>>> train_step = tf.train.GradientDescentOptimizer(0.05).minimize(J)  # minimize J using Gradient Descent 

>>> sess = tf.InteractiveSession()    # create interactive session 

>>> tf.global_variables_initializer().run() # initialize all weight and bias variables with specified values 

>>> xs = [[1,3,9,7],  
      [7,9,8,2],       # x training data 
      [2,4,6,5]] 

>>> Ms = [[47], 
      [43],        # M training data 
      [39]] 

>>> for _ in range(1000):      # performing learning process on training data 1000 times 

     sess.run(train_step, feed_dict = {x:xs, M:Ms}) 


>>> print(sess.run(MHat, feed_dict = {x:[[1,3,9,7]]})) 

[50]Tensorflow回帰モデルと同じ予測を毎回与え

>>> print(sess.run(MHat, feed_dict = {x:[[1,15,9,7]]})) 

[50]

このコードで
>>> print(sess.run(tf.transpose(MHat), feed_dict = {x:[[1,15,9,7]]})) 

[[50]]

、私は彼/彼女は、眠っていた研究、電子機器を使用して再生どのように多くの時間与えられた50のうち、学生のマークMを予測しようとしています。これらの4つの特徴は、入力特徴ベクトルxの下に来る。

この回帰問題を解決するために、私は の4つのパーセプトロン(入力フィーチャ)を持つ深層ニューラルネットワーク、2つのパーセプトロンを持つ隠れ層、および1つのパーセプトロンを持つ出力レイヤを使用しています。私は活性化機能としてシグモイドを使用しました。しかし、私は入力可能なすべての入力ベクトルに対して、Mの正確な予測([[50.0])を得ています。誰かが私に教えてください。 以下のコードで何が問題なのですか?私は大いに助けを賛美する! (前)

答えて

0

feedforward()機能を変更する必要があります。ここでは、(単に活性化関数を返す!)そして最後の層でsigmoid()を適用する必要はありませんまた、50

def feedForward(X,W1,b1,W2,b2): 
    Z=tf.sigmoid(tf.matmul(X,W1)+b1) 
    return tf.matmul(Z,W2)+b2 
MHat = feedForward(x,w1,b1,w2,b2) 

このことができますご希望により、この関数の出力を乗算する必要はありません!


は、それはあなたの問題を解決した場合はお知らせすることを忘れないでください:)

+0

@Tarunそれはあなたの問題を解決したならば、あなたは正しい答えとしてそれをマークする必要があります。将来類似の問題に直面する場合は、他の人にも役立つでしょう。ありがとう! – Prem

関連する問題