Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

486
Vistas
¿Cómo construir un modelo tensorflow.js para predecir el cuadrado de un número?

Estoy tratando de crear un modelo tensorflow.js ( con javascript ) para predecir el cuadrado de un número, así que tengo una función para crear xData (x) y yData (x²).

He intentado usar muchas capas ocultas con diferentes unidades y entrenar con mil épocas pero la pérdida es muy alta y las predicciones no son nada buenas.

aquí está mi código:

 const tf=require("@tensorflow/tfjs-node"); let dataX=[ //0, 1, 2, 3, ..., 1000; ]; let dataY=[ //0, 1, 4, 9, ..., 1000000; ] for (let i = 0; i < 1000; i++) { dataX.splice(0,0, i); dataY.splice(0,0, i**2); } class AI{ compile(){ const model=tf.sequential(); //Input & hidenA layer model.add(tf.layers.dense({ inputShape: [1], units: 32, activation: 'sigmoid', useBias: true })); //HidenB layer model.add(tf.layers.dense({ units: 32, activation: 'sigmoid', useBias: true })) //Output layer model.add(tf.layers.dense({ units: 1, activation: 'sigmoid', useBias: true })) let sgdOpt=tf.train.sgd(0.00001) model.compile({ loss: 'meanSquaredError', optimizer: sgdOpt }) return model; } run(){ const model=this.compile(); const xs=tf.tensor(dataX) const ys=tf.tensor(dataY) try{ model.summary(); model.fit(xs, ys, { epochs: 1000, }).then(()=>{ const data=tf.tensor([10]); const prediction=model.predict(data); prediction.print(); }) }catch(e){ } } } const ai=new AI(); ai.run();
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Sé que esto va a sonar extraño, pero creo que te estás perdiendo algunas características críticas en las que la IA podría derivar un método abstracto.

Voy a usar https://playground.tensorflow.org/ para tratar de ilustrar lo que estoy pensando. Tienen un problema de clasificación (sé que el tuyo es regresión) que creo que realmente ilustra algunos puntos clave.

Problema 1: Sigmoide

En primer lugar, está utilizando la activación sigmoidea en cada capa oculta. Sigmoid tiene su parte de problemas con el entrenamiento.

Después de 1000 épocas con una activación sigmoidea, notará que la red obtiene una solución bastante lineal para este problema circular:

Enlace al parque infantil

Sigmoideo

Simplemente cambiando la activación a ReLU, puede ver una solución mucho mejor en 1/10 de las épocas.

ingrese la descripción de la imagen aquí

Problema 2: Características lineales

Como puede ver en la imagen de arriba, la solución con ReLU fue muy puntiaguda. Debería haber creado idealmente un círculo. Tiene los mismos problemas en el gráfico de una línea frente a un número al cuadrado. De hecho, cubro este problema exacto en el Capítulo 8 de mi libro , y aunque puedo enseñarle a la IA a obtener una respuesta perfectamente aceptable para 7**2 === ~~49 , no funciona bien para números más grandes.

La razón, creo que es bastante simple. Si quiero que el modelo pueda determinar el cuadrado de un número, necesitaré derivar características que lo ayuden a ver esa diferencia.

Volvamos a nuestro ejemplo del patio de recreo. ¿Ves cómo tiene bordes afilados? ¿Qué pasa si le damos algunas características adicionales a la entrada de nuestro modelo, como cuadrados de cada valor? ¡Lo vemos al instante (en 40 épocas) tiene una respuesta sólida!

ingrese la descripción de la imagen aquí

Entonces, al crear una entrada de características de cuadrados, el modelo puede derivar una clasificación no lineal suave. Sin embargo, cuando su modelo es tan simple que cuadrar su entrada sería la respuesta, está limitado en las formas en que puede agregar características. Es por eso que estoy de acuerdo con que mi pequeño ejemplo sea "más o menos" preciso. No es un problema del mundo real. Pero si realmente desea crear un modelo que eleve los números al cuadrado sin agregar eso como una característica, tendrá que derivar características como entrada para las que el modelo pueda determinar las respuestas.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda