gpt4 book ai didi

c# - 实现人工神经网络时,是否应忽略输入层?

转载 作者:太空宇宙 更新时间:2023-11-03 13:33:53 25 4
gpt4 key购买 nike

我正在尝试在 C# 中实现人工神经网络,但我并不完全理解输入层的用途。它不做任何处理,因为它的神经元和输入之间的连接没有权重。

考虑以下代码:

    //Network
public void Compute(float[] input) {
layers[0].Compute(input);

for (int i = 1; i < layers.Length; i++) {
layers[i].Compute(layers[i - 1].Output);
}
}

//Layer
public void Compute(float[] input) {
for (int i = 0; i < neurons.Length; i++) {
output[i] = neurons[i].Compute(input);
}
}

//Neuron
public float Compute(float[] Input) {
float output = 0.0f;
for (int i = 0; i < Input.Length; i++) {
output += Input[i] * weights[i];
}

return (output);
}

向网络添加层时,我不需要添加输入层,因为输入数组直接传递到隐藏/输出层。那是对的吗?如果是,那么 AForge.Net 库似乎做错了。 AForge 库将输入层添加到网络,但它也为连接添加了权重。

总结一下,看看这三张网络图: enter image description here

三幅图中哪一幅是正确的?

我猜你可以说我正在实现一个虚拟输入层(不是将它添加到网络中,但输入数组基本上就是输入层)。如果是这样的话,hoppfield 网络将如何实现?它有一层既是输入层又是输出层。在那种情况下,我的实现会产生错误的结果,因为存在虚拟输入层。这意味着需要一个完全不同的输入层实现来允许神经元与输入只有一个连接。

这真的很困惑,我希望有人能为我澄清一些事情。

最佳答案

在传统术语中,“输入层”是一组输出输入的神经元,因此它们可以被实际进行计算的其他层使用。输入神经元不进行计算,因为它们没有任何输入来进行计算。

所以你的理解是正确的。在“传统”图中,输入层不是“计算层”。您只需实现实际的“计算层”。

从我在您的帖子中读到的内容来看,似乎 AForge 库可能只是使用了不同的术语,即它可能指的是第一个计算层,即读取输入的计算层,作为输入层。

关于c# - 实现人工神经网络时,是否应忽略输入层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19385690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com