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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow