Buscar..


Introducción

Un modelo ampliamente utilizado en las estadísticas tradicionales es el modelo de regresión lineal. En este artículo, el objetivo es seguir la implementación paso a paso de este tipo de modelos. Vamos a representar una estructura de regresión lineal simple.

Para nuestro estudio, analizaremos la edad de los niños en el eje x y la altura de los niños en el eje y . Intentaremos predecir la altura de los niños, utilizando su edad, aplicando una regresión lineal simple [en TF, encontrando la mejor W y b]

Parámetros

Parámetro Descripción
tren_X np array con x dimensión de la información
tren_Y np array con y dimensión de información

Observaciones

Utilicé la sintaxis TensorBoard para rastrear el comportamiento de algunas partes del modelo, el costo, el tren y los elementos de activación.

with tf.name_scope("") as scope:

Importaciones utilizadas:

import numpy as np
import tensorflow as tf

Tipo de solicitud e idioma utilizado:

He utilizado un tipo de aplicación de implementación de consola tradicional, desarrollada en Python, para representar el ejemplo.


Versión de TensorFlow utilizada:

1.0.1


Ejemplo / referencia académica conceptual extraída de aquí :

Función de regresión simple estructura de código

Definición de la función:

def run_training(train_X, train_Y):

Variables de entrada:

X = tf.placeholder(tf.float32, [m, n])
Y = tf.placeholder(tf.float32, [m, 1])

Representación de peso y sesgo.

W = tf.Variable(tf.zeros([n, 1], dtype=np.float32), name="weight")
b = tf.Variable(tf.zeros([1], dtype=np.float32), name="bias")

Modelo Lineal:

with tf.name_scope("linear_Wx_b") as scope:
    activation = tf.add(tf.matmul(X, W), b)

Costo:

with tf.name_scope("cost") as scope:
    cost = tf.reduce_sum(tf.square(activation - Y)) / (2 * m)
    tf.summary.scalar("cost", cost)

Formación:

with tf.name_scope("train") as scope:
    optimizer = tf.train.GradientDescentOptimizer(0.07).minimize(cost)

Sesión TensorFlow:

with tf.Session() as sess:
    merged = tf.summary.merge_all()
    writer = tf.summary.FileWriter(log_file, sess.graph)

Nota: fusionado y escritor forman parte de la estrategia TensorBoard para rastrear el comportamiento del modelo.


    init = tf.global_variables_initializer()
    sess.run(init)

Repitiendo 1.5k veces el bucle de entrenamiento:

    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)

Costo de entrenamiento de impresión:

    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'

Predicción concreta basada en el modelo entrenado:

    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)

Rutina principal

def main():
    train_X, train_Y = read_data()
    train_X = feature_normalize(train_X)
    run_training(train_X, train_Y)

Nota: recuerde revisar las dependencias de las funciones. read_data , feature_normalize y run_training

Rutina de normalización

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)

Leer rutina de datos

def read_data():
    global m, n

    m = 50
    n = 1

    train_X = np.array(

Datos internos de la matriz.

    ).astype('float32')

    train_Y = np.array(

Datos internos de la matriz.

    ).astype('float32')

    return train_X, train_Y


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow