뉴럴 네트워크를 가르치 려하여 입력 된 값인 의 레벨을 기준으로을 결정하십시오. 뉴럴 네트워크는 항상 세 개의 입력을받습니다. [x, y, life]
. life => 0.2
인 경우 [x, y]
에서 (1, 1)
까지 각도를 출력해야합니다. life < 0.2
인 경우 [x, y]
에서 (0, 0)
까지 각도를 출력해야합니다.올바르게 뉴런 네트워크를 훈련시키는 방법
뉴런의 입력과 출력이 0
과 1
사이 여야하므로, 각을 2 *Math.PI
으로 나눕니다.
var network = new synaptic.Architect.Perceptron(3,4,1);
for(var i = 0; i < 50000; i++){
var x = Math.random();
var y = Math.random();
var angle1 = angleToPoint(x, y, 0, 0)/(2 * Math.PI);
var angle2 = angleToPoint(x, y, 1, 1)/(2 * Math.PI);
for(var j = 0; j < 100; j++){
network.activate([x,y,j/100]);
if(j < 20){
network.propagate(0.3, [angle1]);
} else {
network.propagate(0.3, [angle2]);
}
}
}
여기를보십시오 : 나는 다음과 같은 입력
[0, 1, 0.19]
를 입력 할 때 jsfiddle
그래서, 내가 [0.75]
에 가까운 출력 뭔가 신경망을 기대 여기
1.5PI/2PI
). 그러나 제 결과는 완전히 일치하지 않으며 주어진 입력과 상관 관계가 없습니다.
신경망을 가르치면서 어떤 실수를합니까?
I 출력
1
에 신경망을 가르치는 데에 성공했으면c => 0.2
및0
가 입력 될 때c < 0.2
[a, b, c]
[a, b, c]
와 입력. 나는 또한[x, y]
입력을 기반으로 특정 위치에 각도를 출력하도록 가르쳐 왔지만 나는 그것들을 조합 할 수 없다.. 요청으로
, 내가 원하는 출력을 얻기 위해 2 신경망을 사용하는 일부 코드를 작성했습니다. 첫 번째 뉴럴 네트워크는 라이프 레벨을 0 또는 1로 변환하고, 두 번째 뉴럴 네트워크는 첫 번째 뉴럴 네트워크에서 출력 된 0 또는 1에 따라 각도를 출력합니다. 이 예에서 볼 수 있듯이 jsfiddle
:
// This network outputs 1 when life => 0.2, otherwise 0
var network1 = new synaptic.Architect.Perceptron(3,3,1);
// This network outputs the angle to a certain point based on life
var network2 = new synaptic.Architect.Perceptron(3,3,1);
for (var i = 0; i < 50000; i++){
var x = Math.random();
var y = Math.random();
var angle1 = angleToPoint(x, y, 0, 0)/(2 * Math.PI);
var angle2 = angleToPoint(x, y, 1, 1)/(2 * Math.PI);
for(var j = 0; j < 100; j++){
network1.activate([x,y,j/100]);
if(j < 20){
network1.propagate(0.1, [0]);
} else {
network1.propagate(0.1, [1]);
}
network2.activate([x,y,0]);
network2.propagate(0.1, [angle1]);
network2.activate([x,y,1]);
network2.propagate(0.1, [angle2]);
}
}
는 여기를보십시오 :이 코드입니다. 더 많은 반복을 추가함으로써 원하는 출력에 매우 근접하게 도달 할 수 있습니다. 교육으로 샘플링
숨겨진 레이어에 더 많은 뉴런을 추가하는 것이 좋습니다. – cdm
@cdm 시도했지만 차이는 없었습니다. 개별 레이어를 구성하여 내 네트워크를 만들려고합니다. –
중 하나가 귀하의 레이어에 문제가 있거나 여러 신경망을 사용하는 것이 더 나은 해결책입니다. – Walfrat