Ich bin ein Anfänger im maschinellen Lernen und Tensorflow. Im ersten Schritt versuchte ich den Tensorflow und versuchte eine einfache multivariate lineare Regression. Es scheint jedoch, dass das Modell auf einem lokalen Minimum festsitzt. Hier ist mein Code.Tensorflow auf einfache lineare Regression
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
def weight_variable(shape):
initial = tf.truncated_normal(shape, stddev=1)
return tf.Variable(initial)
# dataset
xx = np.random.randint(0,1000,[1000,3])/1000.
yy = xx[:,0] * 2 + xx[:,1] * 1.4 + xx[:,2] * 3
# model
x = tf.placeholder(tf.float32, shape=[None, 3])
y_ = tf.placeholder(tf.float32, shape=[None])
W1 = weight_variable([3, 1])
y = tf.matmul(x, W1)
# training and cost function
cost_function = tf.reduce_mean(tf.square(y - y_))
train_function = tf.train.AdamOptimizer(1e-2).minimize(cost_function)
# create a session
sess = tf.Session()
# train
sess.run(tf.initialize_all_variables())
for i in range(10000):
sess.run(train_function, feed_dict={x:xx, y_:yy})
if i % 1000 == 0:
print(sess.run(cost_function, feed_dict={x:xx, y_:yy}))
Der Ausgang ist:
14.8449
2.20154
2.18375
2.18366
2.18366
2.18366
2.18366
2.18366
2.18366
Der Ausgangswert (yy) von 0 bis 6 ist, so mittlere quadratische Fehler mit 2,18 beträchtlich groß, wohl wissend, dass es kein Rauschen zu dem zugegebenen Datensatz. Ich habe auch GradientDescentOptimizer mit Lernrate 0.1 und 1e-2 versucht, aber es verbessert die Ergebnisse nicht viel.
Ist irgendetwas mit meiner Implementierung falsch?
ich sehe nicht, error_function de in Ihrem Code bestraft. Ist das gleich wie Kosten_Funktionen? Hast du versucht, deine Lernrate zu senken? – shekkizh
Sorry, ich meinte 'cost_function'. Ich habe es repariert. Danke für deinen Kommentar. – Firman