import tensorflow as tf
M = tf.Variable([0.01],tf.float32)
b = tf.Variable([1.0],tf.float32)
#inputs and outputs
x = tf.placeholder(tf.float32)
y = tf.placeholder(tf.float32) # actual value of y which we already know
Yp = M * x + b # y predicted value
#loss
squareR = tf.square(Yp - y)
loss = tf.reduce_sum(squareR)
#optimize
optimizer = tf.train.GradientDescentOptimizer(0.01)
train = optimizer.minimize(loss)
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
for i in range(1000):
sess.run(train,{x:[1,2,3,4,5],y:[1.9,2.4,3.7,4.9,5.1]})
print(sess.run([M,b]))
Ausganglineare Regression unter Verwendung tensorflow
[array([ 0.88999945], dtype=float32), array([ 0.93000191], dtype=float32)]
Problem: wenn ich die Werte von x am ändert und y zu
x:[100,200,300,400,500],y:[19,24,37,49,51]
dann ist der Ausgang:
[array([ nan], dtype=float32), array([ nan], dtype=float32)]
bitte helfen Sie mir, Hang und y-Achsenabschnitt des linearen Modells.
Vielen Dank ... Es funktionierte ... –
Aber die Steigung und y-Achse sind falsch. Die Werte von M = 0.089 und b = 9.3 –
benötigen möglicherweise mehr als 1000 Schritte für das Training, oder sie könnten in einer suboptimalen Lösung gelandet sein, da die Lernrate extrem langsam ist. Versuchen Sie, den Optimierer und/oder die Parameter zu ändern, aber das ursprüngliche Problem war die Divergenz des Optimierers, die auftritt, wenn der LR zu groß ist. – GPhilo