diff --git a/src/main/java/org/dromara/easyai/transFormer/nerve/HiddenNerve.java b/src/main/java/org/dromara/easyai/transFormer/nerve/HiddenNerve.java new file mode 100644 index 0000000..0ac02ae --- /dev/null +++ b/src/main/java/org/dromara/easyai/transFormer/nerve/HiddenNerve.java @@ -0,0 +1,51 @@ +package org.dromara.easyai.transFormer.nerve; + + +import org.dromara.easyai.matrixTools.Matrix; +import org.dromara.easyai.i.ActiveFunction; +import org.dromara.easyai.i.OutBack; +import org.dromara.easyai.transFormer.LineBlock; + +import java.util.List; + +/** + * @author lidapeng + * 隐层神经元 + * @date 9:30 上午 2019/12/21 + */ +public class HiddenNerve extends Nerve { + + public HiddenNerve(int id, int depth, float studyPoint, ActiveFunction activeFunction, int sensoryNerveNub, + int outNerveNub, LineBlock lineBlock, int regularModel, float regular + , int coreNumber) throws Exception {//隐层神经元 + super(id, "HiddenNerve", studyPoint, activeFunction, sensoryNerveNub, 0, + outNerveNub, lineBlock, regularModel, regular, coreNumber); + this.depth = depth; + } + + public void receiveErrorMatrix(Matrix g, long eventId, Matrix allError) throws Exception {// + updatePower(eventId, g, allError); + } + + public void receive(Matrix feature, long eventId, boolean isStudy, OutBack outBack, + List E, Matrix encoderFeature, boolean outAllPro) throws Exception {//接收上一个残差层传过来得参数 + Matrix out = opMatrix(feature, isStudy); + sendMessage(eventId, out, isStudy, feature, outBack, E, encoderFeature, outAllPro); + } + + @Override + protected void input(long eventId, Matrix parameter, boolean isStudy, Matrix allFeature, OutBack outBack, + List E, Matrix encoderFeature, boolean outAllPro) throws Exception {//第二层收到参数 + boolean allReady = insertMatrixParameter(eventId, parameter); + if (allReady) {//参数齐了,开始计算 + Matrix out = opMatrix(reMatrixFeatures.get(eventId).getMatrix(), isStudy); + reMatrixFeatures.remove(eventId); + beforeLayNorm.addNormFromNerve(eventId, isStudy, out, allFeature, outBack, E, encoderFeature, outAllPro); + } + } + + public void postMessage(long eventId, Matrix feature, boolean isStudy, OutBack outBack, List E, boolean outAllPro) throws Exception { + Matrix out = opMatrix(feature, isStudy); + sendOutMessage(eventId, out, isStudy, outBack, E, outAllPro); + } +}