Estoy usando una copia local de tensorflow.js tfjs.js en una configuración experimental. Todo está en el lado del navegador, no en node.js.
Quiero mover la funcionalidad de tensorflow a su propio hilo en un trabajador web, ya que es pesado en el navegador. Sin embargo, la forma en que conseguí que el módulo tensorflow funcionara en un trabajador no tiene sentido:
Esta fue la idea inicial:
//main.js let predictor = new Worker ('prediction_ww.js', {type: 'module'}) //prediction_ww.js import * as tf from "tfjs.js"Pero esto produce el siguiente error cuando comienzo la ejecución (nota: 'loadGraphModel' es un método en tensorflow.js):
prediction_ww.js:44 Uncaught (in promise) TypeError: tf.loadGraphModel is not a function... etc... Después de probar sin tener una idea real de lo que estoy haciendo, obtengo este código, sin el type: 'module' para que funcione:
//main.js let predictor = new Worker ('prediction_ww.js') //prediction_ww.js var tf = import ("./tfjs.js")Me gustaría entender por qué esto funciona, pero no el caso usando el módulo que, según mi lectura, debería ser la forma correcta de usar un módulo externo en un trabajador web en el lado del navegador.
También noté que solo funciona usando ./ antes del nombre del archivo, lo cual tampoco entiendo por qué.
Uso Chrome 96 en macOS 10.14.
Primero, tfjs funciona bien en un trabajador web a menos que intente usar funciones específicas que dependen de DOM (por ejemplo, no puede usar los métodos tf.browser.* ), y ese no es el caso aquí.
Cuando dice tfjs.js local , ¿qué variación de tfjs es esa? se envía con tantas variaciones y solo los módulos ESM se pueden cargar usando {type: "module"}
El tf.js predeterminado NO es ESM, pero tf.es2017.js sí lo es.