backpropagation ============================== .. js:function:: ConvolutionalLayer.backpropagation() 誤差逆伝播 ソース ^^^^^^ .. code-block:: js 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(); }