增加输出神经元回调,及API文档说明

pull/1/head
lidapeng 5 years ago
parent 35177b7d70
commit 5d0c9bd9e8

@ -17,64 +17,7 @@
<maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.target>1.8</maven.compiler.target>
</properties> </properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.9.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.9.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.51</version>
<scope>compile</scope>
</dependency>
<!-- 使用异步写日志功能 必须引入此包 -->
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.4.2</version>
</dependency>
</dependencies>
<build> <build>
<resources>
<!-- resources文件 -->
<resource>
<directory>src/main/resources</directory>
<!-- 是否被过滤,如果被过滤则无法使用 -->
<filtering>false</filtering>
</resource>
<!-- java文件夹 -->
<resource>
<directory>src/main/java</directory>
<!-- 引入映射文件等 -->
<includes>
<include>com/wlld/robot/sql/config/*.xml</include>
</includes>
</resource>
</resources>
<plugins> <plugins>
<plugin> <plugin>
<artifactId>maven-assembly-plugin</artifactId> <artifactId>maven-assembly-plugin</artifactId>

@ -1,8 +1,5 @@
package org.wlld.nerveEntity; package org.wlld.nerveEntity;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/** /**
* @author lidapeng * @author lidapeng
* *
@ -10,7 +7,7 @@ import org.apache.logging.log4j.Logger;
*/ */
public class HiddenNerve extends Nerve { public class HiddenNerve extends Nerve {
private int depth;//所处深度 private int depth;//所处深度
static final Logger logger = LogManager.getLogger(HiddenNerve.class); //static final Logger logger = LogManager.getLogger(HiddenNerve.class);
public HiddenNerve(int id, int depth, int upNub, int downNub, double studyPoint, boolean init) {//隐层神经元 public HiddenNerve(int id, int depth, int upNub, int downNub, double studyPoint, boolean init) {//隐层神经元
super(id, upNub, "HiddenNerve", downNub, studyPoint, init); super(id, upNub, "HiddenNerve", downNub, studyPoint, init);
@ -19,10 +16,10 @@ public class HiddenNerve extends Nerve {
@Override @Override
public void input(long eventId, double parameter, boolean isStudy, double E) throws Exception {//接收上一层的输入 public void input(long eventId, double parameter, boolean isStudy, double E) throws Exception {//接收上一层的输入
logger.debug("name:{},myId:{},depth:{},eventId:{},parameter:{}--getInput", name, getId(), depth, eventId, parameter); // logger.debug("name:{},myId:{},depth:{},eventId:{},parameter:{}--getInput", name, getId(), depth, eventId, parameter);
boolean allReady = insertParameter(eventId, parameter); boolean allReady = insertParameter(eventId, parameter);
if (allReady) {//参数齐了,开始计算 sigma - threshold if (allReady) {//参数齐了,开始计算 sigma - threshold
logger.debug("depth:{},myID:{}--startCalculation", depth, getId()); // logger.debug("depth:{},myID:{}--startCalculation", depth, getId());
double sigma = calculation(eventId); double sigma = calculation(eventId);
double out = activeFunction.sigmoid(sigma);//激活函数输出数值 double out = activeFunction.sigmoid(sigma);//激活函数输出数值
if (isStudy) { if (isStudy) {
@ -31,7 +28,7 @@ public class HiddenNerve extends Nerve {
} else { } else {
destoryParameter(eventId); destoryParameter(eventId);
} }
logger.debug("depth:{},myID:{},outPut:{}", depth, getId(), out); // logger.debug("depth:{},myID:{},outPut:{}", depth, getId(), out);
sendMessage(eventId, out, isStudy, E); sendMessage(eventId, out, isStudy, E);
} }
// sendMessage(); // sendMessage();

@ -1,7 +1,5 @@
package org.wlld.nerveEntity; package org.wlld.nerveEntity;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.wlld.function.ActiveFunction; import org.wlld.function.ActiveFunction;
import org.wlld.tools.ArithUtil; import org.wlld.tools.ArithUtil;
@ -21,7 +19,7 @@ public abstract class Nerve {
protected int upNub;//上一层神经元数量 protected int upNub;//上一层神经元数量
protected int downNub;//下一层神经元的数量 protected int downNub;//下一层神经元的数量
protected Map<Long, List<Double>> features = new HashMap<>(); protected Map<Long, List<Double>> features = new HashMap<>();
static final Logger logger = LogManager.getLogger(Nerve.class); //static final Logger logger = LogManager.getLogger(Nerve.class);
protected double threshold;//此神经元的阈值需要取出 protected double threshold;//此神经元的阈值需要取出
protected ActiveFunction activeFunction = new ActiveFunction(); protected ActiveFunction activeFunction = new ActiveFunction();
protected String name;//该神经元所属类型 protected String name;//该神经元所属类型
@ -142,9 +140,9 @@ public abstract class Nerve {
double value = featuresList.get(i); double value = featuresList.get(i);
double w = dendrites.get(i + 1); double w = dendrites.get(i + 1);
sigma = ArithUtil.add(ArithUtil.mul(w, value), sigma); sigma = ArithUtil.add(ArithUtil.mul(w, value), sigma);
logger.debug("name:{},eventId:{},id:{},myId:{},w:{},value:{}", name, eventId, i + 1, id, w, value); //logger.debug("name:{},eventId:{},id:{},myId:{},w:{},value:{}", name, eventId, i + 1, id, w, value);
} }
logger.debug("当前神经元线性变化已经完成,name:{},id:{}", name, getId()); //logger.debug("当前神经元线性变化已经完成,name:{},id:{}", name, getId());
return ArithUtil.sub(sigma, threshold); return ArithUtil.sub(sigma, threshold);
} }

@ -1,7 +1,5 @@
package org.wlld.nerveEntity; package org.wlld.nerveEntity;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.wlld.i.OutBack; import org.wlld.i.OutBack;
import org.wlld.tools.ArithUtil; import org.wlld.tools.ArithUtil;
@ -11,7 +9,7 @@ import org.wlld.tools.ArithUtil;
* @date 11:25 2019/12/21 * @date 11:25 2019/12/21
*/ */
public class OutNerve extends Nerve { public class OutNerve extends Nerve {
static final Logger logger = LogManager.getLogger(OutNerve.class); // static final Logger logger = LogManager.getLogger(OutNerve.class);
private OutBack outBack; private OutBack outBack;
public OutNerve(int id, int upNub, int downNub, double studyPoint, boolean init) { public OutNerve(int id, int upNub, int downNub, double studyPoint, boolean init) {
@ -24,12 +22,12 @@ public class OutNerve extends Nerve {
@Override @Override
public void input(long eventId, double parameter, boolean isStudy, double E) throws Exception { public void input(long eventId, double parameter, boolean isStudy, double E) throws Exception {
logger.debug("Nerve:{},eventId:{},parameter:{}--getInput", name, eventId, parameter); // logger.debug("Nerve:{},eventId:{},parameter:{}--getInput", name, eventId, parameter);
boolean allReady = insertParameter(eventId, parameter); boolean allReady = insertParameter(eventId, parameter);
if (allReady) {//参数齐了,开始计算 sigma - threshold if (allReady) {//参数齐了,开始计算 sigma - threshold
double sigma = calculation(eventId); double sigma = calculation(eventId);
double out = activeFunction.sigmoid(sigma); double out = activeFunction.sigmoid(sigma);
logger.debug("myId:{},outPut:{}------END", getId(), out); // logger.debug("myId:{},outPut:{}------END", getId(), out);
if (isStudy) {//输出结果并进行BP调整权重及阈值 if (isStudy) {//输出结果并进行BP调整权重及阈值
outNub = out; outNub = out;
this.E = E; this.E = E;

@ -1,20 +0,0 @@
package org.wlld;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
/**
* Unit test for simple App.
*/
public class AppTest
{
/**
* Rigorous Test :-)
*/
@Test
public void shouldAnswerWithTrue()
{
assertTrue( true );
}
}
Loading…
Cancel
Save