Home Reference Source Test

packages/causality/src/Ensemble/ensembleDeployment.mixins.js

/**
 * The EnsembleDeploymentMixins class is the mixis class for deploying ensemble model
 * @class CausalNet
 * @extends { BasePipelineClass }
 */
const EnsembleDeploymentMixins = (BasePipelineClass)=> class extends BasePipelineClass {
    /**
     * Provide EnsembleInferencer caller, EnsembleModelPredict must be set in prior
     * @readonly
     */
    get EnsembleInferencer(){
        const ModelLenses = ()=>({ EnsemblePredict: this.EnsembleModelPredict });
        const T = this.T;
        return async (input)=>{
            let { EnsemblePredict } = input;
            let infer = {};
            if(EnsemblePredict){
                let inputTensor = T.tensor(EnsemblePredict).asType('float32').reshape([1, -1]);
                let predictTensor = await ModelLenses().EnsemblePredict(inputTensor);
                infer.EnsemblePredict = await predictTensor.data();
            }
            return infer;
        };
    }
    /**
     * process pipelineConfig object for ensemble deployment
     * @param { Object } pipelineConfig
     * @returns
     */
    setByConfig(pipelineConfig){
        if(super.setByConfig){
            super.setByConfig(pipelineConfig);
        }
        this.Logger.groupBegin('set ensemble deployment by config');
        this.Deployment.EnsembleInferencer = this.EnsembleInferencer;
        this.Logger.groupEnd();
        return pipelineConfig;
    }
    /**
     * deploy model
     * @returns { Promise } deployment summary
     */
    async deploy(){
        return await this.Deployment.deploy();
    }
};

export default EnsembleDeploymentMixins;