04. tensorflow español

04.-TensorFlow js en Español?? [Manejo de Memoria]

Introducción

En este tutorial vamos a trabajar con la memoria de nuestra aplicación (y si debemos cuidar la memoria) que aunque no es la memoria de nuestro servidor es la memoria del navegador del cliente, en otras palabras que es el navegador del cliente el que tenemos que cuidar. Imaginemos este escenario: Tenemos un cliente visitando nuestra pagina web la cual trabaja con tensorflow y ademas esta navegado con google chrome (tomemos en cuenta que chrome consume mucha memoria), ademas tenemos a tensorflow el cual realiza operaciones complejas, por si fuera poco esta webgl que es una librería de gráficos en 3D. Al final tenemos una bomba para el navegador y provocar que nuestra pagina web se llegue a caer al consumir muchos recursos. Para evitar estos problemas nuestros amigos de tensorflow nos entregan algunas funciones de control y manejo de memoria RAM y es una especie de Garbage colector algo así como el Garbage colector de JAVA. Este un pequeño programa que revisaba constantemente la memoria ram de objetos que ya no se ocupaban. Tensor flow nos entregan una funciones de garbage colector. En otras palabras los tensores que ya no estemos ocupando los podemos desechar de forma manual-automático.

Codigo

<!DOCTYPE html>
<html>
    <head>
        <link rel="shortcut icon" href="favicon.ico">
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs/dist/tf.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.7.3/p5.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.7.3/addons/p5.dom.js"></script>
    </head>
    <body>
        <script>
            function draw() {
                const val = [];
                for (i = 0; i < 30; i++) {
                    val[i] = Math.random(1, 100) * 100;
                }
                tf.tidy(() => {
                    const tens = tf.tensor3d(val, [5, 3, 2], "int32");
                    //tens.print();
                    //console.log(tens.data());
                    /*
                     tens.data().then(function (res) {
                     console.log(res[2]);
                     });
                     console.log(tens.dataSync());
                     */

                    //const x = tf.variable(tf.tensor([1, 2, 3]));
                    //x.print();
                    //x.assign(tf.tensor([4, 5, 6]));
                    //x.print();

                    const a = tf.tensor2d([[1, 2, -3], [4, 0, -2]]);
                    const b = tf.tensor2d([[3, 1], [2, 4], [-1, 5]]);
                    const mul = tf.matMul(a, b);
                });
                
                //tens.dispose();
                //x.dispose();
                //a.dispose();
                //b.dispose();
                //mul.dispose();
                console.log(tf.memory().numTensors);
            }


        </script>
    </body>
</html>

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos Ver más

  • Responsable: Eugenio Chaparro.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a digitalocean.com que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad
Salir de la versión móvil