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 라이브러리는 입력 레이어를 네트워크에 추가하지만 연결에 가중치도 추가합니다. 세 개의 다이어그램의
어느 하나가 올바른 하나입니다
이 세 가지 네트워크 다이어그램을 살펴, 요약하면?
가상 입력 레이어 (네트워크에 추가하지 않지만 입력 배열은 기본적으로 입력 레이어)를 구현한다고 말할 수 있습니다. 그렇다면 어떻게 hoppfield 네트워크를 구현할 수 있습니까? 그것은 입력 레이어와 출력 레이어 인 하나의 레이어를 가지고 있습니다. 이 경우 가상 구현 레이어가 존재하기 때문에 구현하면 잘못된 결과가 발생합니다. 즉, 뉴런이 입력과 단 하나의 연결 만 가질 수 있도록 완전히 다른 입력 레이어 구현이 필요합니다.
정말 혼란스러워지고 있습니다. 누군가가 나를 위해 명확하게 설명해주기를 바랍니다.