Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

489
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!