2013-10-15 3 views
2

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 네트워크를 구현할 수 있습니까? 그것은 입력 레이어와 출력 레이어 인 하나의 레이어를 가지고 있습니다. 이 경우 가상 구현 레이어가 존재하기 때문에 구현하면 잘못된 결과가 발생합니다. 즉, 뉴런이 입력과 단 하나의 연결 만 가질 수 있도록 완전히 다른 입력 레이어 구현이 필요합니다.

정말 혼란스러워지고 있습니다. 누군가가 나를 위해 명확하게 설명해주기를 바랍니다.

답변

1

전통적인 용어로 "입력 레이어"는 입력을 출력하는 뉴런 세트로, 실제로 계산을 수행하는 추가 레이어에서 사용할 수 있습니다. 입력 뉴런은 계산을 수행 할 입력이 없으므로 계산을 수행하지 않습니다.

귀하의 이해가 정확합니다. "전통적인"다이어그램에서 입력 레이어는 "계산 레이어"가 아닙니다. 실제 "계산 계층"만 구현하면됩니다.

귀하의 게시물에서 읽은 것으로부터, AForge 라이브러리는 단순히 다른 용어를 사용하고있는 것으로 보입니다. 즉, 입력 레이어로 입력을 읽는 첫 번째 계산 레이어를 참조 할 수 있습니다.

관련 문제