tensorflow
Eenvoudige lineaire regressiestructuur in TensorFlow met Python
Zoeken…
Invoering
Een model dat veel wordt gebruikt in traditionele statistieken is het lineaire regressiemodel. In dit artikel is het doel om de stapsgewijze implementatie van dit soort modellen te volgen. We gaan een eenvoudige lineaire regressiestructuur vertegenwoordigen.
Voor onze studie zullen we de leeftijd van de kinderen op de x- as en de lengte van de kinderen op de y- as analyseren. We zullen proberen de lengte van de kinderen te voorspellen, met behulp van hun leeftijd, door eenvoudige lineaire regressie toe te passen. [In TF vinden van de beste W en b]
parameters
Parameter | Beschrijving |
---|---|
train_X | NP-array met x-dimensie van informatie |
train_Y | np-array met y-dimensie van informatie |
Opmerkingen
Ik heb TensorBoard sintaxis gebruikt om het gedrag van sommige delen van het model, de kosten, de trein en de activeringselementen te volgen.
with tf.name_scope("") as scope:
Invoer gebruikt:
import numpy as np
import tensorflow as tf
Type toepassing en gebruikte taal:
Ik heb een traditioneel console-app-type gebruikt, ontwikkeld in Python, om het voorbeeld te vertegenwoordigen.
Gebruikte versie van TensorFlow:
1.0.1
Conceptueel academisch voorbeeld / referentie hieruit gehaald:
Eenvoudige regressiefunctie codestructuur
Functie definitie:
def run_training(train_X, train_Y):
Voert variabelen in:
X = tf.placeholder(tf.float32, [m, n])
Y = tf.placeholder(tf.float32, [m, 1])
Weergave van gewicht en vooringenomenheid
W = tf.Variable(tf.zeros([n, 1], dtype=np.float32), name="weight")
b = tf.Variable(tf.zeros([1], dtype=np.float32), name="bias")
Lineair model:
with tf.name_scope("linear_Wx_b") as scope:
activation = tf.add(tf.matmul(X, W), b)
Kosten:
with tf.name_scope("cost") as scope:
cost = tf.reduce_sum(tf.square(activation - Y)) / (2 * m)
tf.summary.scalar("cost", cost)
Opleiding:
with tf.name_scope("train") as scope:
optimizer = tf.train.GradientDescentOptimizer(0.07).minimize(cost)
TensorFlow-sessie:
with tf.Session() as sess:
merged = tf.summary.merge_all()
writer = tf.summary.FileWriter(log_file, sess.graph)
Opmerking: samengevoegd en writer maken deel uit van de TensorBoard-strategie om het gedrag van het model te volgen.
init = tf.global_variables_initializer()
sess.run(init)
1.5k keer de trainingslus herhalen:
for step in range(1500):
result, _ = sess.run([merged, optimizer], feed_dict={X: np.asarray(train_X), Y: np.asarray(train_Y)})
writer.add_summary(result, step)
Trainingskosten afdrukken:
training_cost = sess.run(cost, feed_dict={X: np.asarray(train_X), Y: np.asarray(train_Y)})
print "Training Cost: ", training_cost, "W=", sess.run(W), "b=", sess.run(b), '\n'
Concrete voorspelling op basis van het getrainde model:
print "Prediction for 3.5 years"
predict_X = np.array([3.5], dtype=np.float32).reshape([1, 1])
predict_X = (predict_X - mean) / std
predict_Y = tf.add(tf.matmul(predict_X, W), b)
print "Child height(Y) =", sess.run(predict_Y)
Hoofdroutine
def main():
train_X, train_Y = read_data()
train_X = feature_normalize(train_X)
run_training(train_X, train_Y)
Opmerking: onthoud afhankelijkheden van beoordelingsfuncties. read_data , feature_normalize en run_training
Normalisatie Routine
def feature_normalize(train_X):
global mean, std
mean = np.mean(train_X, axis=0)
std = np.std(train_X, axis=0)
return np.nan_to_num((train_X - mean) / std)
Gegevensroutine lezen
def read_data():
global m, n
m = 50
n = 1
train_X = np.array(
Interne gegevens voor de array
).astype('float32')
train_Y = np.array(
Interne gegevens voor de array
).astype('float32')
return train_X, train_Y