tensorflow
Enkel linjär regressionsstruktur i TensorFlow med Python
Sök…
Introduktion
En modell som används i traditionell statistik är den linjära regressionsmodellen. I denna artikel är målet att följa stegvis implementering av denna typ av modeller. Vi kommer att representera en enkel linjär regressionsstruktur.
För vår studie kommer vi att analysera barnens ålder på x- axeln och barnens höjd på y- axeln. Vi kommer att försöka förutsäga barnens höjd, med hjälp av deras ålder, tillämpa enkel linjär regression. [I TF hitta bästa W och b]
parametrar
Parameter | Beskrivning |
---|---|
train_X | np-matris med x-dimension av information |
train_Y | np array med y-dimensionen av information |
Anmärkningar
Jag använde TensorBoard sintaxis för att spåra beteendet hos vissa delar av modellen, kostnad, tåg och aktiveringselement.
with tf.name_scope("") as scope:
Import som används:
import numpy as np
import tensorflow as tf
Typ av applikation och språk som används:
Jag har använt en traditionell app-typ för konsolimplementering, utvecklad i Python, för att representera exemplet.
Version av TensorFlow används:
1.0.1
Konceptuellt akademiskt exempel / referens härifrån :
Enkel regressionsfunktionskodstruktur
Funktionsdefinition:
def run_training(train_X, train_Y):
Inmatningsvariabler:
X = tf.placeholder(tf.float32, [m, n])
Y = tf.placeholder(tf.float32, [m, 1])
Vikt och biasrepresentation
W = tf.Variable(tf.zeros([n, 1], dtype=np.float32), name="weight")
b = tf.Variable(tf.zeros([1], dtype=np.float32), name="bias")
Lineal modell:
with tf.name_scope("linear_Wx_b") as scope:
activation = tf.add(tf.matmul(X, W), b)
Kosta:
with tf.name_scope("cost") as scope:
cost = tf.reduce_sum(tf.square(activation - Y)) / (2 * m)
tf.summary.scalar("cost", cost)
Träning:
with tf.name_scope("train") as scope:
optimizer = tf.train.GradientDescentOptimizer(0.07).minimize(cost)
TensorFlow-session:
with tf.Session() as sess:
merged = tf.summary.merge_all()
writer = tf.summary.FileWriter(log_file, sess.graph)
Obs: sammanslagna och författare är en del av TensorBoard-strategin för att spåra modellbeteendet.
init = tf.global_variables_initializer()
sess.run(init)
Upprepa 1,5k gånger träningslingan:
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)
Skriv utbildningskostnad:
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'
Konkret förutsägelse baserad på den tränade modellen:
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)
Huvudrutin
def main():
train_X, train_Y = read_data()
train_X = feature_normalize(train_X)
run_training(train_X, train_Y)
Obs: kom ihåg granskningsfunktionens beroenden. read_data , feature_normalize och run_training
Normaliseringsrutin
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)
Läs datarutin
def read_data():
global m, n
m = 50
n = 1
train_X = np.array(
Intern data för matrisen
).astype('float32')
train_Y = np.array(
Intern data för matrisen
).astype('float32')
return train_X, train_Y