Neataptic XOR仅解决3个节点

问题描述 投票:0回答:2

我已经使用Neataptic库来演变XOR的结构,就像他们的github page上的说明一样。

实际结果似乎正确但是当我可视化节点(大多数时候)没有隐藏层 - 只有2个输入节点和1个输出,因此我认为它不应该工作。知道什么是错的吗?

var network = new neataptic.Network(2,1);

var trainingSet = [
  { input: [0,0], output: [0] },
  { input: [0,1], output: [1] },
  { input: [1,0], output: [1] },
  { input: [1,1], output: [0] }
];

async function abc() {
  await network.evolve(trainingSet, {
    equal: true,
    error: 0.03
  });
  
  document.getElementById("app").innerHTML = "0 ⊕ 0 = " +
    network.activate([0,0]) + "<br />0 ⊕ 1 = " +
    network.activate([0,1]) + "<br />1 ⊕ 0 = " +
    network.activate([1,0]) + "<br />1 ⊕ 1 = " +
    network.activate([1,1]);
  
  drawGraph(network.graph(500, 400), '#draw');
}

abc();
* {
  box-sizing: border-box;  
}

body {
  margin: 0;
  padding: 0;
  height: 100vh;
}

#app {
  vertical-align: top;
  display: inline-block;
  padding: 15px;
  width: 20%;
  height: 100%;
}

#draw {
  vertical-align: top;
  display: inline-block;
  width: 80%;
  height: 100%;
}
<link rel="stylesheet" type="text/css" href="https://rawgit.com/wagenaartje/neataptic/master/graph/graph.css">
<script src="https://d3js.org/d3.v3.min.js"></script>
<script src="https://marvl.infotech.monash.edu/webcola/cola.v3.min.js"></script>
<script src="https://combinatronics.com/wagenaartje/neataptic/master/graph/graph.js"></script>
<script src="https://wagenaartje.github.io/neataptic/cdn/1.4.7/neataptic.js"></script>

    
<div id="app">
</div><svg id="draw" width="600px" height="450px" />
javascript neural-network xor
2个回答
1
投票

我联系了Neataptic图书馆的创建者,这就是我的问题的答案:

...回想一下,突变也可以改变最终节点的挤压功能。是的,默认的后勤压缩功能无法处理XOR,但正弦函数可以!


-1
投票

您只定义了两个输入图层和一个输出。重新阅读文档,了解如何正确添加隐藏层。使用perceptron或lstm

© www.soinside.com 2019 - 2024. All rights reserved.