Home Reference Source Test

packages/causality-layer/src/CausalNetLayers/dense.mixins.js

const DenseLayerMixins = (PipelineClass)=> class extends PipelineClass{
    /**
     * Simple dense layer
     * @param {Number} inputSize - size of net input
     * @param {Number} outputSize - size of net output
     * @param {String|Function} activator - activator function can be customed or get from built-in by string name
     * @param {String} name - layer name, default by null
     * @returns { Object } layer
     */
    dense({inputSize, outputSize, activator='sigmoid', name=null}){
        if(!name){
            name = this.nameGenerator('dense');
        }
        return { 
            Name: name, Type: 'Layer',
            Config: {inputSize, outputSize, activator, name},
            Parameters: { Weight: [inputSize, outputSize], Bias: [outputSize] },
            Net: (value, params)=>{
                    let {Weight, Bias} = params;
                    let result = value.dot(Weight).add(Bias);
                    
                    if(typeof activator === "string"){
                        result = result[activator]();
                    }
                    else{
                        result = activator(result);
                    }   
                    return result;
                }
            };
    }
};
export default DenseLayerMixins;