Tensorflowjs操作数无法与形状一起广播

Tensorflowjs操作数无法与形状一起广播,tensorflow,tensorflow.js,tensorflowjs-converter,Tensorflow,Tensorflow.js,Tensorflowjs Converter,我在Tensorflow中有一个工作模型,可以很好地与Python配合使用。它现在是一个已保存的模型,并试图转换为TensorflowJS 转换后的模型似乎无法正常工作。尽管输入为[1,96192,3],但张量图的平均值似乎为0,形状为[0] 转换过程如下所示 tensorflowjs_converter --input_format=tf_saved_model ~/Projects/models/model_0 ~/Projects/modelsjs/model_0 这工作正常,而且似乎加

我在Tensorflow中有一个工作模型,可以很好地与Python配合使用。它现在是一个已保存的模型,并试图转换为TensorflowJS

转换后的模型似乎无法正常工作。尽管输入为[1,96192,3],但张量图的平均值似乎为0,形状为[0]

转换过程如下所示

tensorflowjs_converter --input_format=tf_saved_model ~/Projects/models/model_0 ~/Projects/modelsjs/model_0
这工作正常,而且似乎加载正常。然而,当涉及到预测时,会抛出错误,任何建议都将不胜感激

<script>
    async function handleButtonClick(){

       for(var i=0; i<1;i++)
       {
           var t0 = performance.now();
           console.log("Loading - model_"+i);
           var inputTensor = tf.tensor4d(input);
           var model = await tf.loadGraphModel('/modelsjs/model_'+i+'/model.json');
           var poutput = model.predict(inputTensor);
       }
</script>
根据上述错误,尝试使用executeAsync进行预测,但产生了与此问题相关的错误

<script>
    async function handleButtonClick(){

       for(var i=0; i<1;i++)
       {
           var t0 = performance.now();
           console.log("Loading - model_"+i);
           var inputTensor = tf.tensor4d(input);
           var model = await tf.loadGraphModel('/modelsjs/model_'+i+'/model.json');
           console.log("Load model_" + i + "took " + (t1 - t0) + " milliseconds.");
           const res = await model.executeAsync(inputTensor);
       }
</script>

使用一些深入的开发工具,错误似乎从这里开始

将“strict”设置为true时,模型仍会加载,不会抛出错误

var model = await 
        tf.loadGraphModel('/modelsjs/model_0/model.json', {onProgress:onProgressCallback, strict:true});

遗憾的是,我无法共享该模型,因为它是专有的。

该模型是错误的

最初是一个Keras模型,后来转换为Tensorflow Saved模型。将此模型转换为Tensorflowjs不起作用

然而,将原始模型从Keras转换为Tensorflowjs是可行的


吸取的教训是,不要把你的模型混得太多

您是否尝试打印
InputSensor
以查看其是否具有所需的形状?您好。输入张量似乎具有正确的形状。另外,我们在这里发现了类似的问题。已经尝试使用--signature\u name=service\u default和saved\u model\u tags=server进行转换,但运气不佳。同样的问题。您是否手动更改了model.json?否。我根本没有更改model.json。我直接使用了tensorflowjs_转换器的输出,而没有进行编辑。@edkevek似乎“is_training”:{“b”:true},出现在models.json文件中,尽管“is_training”:{“b”:false},也会出现。
broadcast_util.ts:81 Uncaught (in promise) Error: Operands could not be broadcast together with shapes 1,12,24,64 and 0.
    at un (broadcast_util.ts:81)
    at new kn (batchnorm_packed_gpu.ts:32)
    at t.batchNormalization (backend_webgl.ts:869)
    at Bt.engine.runKernel.$x (batchnorm.ts:344)
    at engine.ts:206
    at t.scopedRun (engine.ts:167)
    at t.runKernel (engine.ts:202)
    at $a (batchnorm.ts:343)
    at batchNorm (operation.ts:46)
    at xy (normalization_executor.ts:31)

var model = await 
        tf.loadGraphModel('/modelsjs/model_0/model.json', {onProgress:onProgressCallback, strict:true});