# [ 類神經網路 ] 紀錄|關於單層感知機的碰壁
前些陣子開始跟著學長研究類神經網路?
總之我從最簡單的單層感知機開始寫起
卻一直卡住...
底下是我的程式碼
如果有大佬路過 希望給予一點幫助
import java.util.*;
public class perceptronTest {
private static float T;//預估值
private static float Y;//激發函數輸出值
private static float x;//輸入值
private static float w;//權值
private static float theta;//閥值
private static float eta;//學習速率
private static float bias;//修正值
private static float rate;//正確率
private static int count;//錯誤計數
private static Scanner sc;//輸入
//設定初始值
public perceptronTest() {
theta=0;
w=0;
bias=0;
rate=0.000f;
count=0;
eta=0.5f;
}
//求和函數(ΣXi*Wi-θ)
public static float sigma(int x) {
float net=x*w-theta;
return net;
}
//激發函數
public static float actFunc(float net) {
Y=(net>=0)?net:0;
return Y;
}
//學習區塊
public static int fit(int Data) {
while(bias!=0) {
Y=actFunc(sigma(Data)); //激發函數輸出值
T=(Data>0)?1:0; //預估值
bias=eta*(T-Y)*Data;
w+=bias;
theta+=bias/Data;
rate=(float)(Y/T*100);
count++;
System.out.println("[AI]#"+count+" >> "+rate);
}
return 0;
}
//設定資料庫
public static int Data(int max,int min) {
int data=(min-1)+(int)(Math.random()*(max-min)+1);
return data;
}
public static void main(String[] args) {
fit(Data(100,-100));
sc = new Scanner(System.in);
System.out.print("[#] ");
x=sc.nextInt();
fit(Data(100,-100));
actFunc(sigma((int)x));
}
}
我順便貼個學長的成果好了
https://github.com/shane-liu-1010/Perceptron/blob/master/perceptron.cpp
留言
張貼留言
請留下你的意見