From 443876756fabe3bd8b0a4fc96b96ec2a93581258 Mon Sep 17 00:00:00 2001 From: inter Date: Thu, 4 Sep 2025 14:08:46 +0800 Subject: [PATCH] Add File --- .../easyai/nerveEntity/HiddenNerve.java | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 src/main/java/org/dromara/easyai/nerveEntity/HiddenNerve.java diff --git a/src/main/java/org/dromara/easyai/nerveEntity/HiddenNerve.java b/src/main/java/org/dromara/easyai/nerveEntity/HiddenNerve.java new file mode 100644 index 0000000..2a4f0a8 --- /dev/null +++ b/src/main/java/org/dromara/easyai/nerveEntity/HiddenNerve.java @@ -0,0 +1,96 @@ +package org.dromara.easyai.nerveEntity; + +import org.dromara.easyai.entity.ThreeChannelMatrix; +import org.dromara.easyai.i.CustomEncoding; +import org.dromara.easyai.matrixTools.Matrix; +import org.dromara.easyai.matrixTools.MatrixList; +import org.dromara.easyai.matrixTools.MatrixOperation; +import org.dromara.easyai.i.ActiveFunction; +import org.dromara.easyai.i.OutBack; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @author lidapeng + * 隐层神经元 + * @date 9:30 上午 2019/12/21 + */ +public class HiddenNerve extends Nerve { + private final boolean isConvFinish;//卷积最后一层 + private final MatrixOperation matrixOperation = new MatrixOperation(); + + public HiddenNerve(int id, int depth, int upNub, int downNub, float studyPoint, + boolean init, ActiveFunction activeFunction, boolean isDynamic, int rzType, float lParam + , int kernLen, int matrixX, int matrixY, boolean isConvFinish, int coreNumber, int channelNo, float oneConvStudy, boolean norm + , CustomEncoding customEncoding, float gaMa, float gMaxTh, boolean auTo, float GRate) throws Exception {//隐层神经元 + super(id, upNub, "HiddenNerve", downNub, studyPoint, + init, activeFunction, isDynamic, rzType, lParam, kernLen, depth, matrixX, matrixY + , coreNumber, channelNo, oneConvStudy, norm, customEncoding, gaMa, gMaxTh, auTo, GRate); + this.isConvFinish = isConvFinish; + } + + @Override + public void input(long eventId, float parameter, boolean isKernelStudy, Map E + , OutBack outBack) throws Exception {//接收上一层的输入 + boolean allReady = insertParameter(eventId, parameter); + if (allReady) {//参数齐了,开始计算 sigma - threshold + float sigma = calculation(eventId); + float out = activeFunction.function(sigma);//激活函数输出数值 + if (isKernelStudy) { + outNub = out; + } else { + destoryParameter(eventId); + } + sendMessage(eventId, out, isKernelStudy, E, outBack); + } + } + + @Override + protected void inputMatrixFeature(long eventId, List parameters, boolean isStudy, Map E, OutBack imageBack) throws Exception { + insertParameters(eventId, parameters); + float sigma = calculation(eventId); + float out = activeFunction.function(sigma);//激活函数输出数值 + if (isStudy) { + outNub = out; + } else { + destoryParameter(eventId); + } + sendMessage(eventId, out, isStudy, E, imageBack); + } + + @Override + protected void inputMatrix(long eventId, List matrix, boolean isStudy + , Map E, OutBack outBack, boolean needMatrix) throws Exception { + List myMatrix = conv(matrix);//处理过的矩阵 + if (isConvFinish) { + Matrix ourMatrix; + if (myMatrix.size() == 1) { + ourMatrix = myMatrix.get(0); + } else { + MatrixList matrixList = new MatrixList(myMatrix.get(0), true, 100); + for (int i = 1; i < myMatrix.size(); i++) { + matrixList.add(myMatrix.get(i)); + } + ourMatrix = matrixList.getMatrix(); + } + if (!isStudy && needMatrix) { + outBack.getBackMatrix(ourMatrix, getId(), eventId); + } + sendMatrixList(eventId, matrixOperation.matrixToList(ourMatrix), isStudy, E, outBack); + } else { + sendMatrix(eventId, myMatrix, isStudy, E, outBack, needMatrix); + } + } + + @Override + protected void inputThreeChannelMatrix(long eventId, ThreeChannelMatrix picture, boolean isKernelStudy, Map E, OutBack outBack, boolean needMatrix) throws Exception { + //接收三通道矩阵 + List matrixList = new ArrayList<>(); + matrixList.add(picture.getMatrixR()); + matrixList.add(picture.getMatrixG()); + matrixList.add(picture.getMatrixB()); + demRedByMatrixList(eventId, matrixList, isKernelStudy, E, outBack, needMatrix); + } +}