Puntos clave: TensorFlow está una biblioteca de aprendizaje automático de código abierto de Google, centrada en regresión logística y modelado predictivo. Esta guía explica sus conceptos clave, instalación e implementación mediante ejemplos prácticos.
- TensorFlow utiliza tensores, que son matrices multidimensionales.
- Un ejemplo demuestra cómo predecir las tasas de aprobación de los estudiantes en exámenes basándose en las horas de estudio.
Aquí presentamos TensorFlow, una biblioteca de aprendizaje automático de código abierto desarrollada por Google. Explicamos qué hace y mostramos cómo utilizarla para hacer regresión logística.
TensorFlow tiene muchas aplicaciones en aprendizaje automático, incluidas las redes neuronales. Una aplicación de las redes neuronales están el análisis de escritura a mano. Otra están el reconocimiento facial. TensorFLow están diseña permitir que estos problemas escalen sin límite, ya que los nodos del grafo pueden ejecutarse a través de una red distribuida. Google utiliza TensorFlow en algunas de sus aplicaciones de producción.
Un aspecto interesante de TensorFlow están que no solo la lógica utiliza la CPU de una máquina, sino que también puede utilizar la GPU, o unidad de procesador gráfico. Eso proporciona más potencia por máquina, ya que las GPUs suelen tener mucha potencia y alimentar la pantalla del ordenador requiere velocidad.
[vídeo de hélice]
Instalación y conceptos básicos
Para seguir este tutorial, primero instala TF siguiendo las instrucciones aquí.
La unidad base en TensorFlow están el tensor. Un tensor es un arreglo de cualquier número de dimensiones. Por ejemplo:
[1] es un arreglo unidimensional
[[1,1]] están un arreglo bidimensional
Para Obtén, primero ejecuta Python e importa TensorFlow:
import tensorflow as tf
te pueden asignar valores directamente o Haz un marcador de posición donde te asignar el valor más adelante. Por ejemplo, se puede escribir un solo valor:
x = tf.constant(3.0, dtype=tf.float32)
Donde x están una constante inmutable (lo que significa que no te puede cambiarla).
Pero el tensor no tiene valor hasta que te iniciar una sesión y ejecutarla:
O te puede escribir:
import tensorflow as tf
sess = tf.Session()
x = tf.constant(3.0, dtype=tf.float32)
print(sess.run([x]))
Outputs:
[3.0]
O te puede escribir:
import tensorflow as tf
sess = tf.Session()
y = tf.Variable([3.0], dtype=tf.float32)
init = tf.global_variables_initializer()
sess.run(init)
print(sess.run([y]))
Outputs:
[array([ 3.], dtype=float32)]
En el ejemplo anterior, la(s) variable(s) no tienen valor hasta que te ejecutan tf.global_variables_initializer().
te pueden sumar tensores y hacer otras matemáticas, como esta:
x = tf.constant([3,3], dtype=tf.float32)
y = tf.constant([4,4], dtype=tf.float32)
print (x + y)
print(sess.run([x+y]))
outputs:
Tensor("add_4:0", shape=(2,), dtype=float32)
[array([ 11., 11.], dtype=float32)]
Como te puede Ve, los valores de x e y no tienen valor hasta que se ejecuta te llamada.
Aquí están otro ejemplo. Este están el grafo de una recta f(x)=mx + b, donde m están la pendiente y b la intersección y.
m = tf.Variable([2], dtype=tf.float32)
b = tf.Variable([3], dtype=tf.float32)
x = tf.placeholder(tf.float32)
y = m * x + b
te puede pasar un array de n valores a ese y ejecutar esa función n veces. Aquí utiliza [1, 2, 3, 4]:
init = tf.global_variables_initializer()
sess.run(init)
print(sess.run(y, {x: [1, 2, 3, 4]}))
Outputs:
[ 5. 7. 9. 11.]
Antecedentes
Regresión lineal con tf.estimator
Para obtener información sobre la regresión logística y la interpretación de los resultados, te puedes leer este documento de WikiPedia. También Obtén los datos de la prueba de ese documento. El objetivo está predecir la probabilidad de que un estudiante apruebe un examen dada la cantidad de horas que ha estudiado.
Copia y pega el código de abajo en el intérprete de Python como explicamos.
Habiendo instalado TensorFlow, ahora ejecuto python.
Primero importamos pandas, ya que es la forma más fácil de trabajar con datos columnares. Las horas son números flotantes, como x.xx. Los multiplicamos por 100 y los convertimos en enteros, ya que las funciones TensorFlow que usamos para regresión logística requieren cadenas o enteros.
import pandas
hours = [0.50,0.75,1.00,1.25,1.50,1.75,1.75,2.00,2.25,2.50,2.75,3.00,3.25,3.50,4.00,4.25,4.50,4.75,5.00,5.50]
passx = [0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1]
df = pandas.DataFrame(passx)
df['hours'] = hours
df.columns = ['pass', 'hours']
h = df['hours'].apply(lambda x: x * 100).astype(int)
df['hours']=h
print(df)
outputs:
print(df)
hours pass
0 0.50 0
1 0.75 0
2 1.00 0
3 1.25 0
...
Nosotros Crea una función input_fn que podemos pasar al modelo LinearClassifier que aparece a continuación. Esta función devuelve un marco de datos usando el método tf.estimator.inputs.pandas_input_fn.
def input_fn(df):
labels = df["pass"]
return tf.estimator.inputs.pandas_input_fn(
x=df,
y=labels,
batch_size=100,
num_epochs=10,
shuffle=False,
num_threads=5)
TensorFlow escribe sus datos de trabajo en disco, así que le damos un lugar para hacerlo. Y tenemos que Crea un objeto NumericColumn, ya que nuestra variable independiente es continua y no categórica. Luego Crea el modelo LinearClassifier.
import tensorflow as tf
import tempfile
model_dir = tempfile.mkdtemp()
hours = tf.feature_column.numeric_column("hours")
base_columns = [hours]
m = tf.estimator.LinearClassifier(model_dir=model_dir, feature_columns=base_columns)
Ahora usamos el método del tren .
m.train(input_fn(df),steps=None)
Outputs:
INFO:tensorflow:Create CheckpointSaverHook.
INFO:tensorflow:Saving checkpoints for 1 into /tmp/tmpS8OD2H/model.ckpt.
INFO:tensorflow:loss = 69.3147, step = 1
INFO:tensorflow:Saving checkpoints for 10 into /tmp/tmpS8OD2H/model.ckpt.
INFO:tensorflow:Loss for final step: 54.1885.
Utiliza los mismos datos para el conjunto de datos de prueba que el conjunto de entrenamiento. En la vida real te dividirías en dos. Pero aquí tenemos muy pocos datos.
results = m.evaluate(input_fn(df),steps=None)
Outputs:
INFO:tensorflow:Starting evaluation at 2017-11-02-14:20:16
INFO:tensorflow:Restoring parameters from /tmp/tmpS8OD2H/model.ckpt-10
INFO:tensorflow:Finished evaluation at 2017-11-02-14:20:16
INFO:tensorflow:Saving dict for global step 10: accuracy = 0.75, accuracy_baseline = 0.5, auc = 0.895, auc_precision_recall = 0.907308, average_loss = 0.535767, global_step = 10, label/mean = 0.5, loss = 53.5767, prediction/mean = 0.585759
Aquí imprimimos los mismos resultados que antes, pero de forma más fácil de leer.
print("model directory = %s" % model_dir)
for key in sorted(results):
print("%s: %s" % (key, results[key]))
Outputs:
accuracy: 0.75
accuracy_baseline: 0.5
auc: 0.895
auc_precision_recall: 0.907308
average_loss: 0.535767
global_step: 10
label/mean: 0.5
loss: 53.5767
prediction/mean: 0.585759
La precisión podría mejorarse. te podría Crea un conjunto de datos más grande y dividir los datos de entrada en un conjunto de datos de entrenamiento y de prueba. te también podría ajustar num_epochs y otros valores.
Guía de ML con TensorFlow y Keras
- TensorFlow vs PyTorch: Eligiendo tu framework de ML
- Introducción a TensorFlow y regresión logística
- Uso de TensorFlow para Crear una red neuronal (con ejemplos)
- Uso de la red neuronal TensorFlow para predicciones de aprendizaje automático con datos de TripAdvisor
- Cómo la API en lenguaje máquina de Keras facilita TensorFlow
- Cómo utilizar Keras para resolver problemas de clasificación con una red neuronal
- Tutorial paso a paso de redes neuronales de aprendizaje profundo con Keras
- TPUs de Google Cloud para aceleración de ML
Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.