cpuDeltaX

FullyConnectedLayer.cpuDeltaX()

CPUによるδxの計算

\[\delta x_{j} = \displaystyle \sum_i^y \delta z_i \cdot weight_{i,j}\]

ソース

cpuDeltaX(){

    // 出力先
    var output_idx = 0;

    // バッチ内のデータに対し
    for (var batch_idx = 0; batch_idx < miniBatchSize; batch_idx++) {

        // 入力に対し
        for (var x_idx = 0; x_idx < this.prevLayer.unitSize; x_idx++) {

            var sum = 0.0;

            // 重みの行とδzの内積
            for (var k = 0; k < this.weight.nrow; k++) {
                var weight_idx = k * this.weight.ncol + x_idx;
                var delta_z_idx = batch_idx * this.unitSize + k;
                sum += this.deltaZ.dt[delta_z_idx] * this.weight.dt[weight_idx];
            }

            this.deltaX.dt[output_idx] = sum;
            output_idx++;
        }
    }
}