Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift XOR神经网络-意外结果_Swift_Neural Network - Fatal编程技术网

Swift XOR神经网络-意外结果

Swift XOR神经网络-意外结果,swift,neural-network,Swift,Neural Network,我试图在swift中实现Daniel Shiffman的XOR神经网络,我拥有所有部分,但经过训练,结果出乎意料 我的一部分认为这是一个实际的训练系统,试图同时学习多种东西 我已将我的游乐场连接起来,以防任何人发现任何错误: 丹尼尔斯代码: 您的代码中有几个错误。第一个(也是最重要的)是你创建人际网络的方式的微妙之处 现在你正在使用 inputs = [Neuron](repeating: Neuron(), count:2+1) hidden = [Neuron](repeating: Ne

我试图在swift中实现Daniel Shiffman的XOR神经网络,我拥有所有部分,但经过训练,结果出乎意料

我的一部分认为这是一个实际的训练系统,试图同时学习多种东西

我已将我的游乐场连接起来,以防任何人发现任何错误:

丹尼尔斯代码:


您的代码中有几个错误。第一个(也是最重要的)是你创建人际网络的方式的微妙之处

现在你正在使用

inputs = [Neuron](repeating: Neuron(), count:2+1)
hidden = [Neuron](repeating: Neuron(), count:4+1)
但这会创建具有相同
神经元的所有输入,以及具有相同
神经元的所有
隐藏的
,因此只有4个
神经元
s:2个用于输入(规则重复2次和一个偏差神经元),2个用于隐藏(规则重复4次,1个用于偏差)

只需使用for循环即可解决此问题:

public class Network
{
    var inputs:[Neuron] = []
    var hidden:[Neuron] = []
    var output:Neuron!

    public init()
    {
        for _ in 1...2 {
            inputs.append(Neuron())
        }

        for _ in 1...4 {
            hidden.append(Neuron())
        }

        //print("inputs length: \(inputs.count)")

        inputs.append(Neuron(bias: true))
        hidden.append(Neuron(bias: true))

        output = Neuron()

        setupInputHidden()
        setupHiddenOutput()
    }

    ...
}
另一件(次要的)事情是,当你计算一个
神经元的输出时,你是在添加偏差而不是替换它,我不知道这是否是故意的,但结果似乎没有受到影响


创建网络时使用了多少隐藏层节点?我发现,当您至少有3个节点时,带有1个隐藏层的XOR工作得更好。我有1个隐藏层,带有4个节点初始化
连接时,您在
[0,1]
范围内给
权重属性一个随机值,但权重应该在
[-1,1]
范围内随机化。尝试将
Connection
初始化中的行
self.weight=we
更改为
self.weight=2*we-1
。啊!我不知道“重复:”使用相同的第一个论点:-/非常感谢你澄清和解决了我的问题。当stackoverflow允许我时,我将奖励分数。