본문 바로가기
Tech Development/Deep Learning (CNN)

Getting Familiar with Numpy & Matplotlib

by JK from Korea 2022. 10. 8.

Date : 2022.04.16

 

*The contents of this book is heavily based on Stanford University’s CS231n course.

 

[Intro]

이번 학습일지 시리즈는 사이토 고키의 “Deep Learning from Scratch” 책을 기반으로 한다. Numpy, scipy, pandas, 등의 문법을 공부하고 있었지만 새로운 문법과 라이브러리 사용법만 공부하는 것에 있어 지루함을 느꼈다. 나한테 너무 어려울거라고 생각했지만 적절한 난이도에 쉽게 풀어쓴 책이라 공부하는 과정이 정말 재밌었다.

 

책의 구성은 기본적인 파이썬 문법, numpy와 pyplot의 사용법부터 시작해서, 퍼셉트론, 신경만, 손실함수, 오차역전파법, 매개변수 갱신 등을 커버한다. 단계적인 절차를 거쳐 합성곱 신경망 (CNN)에 도달할 수 있도록 해준다. 이미지 인식을 다루는 딥러닝 입문서로 내 스타일이었다.

 

옮긴이 개인 블로그 : https://www.mindmeister.com/ko/users/channel/86528

 

[Numpy & Matplotlib]

이 책에서 사용하는 라이브러리는 밑의 두가지이다. 간단하게 훑고 넘어가자.

 

  1. Numpy
  2. Matplotlib

 

[넘파이 익숙해지기]

앞으로 수십장의 숫자 이미지를 담고 있는 MNIST 데이터셋을 다룰 것이다. 수만개에서 수백만개의 데이터를 효율적으로 처리하기 위해서 배열 연산을 수도 없이 할 것이다. 배열 연산은 for 문과 같은 반복문으로도 처리가 가능하지만 넘파이 라이브러리를 이용해서 효율을 높일 것이다.

 

Numpy Library

Replit 파이썬 프로젝트를 만들면 넘파이가 이미 깔려있다. 넘파이 라이브러리에 속해 있는 클래스 중에서 우리가 사용할 것은 배열 연산 기능이 있는 numpy.array 클래스이다.

 

Fundamentals of Numpy Arrays
Output

수학에서 1차원 배열은 벡터(vector), 2차원 배열은 행렬(matrix)라고 한다. 벡터와 행렬을 일반화하는 것을 텐서(tensor)라고 한다.

 

여기까지는 기본이고 좀 더 고급 기능인 브로드캐스트을 해보자.

 

Broadcast

           

Output

연산 결과를 보면 1차원 배열인 B가 2차원 배열 A와 똑같은 형상으로 변형된 후 원소별 연산이 이뤄진다. 브로드캐스트 기능 덕분에 형상이 다른 배열끼리의 연산이 스마트하게 가능하다.

 

*주의할 점은 파이썬의 “*” 기능과 “np.dot” 기능은 다르다. *은 스칼라 값을 곱하는 개념에 가깝다. 그래서 브로드캐스트 기능도 가능한 것이다. Matrix Multiplication의 경우에는 “np.dot”이라는 메서드를 사용한다. 서로 다른 곱셈 기능을 수행한다는 점을 잊지말자.

 

Input Code

 

Output Values

 

[Matplotlib]

넘파이 기능을 사용해서 데이터 연산을 진행했다. 이제는 데이터를 직관적으로 이해하기 위해 그래프로 표현하는 “시각화”를 할 것이다. “matplotlib”는 그래프를 그려주는 라이브러리이다. matplotlib 라이브러리의 pyplot 모듈을 사용하자.

 

matplotlib.pyplot practice
pyplot output

 

728x90
반응형

댓글