Introduction - 스팸메일 분류, 주가 예측, 이미지나 사진인식, 질병 진단, 자율주행 등 딥러닝의 사용처는 무한함 - 딥러닝의 심장은 Neural Networks 이다. - Neural Network는 뇌의 작용원리를 흉내내는 프로세스이고 이를 알고리즘으로 구현해내야한다. Classification Problems - 대학교의 입학처 직원이라 가정하고, 대학에 지원한 학생의 입학을 허가할 것인지, 불허할것인지를 판단할 경우를 가정하자. - 학생들을 평가하기위한 지표로 시험성적과, 학점이 있다. - 시험성적 : 9/10, 학점 8/10인 학생은 우수하니 통과 - 시험성적 : 3/10, 학점 4/10인 학생은 탈락 - 그렇다면 시험성적 : 7/10, 학점 6/10인 학생은? - 이런것을 판단하기위..
Matrix Transposes - 대각원소를 기준으로 뒤집는것. - 그런데 이 transpose에서 중요하게 짚고 넘어가야할 부분이 있다. - transpose를 하려는 행렬 A가 정방행렬이 아닐 경우, transpose 이후 기존의 차원이 뒤집힌 채 shape이 바뀐다. - 또한 열은 행으로 행은 열로 데이터들이 바뀜 - transpose는 shape이 다른 두 행렬간의 연산을 필요로 할 때 유용하게 쓰일 수 있다. - 하지만 그 연산 결과가 내가 원하는(의도한)결과인지 고민하여 처리하여야 한다. - 행렬의 shape의 크기가 다른 두 행렬에 대해 product를 진행하려면 - transpose를 하거나, 행렬의 순서를 바꿔 계산하는 방법이 있다. - 그 각각의 연산 결과는 transpose 관계에 ..
Matrix Multiplication : Part 1 - Element-wise Operation에 관해서 앞서 다뤘었다. - 이번엔 Matrix Multiplication에 대해 알아볼거고 더 복잡한 편이다. - 대부분의 행렬 곱셈은 Matrix Multiplication을 의미하는것이 아니라 Matrix Product를 의미한다. - 일반적인 행렬식의 곱셈을 짚고 넘어가보자. - 행렬 A의 첫번째 행벡터와 행렬 B의 첫번쨰 열벡터간의 각 인덱스가 일치하는 원소끼리의 곱을 모두 합한것이 - Matrix Product의 결과가 된다. - 두가지 동일한 길이의 벡터가 있을때 같은 인덱스에 위치한 원소끼리의 곱을 합한 결과를 dot products 라 부른다. Matrix Multiplication : P..
Scalar Math - 2 + 3 = 5 또는 2 * 3 = 6과 같이 대부분의 스칼라값 계산은 덧셈과 곱셈이다. - 신경망 네트워크에선 이러한 스칼라값의 계산도 수천 수백개씩 해야할 경우가 다수이다. - 또 [2^2 4^2 6^2 ...] 와 같은 행렬에서도 여기에 다시 제곱을 해야 할 수도 아니면 - 동일한 값으로 모두 나눠야 하는 경우도 있다. - 또한 프로그램을 설계함에 있어 모든 값에 대해 어느 시점에서 반복문을 돌려야 할 지도 고려해야한다. - 그런데 이러한 연산에 대한 복잡도를 고려할 때 행렬이 한가지 대안이 될 수 있다. Element-wise Operation - 이러한 수많은 스칼라 값들이 행렬에 저장되어 있으면 Element-wise Operation이 가능한데, - 행렬의 개별 원..
Introducing NumPy - 파이썬은 편리하지만 느리다는 단점이 있다. - 그러나, 파이썬은 C로 쓰인 코드보다 빠르게 실행될 수 있는 라이브러리를 사용할 수 있다. - NumPy가 그런 라이브러리 중 하나이다 - NumPy는 파이썬에서 매우 빠르게 수학적 연산이 가능하게 하고, 행렬과 같은 집합적 연산에 효율적이다. - 여기서 언급할 부분들은 극히 일부에 불과하므로, - 파이썬 NumPy라이브러리를 통한 수학적 연산에 대해 더 알아보려면 여기를 참고하도록. Importing NumPy - NumPy 라이브러리를 import할 땐, 일종의 규칙으로 np로 지정하여 임포트 한다.#> import numpy as np 와 같이 np로 임포트 할 것을 규칙으로 한다. - 이제 np를 이용하여 np. 과..
Introduction # 딥러닝에서의 행렬 - 딥러닝에서는 행렬 연산 및 행렬 표현식을 매우 많이 필요로 함 - 신경망 구축 전에 적어도 기본적 행렬 표현은 반드시 이해해야한다. - NumPy 라이브러리를 사용하여 파이썬에서의 행렬을 효율적으로 사용하기 위한 방법을 알아보자 Data Dimensions - Neural network는 수많은 데이터를 토대로 수많은 수학적 연산을 한다. - 가장 먼저 이해해야할 부분은 데이터를 어떻게 나타낼 것인지에 관한것이다. - 특히 데이터가 가질 수 있는 모양(생김새)에 대해서 먼저 알아보자. - 예를들어 우리는 사람에 대한 데이터를 숫자로 표현 할 수 있다. - 키가 180cm, 무게가 80kg, 나이가 25살 등.. - 또한 특정 인물에 대한 사진을 찍었을때 이..
Converting notebooks - 주피터 노트북 파일은 .ipynb확장자를 가진, 용량이 큰 JSON파일에 불과함. - JSON으로 작성되기 때문에 다른 포맷으로 변환이 용이 - 주피터는 nbconvert 를 제공하는데 HTML, Markdown, slideshows 등으로의 변환을 가능케 해준다. - 예를들어, 주피터 노트북 파일을 HTML파일로 변환하려면 콘솔에서 다음과 같이 입력하면 된다.# nbconvert 사용 예시 - HTML로의 변환은 주피터 노트북을 사용하지 않는 사람과의 공유에 유용하다. - Markdown은 Markdown 포맷을 지원하는 블로그나 기타 텍스트 에디터에 유용함 nbconvert 에 대한 더 많은 내용 Creating a slideshow - 주피터 노트북을 이용하..
Keyboard Shortcuts - 주피터 노트북엔 키보드를 사용하여 셀을 제어할 수 있는 단축키가 존재 - 작업속도 향상의 지름길 · 편집(Edit)모드와 명령(Command)모드의 전환 - 편집모드 : 셀에 입력 가능한 모드. 셀 추가 및 command palette를 열 수 있다. - 셀을 선택했을 때 셀의 좌측 색깔을 통해 현재의 상태를 알 수 있다. - 편집모드에서는 초록, 명령모드에서는 파랑을 띈다. - 또한 편집모드에 있을때는, 마우스 커서도 보인다. - 셀을 생성 또는 다른 셀로 이동하였을 즉시엔 명령모드이다. - 그 상태에서 엔터(Enter)키를 눌러주면 편집(Edit)모드로 전환된다. - 편집모드에서 다시 명령모드로 전환할 땐 뒤로가기(Escape = ESC)를 눌러준다. - 명령모드..
Code cells - 대부분의 작업이 실행되는곳 - 코드를 작성하고 실행, 변수에 값을 할당, 함수 및 클래스 정의, 패키지 import 등등 - 한 셀에서 실행되는 코드는 다른 모든 셀에서 사용 가능 - 셀을 실행시킬때 Shift + Enter 또한 셀을 실행(Run) 시킴 - Shift + Enter로 특정 셀을 지정 후 셀을 실행시키면 다음 셀로 넘어가던지, 새로운 셀을 생성한다. - 선택된 셀을 변경하지 않고 셀을 실행시키려면 Ctrl + Enter 를 누르면 된다. - Shift + Tap은 해당 함수 및 변수에 대한 설명을 볼 수 있다. - Shift + Tap을 두번 누르면 더 자세한 설명을 볼 수 있다. # 해당 파일을 주피터 노트북에서 열면 된다. anaconda cmd창의 경로를 해당..
Notebook Interface # 처음 노트북을 생성시 나타나는 화면 - 초록창 : 셀, 코드를 입력할 수 있다 - 위아래 화살표 버튼으로 셀을 이동시킬 수 있다. - Run : 말그대로 입력한 코드 실행 - Code, Markdown 등 모드를 변경 가능 # Code로 두고 입력한 것과 Markdown으로 두고 입력한 경우의 차이점 - 또한 셀들이 좌측에 넘버링되는 것을 알 수 있다(In [2] : ) The tool bar 도구의 좌측부터 설명하면Save : 저장, 플로피 디스켓 모양으로 노트북 저장할 때 사용Add : +, 셀 추가 즉, 새로운 셀 생성Cut : 잘라내기Copy : 복사Paste : 붙혀넣기 Command palette 다양한 명령을 검색 할 수 있는 검색창 패널이 나타나는데, ..