From c60101d8ff15d0f8f4e30b2452c6fe4066470a44 Mon Sep 17 00:00:00 2001 From: lidapeng Date: Tue, 31 Dec 2019 11:28:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A2=AF=E5=BA=A6=E4=B8=8B?= =?UTF-8?q?=E9=99=8DBUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/wlld/App.java | 29 ++++++++++--------- src/main/java/org/wlld/nerveEntity/Nerve.java | 2 +- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/main/java/org/wlld/App.java b/src/main/java/org/wlld/App.java index 3c0d8b5..7afe629 100644 --- a/src/main/java/org/wlld/App.java +++ b/src/main/java/org/wlld/App.java @@ -26,17 +26,18 @@ public class App { nerveManager.setOutBack(new Test());//添加判断回调输出类 List sensoryNerves = nerveManager.getSensoryNerves(); Map E1 = new HashMap<>(); - E1.put(1, 1.0); + E1.put(1, 0.0); Map E2 = new HashMap<>(); - E2.put(1, 0.0); + E2.put(1, 1.0); Random random = new Random(); List> testList = new ArrayList<>(); for (int i = 0; i < 1000; i++) { + double nub = ArithUtil.mul(ArithUtil.div(1, 1000), i); List dm = new ArrayList<>(); - dm.add(ArithUtil.add(1.0, random.nextDouble())); - dm.add(ArithUtil.add(0.8, random.nextDouble())); - dm.add(ArithUtil.add(-1.0, -random.nextDouble())); - dm.add(ArithUtil.add(-0.8, -random.nextDouble())); + dm.add(ArithUtil.add(0.5, nub)); + dm.add(ArithUtil.add(0.5, nub)); + dm.add(ArithUtil.add(-0.5, -nub)); + dm.add(ArithUtil.add(-0.5, -nub)); testList.add(dm); } for (int i = 0; i < 1000; i++) { @@ -47,14 +48,16 @@ public class App { sensoryNerves.get(1).postMessage(1, ds.get(3), true, E2); } - Nerve hiddenNerve = nerveManager.getDepthNerves().get(0).get(0); Nerve outNerver = nerveManager.getOutNevers().get(0); - double hiddenTh = hiddenNerve.getThreshold();//隐层阈值 double outTh = outNerver.getThreshold();//输出阈值 - System.out.println("hiddenTh==" + hiddenTh + ",outTh==" + outTh); - sensoryNerves.get(0).postMessage(1, 1.5, false, E1); - sensoryNerves.get(1).postMessage(1, 1.2, false, E1); - sensoryNerves.get(0).postMessage(1, -1.5, false, E2); - sensoryNerves.get(1).postMessage(1, -1.2, false, E2); + System.out.println("outTh==" + outTh); + for (int i = 2; i < 22; i++) { + double nub = ArithUtil.mul(ArithUtil.div(1, 1000), i); + sensoryNerves.get(0).postMessage(1, ArithUtil.add(0.5, nub), false, E1); + sensoryNerves.get(1).postMessage(1, ArithUtil.add(0.5, nub), false, E1); + sensoryNerves.get(0).postMessage(1, ArithUtil.add(-0.5, -nub), false, E2); + sensoryNerves.get(1).postMessage(1, ArithUtil.add(-0.5, -nub), false, E2); + System.out.println("===================================="); + } } } diff --git a/src/main/java/org/wlld/nerveEntity/Nerve.java b/src/main/java/org/wlld/nerveEntity/Nerve.java index 70cceb3..01af71c 100644 --- a/src/main/java/org/wlld/nerveEntity/Nerve.java +++ b/src/main/java/org/wlld/nerveEntity/Nerve.java @@ -106,8 +106,8 @@ public abstract class Nerve { double w = entry.getValue();//接收到编号为KEY的上层隐层神经元的权重 double bn = list.get(key - 1);//接收到编号为KEY的上层隐层神经元的输入 double wp = ArithUtil.mul(bn, h);//编号为KEY的上层隐层神经元权重的变化值 - double dm = ArithUtil.mul(w, gradient);//返回给相对应的神经元 w = ArithUtil.add(w, wp);//修正后的编号为KEY的上层隐层神经元权重 + double dm = ArithUtil.mul(w, gradient);//返回给相对应的神经元 wg.put(key, dm);//保存上一层权重与梯度的积 dendrites.put(key, w);//保存修正结果 }