Story of CowHacker

딥러닝 2.2 신경망 본문

공부/딥러닝

딥러닝 2.2 신경망

Cow_Hacker 2020. 7. 26. 17:43
728x90

다차원 배열

 

다차원 배열이란 숫자의 집합이다.

숫자가 한 줄로 늘어선 것이나 직사각형, 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

그림 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 ) )

 

위 신경망은 편향과 활성화 함수를 배제하고 가중치만 갖고 있는 상태다.

 

이로써 신경망에서 행렬을 다뤄봤다.

 

 

 

 

 

 

728x90

'공부 > 딥러닝' 카테고리의 다른 글

딥러닝 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
Comments