[0부터 만드는 Deep Learning] 간이적인 신경망을 알기 쉽게 구현해 보았다
5729 단어 딥러닝파이썬사랑DeepLearning심층 학습
소개
이 기사는 처음부터 만드는 딥 러닝 4장 신경망을 자신 나름대로 이해하고 알기 쉽게 출력한 것입니다.
문계의 스스로도 이해할 수 있었으므로, 기분을 편하게 읽어 주시면 다행입니다.
또, 본서를 학습할 때에 참고해 주시면 더욱 기쁩니다.
신경망의 구조
신경망은 입력층, 중간층, 출력층의 3층으로 이루어져 있어 3층 네트워크라고도 불리기도 합니다.
그러나 3층이라고는 해도 중간층은 한층 구조가 아니고, 다층 구조이므로 실제로는 3층입니다. 다층 퍼셉트론처럼 레이어를 깊게 하고 싶을 때는 중간 레이어를 깊게 합니다.
이전에 쓴 것처럼 신경망과 다층 퍼셉트론의 차이는 활성화 함수의 차이입니다.
나중의 구조는 거의 같습니다.
이제 코드로 구현해 보겠습니다.
#3層ニューラルネットワーク実装
X = np.array([1.0,0.5,2.0])#入力層
B1 = np.array([0.1,0.2])
W1 = np.array([
[0.1,0.3],
[0.2,0.4],
[0.4,0.5]
])
A1 = np.dot(X,W1) + B1 # 各ニューロンの入力信号の総和 + 各ニューロンのバイアス
A1 #各ニューロンの入力値
#中間層一層目
Z1 = sigmoid_function(A1)
Z1#一層目の出力信号
#中間層二層目
W2 = np.array([
[0.1,0.4,0.6],
[0.2,0.5,0.8]
])
B2 = np.array([0.1,0.2,0.4])
A2 = np.dot(Z1,W2) + B2
Z2 = sigmoid_function(A2)
Z2#二層目の出力信号
W3 = np.array([
[0.2,0.3],
[0.3,0.4],
[0.4,0.9]
])
B3 = np.array([0.1,0.2])
A3 = np.dot(Z2,W3) + B3
#出力層の活性化関数
def identity_function(x):
return x
identity_function(A3)
이번은 아직 학습을 구현하기 전이므로 가중치나 바이어스 등의 파라미터는 수동 설정입니다만, 위의 코드로 신경망의 구현을 할 수 있습니다.
위를 보면 알겠지만, 거의 퍼셉트론의 구조와 같기 때문에 설명은 거의 들어 가지 않습니다.
다른 부분은 활성화 함수가 step 함수가 아니라 시그모이드 함수라는 곳뿐입니다.
나중에 또 하나 출력층이 신경망에 있기 때문에 거기 해설이 필요합니다.
하지만 위의 실장이라고 출력층의 설명이 전혀 되어 있지 않으므로, 출력층의 해설은 다음에 하겠습니다.
Reference
이 문제에 관하여([0부터 만드는 Deep Learning] 간이적인 신경망을 알기 쉽게 구현해 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/SyutoHidano/items/079c1ccc70541e64b0a9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
신경망은 입력층, 중간층, 출력층의 3층으로 이루어져 있어 3층 네트워크라고도 불리기도 합니다.
그러나 3층이라고는 해도 중간층은 한층 구조가 아니고, 다층 구조이므로 실제로는 3층입니다. 다층 퍼셉트론처럼 레이어를 깊게 하고 싶을 때는 중간 레이어를 깊게 합니다.
이전에 쓴 것처럼 신경망과 다층 퍼셉트론의 차이는 활성화 함수의 차이입니다.
나중의 구조는 거의 같습니다.
이제 코드로 구현해 보겠습니다.
#3層ニューラルネットワーク実装
X = np.array([1.0,0.5,2.0])#入力層
B1 = np.array([0.1,0.2])
W1 = np.array([
[0.1,0.3],
[0.2,0.4],
[0.4,0.5]
])
A1 = np.dot(X,W1) + B1 # 各ニューロンの入力信号の総和 + 各ニューロンのバイアス
A1 #各ニューロンの入力値
#中間層一層目
Z1 = sigmoid_function(A1)
Z1#一層目の出力信号
#中間層二層目
W2 = np.array([
[0.1,0.4,0.6],
[0.2,0.5,0.8]
])
B2 = np.array([0.1,0.2,0.4])
A2 = np.dot(Z1,W2) + B2
Z2 = sigmoid_function(A2)
Z2#二層目の出力信号
W3 = np.array([
[0.2,0.3],
[0.3,0.4],
[0.4,0.9]
])
B3 = np.array([0.1,0.2])
A3 = np.dot(Z2,W3) + B3
#出力層の活性化関数
def identity_function(x):
return x
identity_function(A3)
이번은 아직 학습을 구현하기 전이므로 가중치나 바이어스 등의 파라미터는 수동 설정입니다만, 위의 코드로 신경망의 구현을 할 수 있습니다.
위를 보면 알겠지만, 거의 퍼셉트론의 구조와 같기 때문에 설명은 거의 들어 가지 않습니다.
다른 부분은 활성화 함수가 step 함수가 아니라 시그모이드 함수라는 곳뿐입니다.
나중에 또 하나 출력층이 신경망에 있기 때문에 거기 해설이 필요합니다.
하지만 위의 실장이라고 출력층의 설명이 전혀 되어 있지 않으므로, 출력층의 해설은 다음에 하겠습니다.
Reference
이 문제에 관하여([0부터 만드는 Deep Learning] 간이적인 신경망을 알기 쉽게 구현해 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/SyutoHidano/items/079c1ccc70541e64b0a9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)