일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- PHP
- Python
- 설치
- PICO CTF
- sgd
- FastAPI
- HTML
- 리뷰
- 오차역전파법
- flag
- Apache2
- 백준
- 딥러닝
- 코딩
- 순전파
- 역전파
- 파이썬
- 신경망
- 책
- picoCTF
- 우분투
- PostgreSQL
- 아파치
- AdaGrad
- C언어
- CTF
- 기울기
- 소프트맥스 함수
- 신경망 학습
- Python Challenge
- Today
- Total
Story of CowHacker
딥러닝 2.2 신경망 본문
다차원 배열
다차원 배열이란 숫자의 집합이다.
숫자가 한 줄로 늘어선 것이나 직사각형, 3차원, N차원으로 나열하는 것을 통틀어 다차원 배열이라고 한다.
이 다차원 배열을 넘파이로 구현해보겠다.
[ 1 차원 배열 ]
import numpy as num
A = num.array ( [ 1, 2, 3, 4 ] )
print ( A )
print ( num.ndim ( A ) ) # 배열의 차원수를 알 수 있다.
print ( A.shape ) # 배열의 형상을 알수 있다.
print ( A.shape [ 0 ] )
위 코딩은 1차원 배열을 구현한 것이다.
ndim은 배열의 차원수를 알려주는 역할을 한다.
shape은 배열의 형상을 알려주는 역할을 한다.
여기서 shape가 알려줄 때 튜플 형태로 알려준다는 특징이 있다.
shape [ n ] 은 그 튜플에 있는 해당 자리 숫자를 알려주는 역할을 한다.
[ 2 차원 배열 ]
import numpy as num
B = num.array ( [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] )
print ( B )
print ( num.ndim ( B ) )
print ( B.shape )
print( B.shape [ 1 ] )
행렬의 곱
그림1 처럼 행렬 계산식을 만들어보자
그림 1의 행렬을 계산해보면 그림 2의 결과가 나온다.
위 행렬의 곱을 넘파이로 구현해볼 것이다.
[ 2 * 2 행렬 ]
import numpy as num
A = num.array ( [ [ 1, 2 ], [ 3, 4 ] ] )
B = num.array ( [ [ 5, 6 ], [ 7, 8 ] ] )
print ( num.dot ( A, B ) )
dot가 행렬 곱을 해주는 역할을 한다.
다음은 2 * 3 형태의 행렬 곱을 구현해보겠다.
[ 2 * 3 행렬 ]
import numpy as num
A = num.array ( [ [ 1, 2, 3 ], [ 4, 5, 6 ] ] )
B = num.array ( [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ] )
print ( num.dot ( A, B ) )
이처럼 dot으로 행렬 곱을 구현할 수 있다.
신경망에서의 행렬의 곱
import numpy as num
X = num.array ( [ 1, 2 ] )
W = num.array ( [ [ 1, 3, 5 ], [ 2, 4, 6] ] )
print( num.dot ( X, W ) )
위 신경망은 편향과 활성화 함수를 배제하고 가중치만 갖고 있는 상태다.
이로써 신경망에서 행렬을 다뤄봤다.
'공부 > 딥러닝' 카테고리의 다른 글
딥러닝 2.4 신경망 (0) | 2020.08.03 |
---|---|
딥러닝 2.3 신경망 (0) | 2020.08.03 |
딥러닝 2.1 신경망 (0) | 2020.07.26 |
딥러닝 2.0 신경망 (0) | 2020.07.25 |
딥러닝 1. 퍼셉트론 (0) | 2020.07.22 |