Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python의 단일 뉴런 신경망

<시간/>

신경망은 딥 러닝의 매우 중요한 핵심입니다. 그것은 많은 다른 영역에서 많은 실용적인 응용 프로그램을 가지고 있습니다. 이제 이러한 네트워크는 이미지 분류, 음성 인식, 물체 감지 등에 사용됩니다.

이것이 무엇이며 어떻게 작동하는지 이해합시다.

이 네트워크에는 다른 구성 요소가 있습니다. 다음과 같습니다 -

  • 입력 레이어 x
  • 임의의 은닉 레이어
  • 출력 레이어 ŷ
  • W 및 b로 정의되는 각 레이어 간의 가중치 및 편향 세트
  • 다음은 각 은닉층 σ에 대한 활성화 함수의 선택입니다.

이 다이어그램에는 2계층 신경망이 표시됩니다(신경망의 계층 수를 계산할 때 일반적으로 입력 계층은 제외됨)

Python의 단일 뉴런 신경망

이 그래프에서 원은 뉴런을 나타내고 선은 시냅스를 나타냅니다. 시냅스는 입력과 가중치를 곱하는 데 사용됩니다. 우리는 가중치를 뉴런 간의 연결의 "강도"라고 생각합니다. 가중치는 신경망의 출력을 정의합니다.

다음은 간단한 피드포워드 신경망이 작동하는 방식에 대한 간략한 개요입니다. −

피드포워드 신경망을 사용할 때 몇 가지 단계를 따라야 합니다.

  • 먼저 행렬(숫자의 2D 배열)로 입력을 받습니다.

  • 다음은 입력에 설정된 가중치를 곱하는 것입니다.

  • 다음은 활성화 기능을 적용합니다.

  • 출력을 반환합니다.

  • 다음 오차는 데이터에서 원하는 출력과 예측된 출력의 차이를 계산하는 것입니다.

  • 그리고 가중치는 오차에 따라 조금씩 변합니다.

  • 훈련을 위해 이 프로세스를 1,000번 이상 반복하고 더 많은 데이터를 훈련할수록 출력이 더 정확해집니다.

공부 시간, 수면 시간(입력)테스트 점수(출력)

2, 9921, 5863, 6894, 8?

예시 코드

from numpy import exp, array, random, dot, tanhclass my_network():def __init__(self):random.seed(1) # 3x1 가중치 행렬 self.weight_matrix =2 * random.random((3, 1) ) - 1 defmy_tanh(self, x):return tanh(x) defmy_tanh_derivative(self, x):return 1.0 - tanh(x) ** 2 # 순방향 전파 defmy_forward_propagation(self, input):return self.my_tanh(dot(inputs) , self.weight_matrix)) # 신경망 훈련. deftrain(self, train_inputs, train_outputs, num_train_iterations):for iteration in range(num_train_iterations):output =self.my_forward_propagation(train_inputs) # 출력의 오류를 계산합니다. error =train_outputs - 출력 조정 =dot(train_inputs.T, error *self.my_tanh_derivative(output)) # 가중치 행렬 조정 self.weight_matrix +=조정 # 드라이버 코드 if __name__ =="__main__":my_neural =my_network() print ('훈련 시작 시 임의 가중치') print (my_neural.weight_matrix) train_inputs =array([[0, 0, 1], [1, 1, 1], [1, 0, 1], [0, 1, 1]]) train_outputs =array([[0, 1, 1, 0]]).T my_neural.train(train_inputs, train_outputs, 10000) print ('훈련 후 새로운 가중치 표시') print (my_neural.weight_matrix) # 테스트 새로운 상황의 신경망. print("새로운 예제에서 네트워크 테스트 ->")print(my_neural.my_forward_propagation(array([1, 0, 0])))

출력

학습 시작 시 임의 가중치[[-0.16595599][ 0.44064899][-0.99977125]]학습 후 새 가중치 표시[[5.39428067][0.19482422][0.34317086][0.34317086]T 사전>