파이썬에서 neural network 구현
7868 단어 파이썬데이터 과학DeepLearning
덧붙여 이번 기사는 O'Reilly의 「제로로부터 만드는 Deep Learning」을 참고로 하고 있습니다.
Neural Network(3층) 구현
우선 슈퍼 심플하게 아래 이미지와 같은 네트워크를 Python으로 작성해 보겠습니다. (적절한 이미지를 찾을 수 없기 때문에 실제로는 출력 레이어 이외의 각 레이어의 맨 위 노드는 bias unit라고 생각하십시오.) 출력 레이어의 활성화 함수에는 시그모이드 함수를 사용합니다.
우선은 시그모이드 함수의 구현 및 각 층의 가중치를 설정합니다. 또한 bias는 항상 1이라고 가정하고 미리 가중치를 곱해 둡니다.
def sigmoid(z):
return 1 / (1 + np.exp(-z))
def init_network():
network = {}
network['w1'] = np.array([[0.2, 0.4, 0.8], [0.7, 0.1, 0.9]])
network['b1'] = np.array([0.1, 0.3, 0.5])
network['w2'] = np.array([[0.1, 0.8], [0.6, 0.7], [0.3, 0.6]])
network['b2'] = np.array([0.1, 0.2])
network['w3'] = np.array([[0.1, 0.3], [0.2, 0.4]])
network['b3'] = np.array([0.1, 0.2])
return network
그런 다음 입력에서 출력 방향으로 Forward propagation을 수행하는 함수를 만듭니다.
def forward_prop(network, x):
w1, w2, w3 = network['w1'], network['w2'], network['w3']
b1, b2, b3 = network['b1'], network['b2'], network['b3']
a1 = np.dot(x, w1) + b1
z1 = sigmoid(a1)
a2 = np.dot(z1, w2) + b2
z2 = sigmoid(a2)
a3 = np.dot(z2, w3) + b3
y = a3
return y
실행하면,
network = init_network()
x = np.array([1.0, 0.5])
y = forward_prop(network, x)
print(y) #[0.33488935 0.73821001]
라는 결과를 얻었습니다. 지금까지 Matlab을 사용하고 있던 몸에서 보면, Numpy의 다차원 어레이는 편리하다고 하는 것과 아마추어 눈에도 코드가 읽기 쉽다고 생각했습니다.
이번에는 출력층의 노드가 2개였기 때문에 보다 심플한 시그모이드 함수로의 구현을 실시했습니다만, 다클래스 분류의 경우에는 softmax 함수인가를 사용하는 일도 있습니다. 또 그 때에는 오버플로우 대책으로서 Normalization이 필요하게 되기도 합니다만, 그 근처는 다음 기사에서 다시 써 가고 싶습니다.
Reference
이 문제에 관하여(파이썬에서 neural network 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rmas/items/d42add68d65d7ff5fa72텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)