*** 교수님의 주의사항 *
만약 coursera 수강생이라면,
프로그래밍 과제는 최대한 스스로의 힘으로 해보고 도저히 막히는 부분이나 이해가 가지 않은 부분만을
남의 도움을 받기를 추천한다고 합니다.

이번 시간에는,
2주 차 때 배운 내용을 총동원하여 고양이 사진 분류기를 만드는 과제를 수행해 봅시다.
모델은 jupyter notebook이라는 인공지능을 위한 파이썬 계발 툴을 활용하여 만듭니다.
바로 시작해 봅시다.

신경망 사고방식을 이용한 로지스틱 회귀 모델(고양이 사진 분류기)을 만들어 보는 과제이며,
이 과제를 통해서, 딥러닝(Deep learning)에 대한 직관력(intuitions)과
신경망 사고방식(Neural Network mindset)을 구현하는 방법을 알 수 있다고 합니다.
* 주의 사항 *
1.for/while 반복문은 특정 지시가 있지 않는 한, 사용하지 않아야 합니다.
2. 대신, np.dot()을 사용해야 합니다.
딥러닝 모델(Deep learning Model)을 만들며 당신이 배우는 점
1. 실제 모델에서, 매개변수 초기화 ( Initializing parameters) -> 쉽게 말하면 매개변수 바꾸는 법
2. 실제 모델에서, 기울기(gradient)와 손실 함수(Cost function) 계산하는 법
3. 실제 모델에서, 경사 하강법(Gradient descent)을 통한, 최적화 알고리즘을 사용하는 법

목차는 다음과 같습니다. 참고하세요!
1- Packages

"Packages"에 대해 모르시는 분도 계실 수 있어서, 최대한 간단하게 설명드리겠습니다.

과학 상자는 과학 실험을 편하게 하기 위해서, 미리 준비물들을 모아놓은 상자입니다.
package도 이러한 과학 상자의 역할이라고 보시면 이해가 쉽습니다.
저희는 파이썬이라는 프로그래밍 언어를 사용해서 기계와 소통합니다.
이 과정에서,
미분이나 행렬, 로그, 적분 등등 복잡한 기능을 파이썬 코드로 작성하려면, 정말 복잡할 것입니다.
그래서,
개발자들은 우리가 주로 사용하는 특정 기능을 미리 코드로 작성하고, 어떤 A라는 곳에 저장합니다.
이렇게 특정 기능을 정의한 코드 모음을 "함수"라고 하고, 어떤 A를 함수 이름이라고 합니다.
--> 수학에서의 함수와 뜻이 다름
이 함수들을 모아놓은 것이 package입니다.
--> package(패키지)와 library(라이브러리)는 엄밀하게는 다른 개념이지만, 같은 뜻이라고 생각해도 무방합니다.
다시 강의 내용으로 돌아가 봅시다.

numpy는 파이썬에서 행렬이나 다차원 배열 같은 계산을 쉽게 처리하기 위한 패키지이며,
h5py는 h5 파일이 저장돼있는 데이터 셋과 연동하기 위한 패키지이며
matplotlib은 파이썬에서 그래프를 그리기 위한 라이브러리이며
pil과 scipy는 끝부분에서 당신이 테스트할 사진을 테스트할 때 사용됩니다.
2- Overview of the problem set

테스트 데이터와 훈련 데이터는 강의에서 제공해 줍니다.
이미지 데이터는 ( num_px , num_px , 3)의 형태이며
num_px는 너비와 높이를 뜻하고, 3은 빛의 삼원색 ( 빨강 , 초록, 파랑)을 뜻합니다.
저희는 고양이 사진과 고양이가 아닌 사진을 정확하게 구별할 수 있는
Image - recognition (이미지 인지) 알고리즘을 만들 것입니다.

일단, 준비된 데이터를 불러와 변수에 저장해 줍시다.

마지막을 train_set_x 형태로 만들어주고 싶기 때문에, orig를 이름 끝에 붙여주었습니다.
-> test는 마지막 테스트할 때만 사용하는 변수라 orig를 안 붙여도 됨
실제 사진 데이터를 확인해 보겠습니다.
index 값은 자유롭기 때문에, 아무 숫자를 넣어보세요 ( 위의 자료에서는 25를 넣음)
Exercise 1

트레이닝 자료의 수를 m_train
테스트 자료의 수를 m-test
이미지의 너비 및 높이를 num_px 라 하겠습니다.
--> shape는 행렬의 형태로 바꿔주는 코드입니다.


예시를 참고하여, 괄호 안에 코드를 작성해서 위와 같은 결과가 나오도록 해야 합니다.
처음 문제라 간단하네요! 각각 209 , 50 ,64가 나와야 하니 그대로 정의해 주면 됩니다!

코드를 작성 후, 실행해 봅시다.

shift + enter로 실행해 보았더니, 예상 결과와 일치합니다.
다음으로 넘어가 봅시다.
Exercise 2

편의상 (num_px * num_px * 3 , 1)을 (num_px , num_px , 3)으로 재배치(reshape) 해줘야 하며,
m-train(m_test) 개의 열이 있어야 합니다.
아래의 예시를 참고하여 코드를 작성해 보세요.
(여기서 T는 행렬을 전치한다는 뜻입니다.)

저번과 마찬가지로, 예상 결과가 나오도록 코드를 작성해야 합니다.

제공해 준 힌트를 참고하여 코드에서,
X를 train_set_x _orig로만 바꿔주면 됩니다!

작성 후, 실행해 봅시다!

예상 결과대로 나온 걸 확인했습니다.
글이 너무 길어져서, 다음 글에 이어서 본격적으로 신경망 모델을 프로그래밍해봅시다!
이 내용들은 모두 coursera에서 앤드루 응 교수님의 강의를 요약정리 및 쉽게 재풀이 하여 적은 글이며,
내용에는 생략되거나 변형된 부분이 많으니 직접 강의를 들어보시는 걸 추천드립니다!
이 글은 상업적 목적이 아닌, 한국에서 인공지능을 배우고 싶은 분들을 위해 적은 교육적 목적에서 작성하였습니다.
'코세라 앤드류 응 AI 강의 리뷰' 카테고리의 다른 글
[인공지능 강의 리뷰] 15 - 뉴럴 네트워크 And 벡터화 표현 (0) | 2022.05.17 |
---|---|
[인공지능 강의 리뷰] 14 - 프로그래밍 과제 . 신경망 사고방식을 이용한 로지스틱 회귀 모델 만들기3 (고양이 사진 분류기) (0) | 2022.05.16 |
[인공지능 강의 리뷰] 13 - 프로그래밍 과제 . 신경망 사고방식을 이용한 로지스틱 회귀 모델 만들기2 (고양이 사진 분류기) (0) | 2022.05.16 |
[인공지능 강의 리뷰] 11 - 신경망 기초 테스트 (Neural Network Basic Quiz) (0) | 2022.05.16 |
[인공지능 강의 리뷰] 10 - 브로드캐스팅(Broadcating in Python) (0) | 2022.05.16 |
[인공지능 강의 리뷰] 9 - 벡터화(Vectorization) (0) | 2022.05.16 |
[인공지능 강의 리뷰] 8 - 로지스틱 회귀 경사 하강법(Logistic Regression Gradient Descent) (0) | 2022.05.16 |