我在javascript的一个实现中遇到了一个非常有趣的问题,我正在编码。我有一个名为add()的函数,如果传递的对象是我的自定义Matrix类的实例,则执行矩阵添加,但在代码中的不同点,相同的函数不计算结果。功能如下:
add(n) {
if(n instanceof Matrix) {
console.log('sum aaa')
for(let i = 0; i < this.rows; i++) {
for(let j = 0; j < this.cols; j++) {
// I broke down the formula to see each output independently
let a = this.data[i][j]
let b = n.data[i][j]
let result = a + b
this.data[i][j] = result
console.log('a = ' + a + ' b = ' + b + ' result = ' + result)
// this is what I had
//this.data[i][j] += n.data[i][j]
}
}
} else {
console.log('sum bbb')
for(let i = 0; i < this.rows; i++) {
for(let j = 0; j < this.cols; j++) {
this.data[i][j] += n
}
}
}
}
以下是我称之为同一函数的两次不同时间的输出:
注意在第一张图像中如何计算所需的输出,但在第二张图像中根本不计算它。
这个函数是从我正在构建的神经网络的方法中调用youtube教程。起初我认为问题可能是我调用函数的地方,但运行不同场景和数据集的测试一切都按预期计算,问题实际上似乎是在add()函数中。
我在这里遗漏了什么吗?为什么会发生这种情况?老实说我不知道。任何帮助都将非常感激。
谢谢!
答案 0 :(得分:1)
正在进行添加。请注意,在第二个图像中,所有b
值都有一个&#34; e-28&#34;最后,这是指数表示法意味着b值非常小,基本上为0。
正在进行添加,b
值对第二个示例中的输出没有明显影响。