Está en la página 1de 6

19/3/2019 Comenzando con TensorFlow.

js - TensorFlow - Medio

Primeros pasos con TensorFlow.js


Laurence moroney Seguir
7 de junio de 2018 · 4 min de lectura

Con TensorFlow.js, no solo puede ejecutar modelos aprendidos en


máquina en el navegador para realizar inferencias, sino que también
puede entrenarlos . En este tutorial súper simple, te mostraré un
ejemplo básico de "Hola mundo" que te enseñará los andamios para
ponerte en marcha.

Comencemos con la página web más simple imaginable:

<html>
<head> </head>
<body> </body>
</html>

Una vez que tenga eso, lo primero que deberá hacer es agregar una
referencia a TensorFlow.js, para que pueda usar las API de TensorFlow.
El archivo JS está disponible en un CDN para su conveniencia:

<html>
<head>
<! - Cargue TensorFlow.js ->
<! - Obtenga la última versión en
https://github.com/tensorflow/tfjs ->
<script src = " https: // cdn.
jsdelivr.net/npm/@tensorflow/tfjs@0.11.2 "> </script>

https://medium.com/tensorflow/getting-started-with-tensorflow-js-50f6783489b2 1/6
19/3/2019 Comenzando con TensorFlow.js - TensorFlow - Medio

En este momento estoy usando la versión 0.11.2, pero asegúrate de


revisar la versión más reciente de GitHub.

Ahora que TensorFlow.js está cargado, hagamos algo interesante con él.

Considere una línea recta con la fórmula Y = 2X-1. Esto le dará un


conjunto de puntos como (-1, -3), (0, -1), (1, 1), (2, 3), (3, 5) y (4, 7).
Si bien sabemos que la fórmula nos da el valor Y para una X dada, es un
buen ejercicio para entrenar un modelo para una computadora que no
está programada explícitamente con esta fórmula, para ver si puede
inferir valores de Y para valores dados de X cuando se entrena en estos
datos.

Entonces, ¿cómo funcionaría esto?

Bueno, en primer lugar, podemos crear una red neuronal súper simple
para hacer la inferencia. Como solo hay 1 valor de entrada y 1 valor de
salida, puede ser un solo nodo. En JavaScript, luego puedo crear un
tf.sequential y agregarle mi de nición de capa. No puede ser más básico
que esto:

modelo const = tf.sequential ();


model.add (tf.layers.dense ({units: 1, inputShape:
[1]}));

Para terminar de de nir mi modelo, lo compilo, especi cando mi tipo


de pérdida y optimizador. Elegiré el tipo de pérdida más básico, el
meanSquaredError, y mi optimizador será un descenso de gradiente
estocástico estándar (también conocido como 'sgd'):

model.compile ({
loss: 'meanSquaredError',
optimizador: 'sgd'
});

Para entrenar el modelo, necesitaré un tensor con mis valores de


entrada (es decir, 'X') y otro con mis valores de salida (es decir, 'Y'). Con
TensorFlow, también necesito de nir la forma de ese tensor dado:

https://medium.com/tensorflow/getting-started-with-tensorflow-js-50f6783489b2 2/6
19/3/2019 Comenzando con TensorFlow.js - TensorFlow - Medio

const xs = tf.tensor2d ([- 1, 0, 1, 2, 3, 4], [6, 1]);


const ys = tf.tensor2d ([- 3, -1, 1, 3, 5, 7], [6, 1]);

Entonces, mis X son los valores -1,0,1,2,3 y 4, de nidos como un tensor


6x1. Mis Ys son -3, -1, 1, 3, 5, 7 en la misma forma. Tenga en cuenta que
la entrada nth Y es el valor para la entrada nth X cuando decimos que Y
= 2X-1.

Para entrenar el modelo utilizamos el método de ajuste . A esto


pasamos el conjunto de valores X e Y, junto con una serie de épocas
(recorre los datos) en las que lo entrenaremos. Tenga en cuenta que esto
es asíncrono, por lo que deberíamos esperar el valor de retorno antes de
continuar, por lo que todo este código debe estar en una función
asíncrona (más sobre esto más adelante):

aguarda model.fit (xs, ys, {epochs: 500});

Una vez hecho esto, el modelo está entrenado, por lo que podemos
predecir un valor para una nueva X. Entonces, por ejemplo, si
quisiéramos averiguar la Y para X = 10 y escribirla en la página en un
<div>, la El código se vería así:

document.getElementById ('output_field'). innerText =


model.predict (tf.tensor2d ([10], [1, 1]));

Tenga en cuenta que la entrada es un tensor, donde especi camos que es


un tensor 1x1 que contiene el valor 10.

El resultado está escrito en la página en el div, y debe verse algo como


esto:

https://medium.com/tensorflow/getting-started-with-tensorflow-js-50f6783489b2 3/6
19/3/2019 Comenzando con TensorFlow.js - TensorFlow - Medio

Espera, podrías preguntar, ¿por qué no es 19? Está bastante cerca, ¡pero
no es 19! Esto se debe a que el algoritmo nunca recibió la fórmula,
simplemente aprende según los datos que recibió. Con datos más
relevantes, cualquier modelo de ML dará una mayor precisión, pero este
no es malo, ya que solo tiene 6 datos para aprender.

Para su comodidad, aquí está el código completo de la página, incluida


la declaración de todo este código como una función asíncrona llamada
'learnLinear':

<html>
<head>
<! - Cargue TensorFlow.js ->
<! - Obtenga la última versión en
https://github.com/tensorflow/tfjs ->
<script src = " https: // cdn.
jsdelivr.net/npm/@tensorflow/tfjs@0.11.2 ">
</script>
</head>
<body > <body
id <" output_field "> </div>
</body>
<script>
función asíncrona learnLinear ( ) {
const model = tf.sequential ();
model.add (tf.layers.dense ({units: 1, inputShape:
[1]}));
model.compile ({
loss: 'meanSquaredError',
optimizador: 'sgd'
});

const xs = tf.tensor2d ([- 1, 0, 1, 2, 3, 4], [6,


const ys = tf.tensor2d ([- 3, -1, 1, 3, 5, 7], [6,
1]);

aguarda model.fit (xs, ys, {epochs: 500});

document.getElementById ('output_field'). innerText =


model.predict (tf.tensor2d ([10], [1, 1]));
}
learnLinear ();
</ i t>

https://medium.com/tensorflow/getting-started-with-tensorflow-js-50f6783489b2 4/6
19/3/2019 Comenzando con TensorFlow.js - TensorFlow - Medio

</script>
<html>

Y eso es todo lo que se necesita para crear un modelo de Machine


Learned muy simple con TensorFlow.js que se ejecuta en su navegador.
Desde aquí tienes la base para seguir adelante con conceptos más
avanzados.

¡Diviértete con eso!

https://medium.com/tensorflow/getting-started-with-tensorflow-js-50f6783489b2 5/6
19/3/2019 Comenzando con TensorFlow.js - TensorFlow - Medio

https://medium.com/tensorflow/getting-started-with-tensorflow-js-50f6783489b2 6/6

También podría gustarte