[비전공자를 위한 딥러닝] 파이썬 실습 - 가중치 행렬 연산



 이 글에서는 파이썬 설치와 실행에 대해서 다루지 않습니다.
대신 웹 브라우저에서 간편하게 코딩할 수 있는 무료 플랫폼 repl.it을 사용해 예시를 구성하였습니다.



[팁] Setting에서 Indent size를 4로 설정하면 더 파이썬다운 레이아웃을 설정할 수 있다.


이전 장에서 신경망에서 가중치 행렬의 의미를 다뤘으니, 이번 장에서는 가중치 행렬 연산을 실습해보기로 하자.
위의 행렬을 파이썬에서 표현하려면, 일반적으로 넘파이(numpy)의 배열(array)을 사용한다.
그 형식은 다음과 같다.*


* "np."에 대해서는 이전 실습을 참고할 것


대괄호 [] 안에 숫자나 변수를 넣어주면 된다.




이때 배열(벡터) B의 경우 세로로 세워줘야 행렬곱을 계산할 수 있는데*, 이 변환 과정을 전치(transpose)라고 한다.

*이 예제의 경우 행렬이 아니라 한 줄 짜리 벡터이기 때문에 전치를 하지 않더라도 같은 결과가 계산된다. 하지만 예를 들어 3x3 행렬의 경우 전치를 하지 않는다면 세로-가로가 바뀐 채로 계산이 되기 때문에 주의해야 한다.



넘파이에서는 배열 뒤에 ".T"를 붙이는 방식으로 전치행렬을 만들 수 있다.





이제 A, B 두 배열을 행렬곱(matrix multiplication)해보자.


행렬곱은 다음과 같이 작성할 수 있다.

반환되는 결과를 확인하기 위해 print() 함수에 넣어서 실행해보면 다음과 같다.





Run 버튼을 눌러보면 "12"라는 결과를 확인할 수 있을 것이다.




이번에는 행이 2개인 행렬과 벡터의 행렬곱을 계산해보자.
벡터가 여러 개 모인 행렬의 경우 다음과 같이 입력할 수 있다.


차례대로 1행, 2행 순으로 생각하면 된다.




이전 장에서 다룬 예제를 실제로 구현해서 올바른 결과가 나오는지 확인해보자.




그림에서와 같이 [3  9] 가 출력되는 것을 확인할 수 있을 것이다.








===과제===





1. 데이터 행렬 X를 위와 같이 생성하고 출력해볼 것.
    예) X = np.array([[-1.7, ...



2. 6개의 숫자가 담긴 가중치 행렬 W를 생성하고 출력해볼 것.
    (가중치 w1, w2, w3, w4, w5, b에는 넣고 싶은 숫자를 넣어볼 것.)
    예) W = np.array([2, -2, 0.5, ... 



3. X와 W.T의 행렬곱 연산을 출력해볼 것.
    (선형회귀의 결과로 하나의 숫자가 나와야 한다.)



(선택) 4. 여러 줄 짜리 (n x 6 행렬) 가중치 행렬 W2를 생성하고 W2.T를 위의 그림처럼 출력되게 만들 것.
    (2번과 마찬가지로 행렬 안의 숫자들은 마음대로 정할 것.)
    (6개 숫자들의 묶음인 가중치 벡터가 한 줄씩 늘어날 때마다 그 결과를 살펴볼 것.)
    예) W2 = np.array([[0.7, 0, -1, 2, 0.1, -3], [2, 0, ...


댓글 쓰기

0 댓글