이 글에서는 Python을 사용하여 2계층 신경망과 퍼셉트론 모델을 구현하는 방법을 공유하겠습니다. 참고용으로 구체적인 내용과 예는 다음과 같습니다.
python 3.4 numpy가 사용되기 때문에
여기에서는 먼저 퍼셉트론을 구현합니다. 컨트롤러 모델은 다음 대응을 달성하는 데 사용됩니다
[[0,0,1], ——- 0 [0,1,1], ——- 1 [1,0,1], ——- 0 [1,1,1]] ——- 1
위 데이터에서 볼 수 있습니다. 입력은 3개 채널이고 출력은 단일 채널입니다.
여기서 활성화 함수우리는 시그모이드 함수 f(x)=1/(1+exp(-x))를 사용합니다.
미분 파생은 다음과 같습니다.
L0=W*X; z=f(L0); error=y-z; delta =error * f'(L0) * X; W=W+delta;
파이썬 코드
import numpy as np #sigmoid function def nonlin(x, deriv = False): if(deriv==True): return x*(1-x) return 1/(1+np.exp(-x)) # input dataset X=np.array([[0,0,1], [0,1,1], [1,0,1], [1,1,1]]) # output dataset y=np.array([[0,1,0,1]]).T #seed( ) 用于指定随机数生成时所用算法开始的整数值, #如果使用相同的seed( )值,则每次生成的随即数都相同, #如果不设置这个值,则系统根据时间来自己选择这个值, #此时每次生成的随机数因时间差异而不同。 np.random.seed(1) # init weight value with mean 0 syn0 = 2*np.random.random((3,1))-1 for iter in range(1000): # forward propagation L0=X L1=nonlin(np.dot(L0,syn0)) # error L1_error=y-L1 L1_delta = L1_error*nonlin(L1,True) # updata weight syn0+=np.dot(L0.T,L1_delta) print("Output After Training:") print(L1)
출력 결과를 보면 기본적으로 대응 관계가 이루어지고 있음을 알 수 있습니다.
다음으로, 위 작업을 달성하기 위해 2계층 네트워크가 사용됩니다. 여기에 은닉층이 추가되고, 은닉층에는 4개의 뉴런이 포함됩니다.
import numpy as np def nonlin(x, deriv = False): if(deriv == True): return x*(1-x) else: return 1/(1+np.exp(-x)) #input dataset X = np.array([[0,0,1], [0,1,1], [1,0,1], [1,1,1]]) #output dataset y = np.array([[0,1,1,0]]).T #the first-hidden layer weight value syn0 = 2*np.random.random((3,4)) - 1 #the hidden-output layer weight value syn1 = 2*np.random.random((4,1)) - 1 for j in range(60000): l0 = X #the first layer,and the input layer l1 = nonlin(np.dot(l0,syn0)) #the second layer,and the hidden layer l2 = nonlin(np.dot(l1,syn1)) #the third layer,and the output layer l2_error = y-l2 #the hidden-output layer error if(j%10000) == 0: print "Error:"+str(np.mean(l2_error)) l2_delta = l2_error*nonlin(l2,deriv = True) l1_error = l2_delta.dot(syn1.T) #the first-hidden layer error l1_delta = l1_error*nonlin(l1,deriv = True) syn1 += l1.T.dot(l2_delta) syn0 += l0.T.dot(l1_delta) print "outout after Training:" print l2
이 사례를 읽으신 후 방법을 마스터하셨다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사에 주목하세요!
관련 자료:
PHP가 스택 데이터 구조 및 대괄호 일치 알고리즘을 구현하는 방법에 대한 자세한 코드 예
PHP에서 가장 간단한 문자열 일치 알고리즘, PHP 일치 알고리즘_PHP 튜토리얼
위 내용은 Python에서 2계층 신경망과 퍼셉트론 모델을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!