Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获(承诺中)TypeError:无法读取null的属性“length”_Javascript_Html_Tensorflow.js - Fatal编程技术网

Javascript 未捕获(承诺中)TypeError:无法读取null的属性“length”

Javascript 未捕获(承诺中)TypeError:无法读取null的属性“length”,javascript,html,tensorflow.js,Javascript,Html,Tensorflow.js,我在学习教程。当我按下“train”(列车)按钮调用列车功能时,错误如上所述。是我还是教程中有错误 我确实一步一步地遵循了指南…并在最新版本的chrome中使用localhost进行了测试 第一个代码段来自index.js,第二个来自index.html let识别器; 虚词{ //识别器训练识别的单词数组。 const words=recognizer.wordLabels; 识别器。侦听{scores}=>{ //将分数转换成分数、单词对的列表。 scores=Array.fromscor

我在学习教程。当我按下“train”(列车)按钮调用列车功能时,错误如上所述。是我还是教程中有错误

我确实一步一步地遵循了指南…并在最新版本的chrome中使用localhost进行了测试

第一个代码段来自index.js,第二个来自index.html

let识别器; 虚词{ //识别器训练识别的单词数组。 const words=recognizer.wordLabels; 识别器。侦听{scores}=>{ //将分数转换成分数、单词对的列表。 scores=Array.fromscores.maps,i=>{scores:s,word:words[i]}; //找出最可能的词。 scores.sorts1,s2=>s2.score-s1.score; document.querySelector'console'。textContent=分数[0]。word; },{概率阈值:0.75}; } 异步函数应用程序{ 识别器=语音命令。创建“浏览器”; 等待识别器。重新建模已加载; console.log加载预训练模型。; //预测词; 构建模型; console.log该模型已建立。; } 应用程序; //一帧是~23ms的音频。 const NUM_FRAMES=3; 让示例=[]; 函数集合标签{ if recognizer.isListening{ 返回识别器。停止侦听; } 如果标签==null{ 回来 } recognizer.listenasync{spectrogram:{frameSize,data}}=>{ 设VAL=normalizedata.subarray-frameSize*NUM_FRAMES; 示例:push{vals,label}; document.querySelector'console'.textContent= `${examples.length}收集的示例`; }, { 重叠系数:0.999, includeSpectrogram:正确, invokeCallbackOnNoiseAndUnknown:true }; } 函数规格化{ 常数平均值=-100; 常数std=10; 返回x.mapx=>x-平均值/std; } const INPUT_SHAPE=[NUM_FRAMES,232,1]; let模型; 异步函数列{ 切换按钮错误; const ys=tf.oneHotexamples.mape=>e.label,3; console.logline 1在列车中成功执行。; const xshape=[examples.length,…INPUT_SHAPE]; console.logline 2在列车中成功执行。; const xs=tf.tensorflattexamples.mape=>e.vals,xshape; 控制台。列车中的logline 3成功执行。; console.logexamples; 等待model.fitxs,ys{ 批量大小:16, 纪元:10, 回调:{ onEpochEnd:epoch,日志=>{ document.querySelector'console'.textContent= `精度:${logs.acc*100.toFixed1}%Epoch:${Epoch+1}`; } } }; console.log培训结束!; tf.dispose[xs,ys]; 扳动按钮按钮; } 功能构建模型{ 模型=tf.sequential; model.addtf.layers.depthwiseConv2d{ 深度倍增管:8, kernelSize:[NUM_FRAMES,3], 激活:“relu”, inputShape:inputShape }; maxPooling2d{poolSize:[1,2],步长:[2,2]}; model.addtf.layers.flatten; 密集{单位:3,激活:'softmax'}; 常量优化器=tf.train.adam0.01; model.compile{ 优化器, 损失:“分类交叉熵”, 指标:[“准确性”] }; } 功能切换按钮启用{ document.queryselectoral'button'.forEachb=>b.disabled=!enable; } 函数张量{ 常量大小=张量[0]。长度; const result=new Float32Arraytensors.length*size; tensors.forEacharr,i=>result.setarr,i*size; 返回结果; } //在应用程序加载时调用buildModel: 异步函数移动滑块标记传感器{ 常数标签=等待标签传感器数据[0]; document.getElementById'console'.textContent=label; 如果标签==2{ 回来 } 设δ=0.1; const prevValue=+document.getElementById'output'。值; document.getElementById'output'。值= prevValue+label==0?-delta:delta; } 函数监听{ if recognizer.isListening{ 识别器。停止监听; 扳动按钮按钮; document.getElementById'listen'。textContent='listen'; 回来 } 切换按钮错误; document.getElementById'listen'。textContent='Stop'; document.getElementById'listen'。disabled=false; recognizer.listenasync{spectrogram:{frameSize,data}}=>{ const vals=normalizedata.subarray-frameSize*NUM_FRAMES; 常量输入=tf.tensorvals,[1,…输入_形]; const probs=model.predictinput; const predlab=probs.argMax1; 等待移动SliderPredLabel; tf.dispose[输入、问题、标签]; }, { 重叠系数:0.999, includeSpectrogram:正确, invokeCallbackOnNoiseAndUnknown:true }; } A. o 噪音 火车 听
打印到console的错误应该指示您运行过的一些代码行,但如果不是,则没有太多信息可供参考


首先,您可能需要先运行buildModel来初始化模型变量。当前它被初始化为未定义。

打印到console的错误应该指示您运行的一些代码行,但如果不是,则没有太多信息可供参考

作为第一个猜测,它看起来
就像您需要先运行buildModel来初始化模型变量一样。目前它已初始化为未定义。

本教程似乎是在TensorFlow.js 2.0发布之前编写的,但由于JSDeliver链接中未指定该版本,因此正在加载最新的2.x版本

如果指定1.x版本,它似乎可以工作,例如,您可以替换:

与:


本教程似乎是在TensorFlow.js2.0发布之前编写的,但由于JSDeliver链接中没有指定该版本,因此正在加载最新的2.x版本

如果指定1.x版本,它似乎可以工作,例如,您可以替换:

与:


我很确定模型是在调用train函数之前加载的Tensorflow模块中遇到的问题,而不是用户代码中遇到的问题,用户代码是一行很长的代码,即第17行,因此不可能破译这行代码的位置。我也有同样的想法。我很确定模型是在调用train函数之前加载的。问题是在Tensorflow模块中遇到的,而不是在用户代码中遇到的。用户代码是一行很长的代码,即第17行,因此不可能破译这行代码的位置。我也一样,这对我很有效。我的错误和原来的海报完全一样。尽管如此,找到错误的来源以使其在TFV2中工作还是很有趣的。这对我来说是有效的。我的错误和原来的海报完全一样。尽管如此,找到错误的来源使其在TFV2中工作还是很有趣的。