>  기사  >  백엔드 개발  >  Python에서 2계층 신경망과 퍼셉트론 모델을 구현하는 방법

Python에서 2계층 신경망과 퍼셉트론 모델을 구현하는 방법

php中世界最好的语言
php中世界最好的语言원래의
2017-12-20 13:08:272081검색

이 글에서는 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 튜토리얼

가장 간단한 문자열 일치 알고리즘 튜토리얼 PHP

위 내용은 Python에서 2계층 신경망과 퍼셉트론 모델을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.