init

ConvolutionalLayer.init(prev_layer)

初期処理

引数:
  • prev_layer (Layer) – 直前のレイヤー

ソース

init(prev_layer) {
    super.init(prev_layer);

    this.numRows = this.prevLayer.numRows - this.filterSize + 1;
    this.numCols = this.prevLayer.numCols - this.filterSize + 1;
    this.unitSize = this.numChannels * this.numRows * this.numCols;

    this.bias = new ArrayView(this.numChannels);
    for (var i = 0; i < this.bias.dt.length; i++) {
        this.bias.dt[i] = random.randn();
    }

    this.weight = new ArrayView(this.numChannels, prev_layer.numChannels, this.filterSize, this.filterSize);
    for (var i = 0; i < this.weight.dt.length; i++) {
        this.weight.dt[i] = random.randn();
    }

    if(this.activationFunction == ActivationFunction.ReLU){
        var sd = Math.sqrt(2.0 / prev_layer.unitSize);
        for(var i = 0; i < this.weight.dt.length; i++){
            this.weight.dt[i] *= sd;
        }
    }

    this.deltaBias    = new ArrayView(this.numChannels);
    this.deltaWeight   = new ArrayView(this.numChannels, prev_layer.numChannels, this.filterSize, this.filterSize);
}