문제는 필자의 훈련 된 값에서 거의 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