2016-06-30 2 views
0

문제는 필자의 훈련 된 값에서 거의 0.8-1.0의 오차가 발생한다는 것이다. 오류를 줄이는 방법을 어떻게 알 수 있습니까? 나는 훈련 속도를 줄이려고했지만 작동하지 않았다. 저는 현재 Excel 시트의 데이터 세트를 사용하여 시스템을 교육하고 있습니다. 여기 http://www.mediafire.com/download/j9o676nvqr32fnb/dataset1.xlsx 내가 사용하고 코드입니다 :인공 신경망을 구현하는 동안 훈련 된 값의 오차를 줄이려면 어떻게해야합니까?

import numpy as np 
import xlrd 
def nonlin(x,deriv=False): 
    if(deriv==True): 
     return x*(1-x) 
    return 1/(1+np.exp(-x)) 
addr="/home/shashwat08/pycodes/ann/dataset1.xlsx" 
wb=xlrd.open_workbook(addr) 
sheet=wb.sheet_by_index(0) 

output=[[sheet.cell_value(r,1) for r in range(sheet.nrows)]] #output array 
mv=[[sheet.cell_value(r,0) for r in range(sheet.nrows)]] #input array 

output=np.array(output) 
mv=np.array(mv) 

op=output.ravel() 
ip=mv.ravel() 

np.random.seed(1) 

syn0=2*np.random.random((1,4))-1 
syn1=2*np.random.random((4,1))-1 

for i in range(sheet.nrows): 
    for j in xrange(100000): 
     l0=ip[i] 
     l1=nonlin(np.dot(l0,syn0)) 
     l2=nonlin(np.dot(l1,syn1)) 

     l2_err=op[i]-l2 

     if(j%10000)==0: 
      print("Error "+ str(np.mean(np.abs(l2_err)))) 
     l2_delta=l2_err*nonlin(l2,deriv=True)    #delta value 
     l1_err=l2_delta.dot(syn1.T) 
     l1_delta=l1_err*nonlin(l1,deriv=True) 

     #syn1=syn1+l1.T.dot(l2_delta) 
     #syn0=syn0+l0.T.dot(l1_delta) 
     L1=l1.T 
     L0=l0.T 

     syn1=syn1+0.2*L1*l2_delta 
     syn0=syn0+0.2*L0*l1_delta 

print("Trained values\n") 
print l2 

당신의 도움이 이해할 수있을 것이다 여기 내가 사용 샘플 데이터 세트에 대한 링크입니다. 감사. :)

답변

0

인공 신경망은 신경 네트워크가 훈련 데이터 집합에서 훈련 된 경우 테스트 데이터 집합의 분류 정확도를 결정하는 일련의 하이퍼 매개 변수를 허용합니다.

이 하이퍼 파라미터는 다음과 같습니다 (한 시대가 무게와 편견의 훈련입니다 (가장 일반적으로 기호 알파로 표현) 시대의

2. 번호

1. 학습 속도 적어도 한 번 훈련 데이터 집합을 반복).

3. 미니 배치 크기 (당신이 훈련을 다시 전파와 확률 그라데이션 하강 방법을 사용하는 경우, 다음 미니 배치의 크기는 신경 네트워크의 분류의 정확성을 결정하는 데 큰 역할을한다).

4. 교육 데이터 세트에 정확성이 주석으로 표시됩니다.

인공 신경망 구현을 포함하지 않았다고 생각합니다. 이 분야에 대해 비교적 새로운 사람이라면 this 저장소의 인공 신경망을 살펴볼 수 있습니다.

인공 신경망은 소리 이벤트 감지 및 분류 문제를 위해 처음부터 구현되었습니다.

관련 문제