张量流回归模型每次预测相同

2024-10-03 23:18:16 发布

您现在位置:Python中文网/ 问答频道 /正文

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.]]

^{pr2}$

[50.]]

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

[50.]]

她用了50个小时的时间来预测电子设备,她用了多少个小时。这4个特征位于输入特征向量x之下

为了解决这个回归问题,我使用了一个 一个输入层有4个感知器(输入特征),一个隐藏层有两个感知器和一个输出层有一个感知器。我用sigmoid作为激活函数。但是,对于输入的所有可能的输入向量,我得到了与M完全相同的预测值([[50.0]])。有人能告诉我吗 下面的代码有什么问题。我非常感谢你的帮助!(提前)


Tags: andofrunlayerforoutputtftraining
1条回答
网友
1楼 · 发布于 2024-10-03 23:18:16

您需要修改您的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)

希望这有帮助!在


别忘了告诉我们它是否解决了你的问题:)

相关问题 更多 >