backpropagation¶
-
ConvolutionalLayer.
backpropagation
()¶ 誤差逆伝播
ソース¶
backpropagation() {
var lap = new Lap(this.backwardTime);
if (this.nextLayer) {
// 最後のレイヤーでない場合
this.deltaY = this.nextLayer.deltaX;
}
this.cpuDeltaZ();
lap.Time();
this.cpuDeltaBias();
lap.Time();
this.gpuDeltaWeight();
if(miniBatchIdx == 0 || Math_random() < 0.01){
var delta_w = new Float32Array(this.deltaWeight.dt);
this.cpuDeltaWeight();
var diff = this.deltaWeight.diff(delta_w);
if(0.00001 < diff){
console.log("CNN delta-W diff:%f", diff);
}
}
lap.Time();
if(! (this.prevLayer instanceof InputLayer)){
// 直前が入力層でない場合
this.gpuDeltaX();
if(miniBatchIdx == 0 || Math_random() < 0.01){
var delta_x1 = new Float32Array(this.deltaX.dt);
this.cpuDeltaX();
var delta_x2 = this.cpuDeltaX2();
var diff1 = this.deltaX.diff(delta_x1);
var diff2 = this.deltaX.diff(delta_x2);
if(0.00001 < diff1 || 0.00001 < diff2){
console.log("CNN delta-X diff:%f %f", diff1, diff2);
}
}
}
lap.Time();
}