본문 바로가기
학교 공부/컴퓨터비전

밑바닥부터 시작하는 딥러닝 Chapter1 : 헬로 파이썬

by 대니스 2024. 4. 29.

1.1 파이썬이란?

파이썬

-      간단하고 배우기 쉬운 언어

-      읽기 쉽고 성능도 뛰어난 언어

-      과학 분야, 특히 기계학습과 데이터 과학 분야에서 널리 쓰인다.

-      카페, 텐서플로 등 딥러닝 프레임워크 쪽에서도 파이썬을 애용한다.

1.2 파이썬 설치하기

넘파이

-      수치 계산용 라이브러리

-      고도의 수학 알고리즘과 배열(행렬)을 조작하기 위한 편리한 메서드가 준비 되어 있다

Matplotlib

-      그래프를 그려주는 라이브러리

-      실험 결과를 시각화하거나 딥러닝 실행 과정의 중간 데이터를 시각적으로 확인할 수 있다.

아나콘다 베포판

- 베포판 : 사용자가 설치를 한 번에 수행할 수 있도록 필요한 라이브러리 등을 하나로 정리해 둔 것이다.

- 아나콘다는 데이터 분석에 중점을 둔 배포판으로 넘파이와 matplotlib을 포함해 데이터 분석에 유용한 라이브러리가 포함되어 있다.

1.3 파이썬 인터프리터

파이썬 인터프리터

-      대화 모드라 하여, 개발자와 파이썬이 대화하듯 프로그래밍할 수 있다.

산술 연산

-      * : 곱셈, / : 나눗셈(정수끼리 나누면 정수가 나온다), ** : 거듭제곱

자료형(Data type)

-      데이터의 성질을 나타내는 것으로 정수, 실수, 문자열과 같은 형태가 있다

-      type() 함수로 특정 데이터의 자료형을 알아볼 수 있다.

-      자료형과 클래스(class)라는 말을 같은 의미로 사용하는 경우가 있다

변수(Variable)

-      x,y 등의 알파벳을 사용하여 변수를 정의할 수 있다

-      변수를 사용하여 계산하거나 변수에 다른 값을 대입할 수 있다

-      파이썬은 동적 언어로 변수의 자료형을 상황에 맞게 자동으로 결정한다

리스트(List)

-      여러 데이터를 리스트로 정리한다

-      원소를 접근할 때는 a[0]처럼 한다

-      [] 안의 수를 인덱스(색인)라 하며 인덱스는 0부터 시작한다

슬라이싱(Slicing)

-      범위를 지정해 원하는 부분 리스트를 얻을 수 있다

-      리스트를 슬라이싱하려면 a[0:2]처럼 쓴다.

>     a[0:2]는 인덱스 0부터 1(2보다 하나 앞)까지의 원소를 꺼낸다

>     인덱스 번호 -1은 마지막 원소, -2는 끝에서 한 개 앞의 원소에 해당한다

딕셔너리(Dictionary)

-      리스트는 인덱스 번호로 값을 저장한다면 딕셔너리는 키(Key)와 값(Value)을 한 쌍으로 저장한다.

Bool

-      Bool은 자료형으로 True() 또는 False(거짓)라는 두 값 중 하나를 취한다

-      and, or, not 연산자를 사용할 수 있다.

if 문

-       조건에 따라서 달리 처리하면 if/else 문을 사용한다

-      파이썬에는 공백 문자가 중요한 의미를 지니기 때문에 들여쓰기는 지난 조건(if hungry)이 충족될 때 실행되는 코드를 표현한다 (들여쓸 때 공백 4개씩을 더 추가하는 것이 일반적이다)

For

-      반복(루프) 처리에는 for문을 사용한다

-      ‘for…in…’ : 이 구문을 사용하면 리스트 등 데이터 집합의 각 원소에 차례로 접근할 수 있다.

함수

-      특정 기능을 수행하는 일련의 명령들을 묶어 하나의 함수로 정의할 수 있다

-      함수는 인수를 취할 수 있다

1.4 파이썬 스크립트 파일

긴 작업을 수행해야한다면, 매번 코드를 입력해야 하는데 그 방법이 파이썬 프로그램을 파일로 저장하고 그 파일을 실행하는 방법인 스크립트 파일을 사용하는 것이다. (위의 사진이 파이썬 스크립트 파일을 사용한 방식이다)

 

파일로 저장하기

-      ".py" 파일을 완성하면 터미널을 열고 파일을 만든 디렉토리로 이동한 뒤 인수로 python 명령을 실행하면 아래와 같이 진행된다.

 

 

클래스

-     개발자가 직접 클래스를 정의하면 독자적인 자료형을 만들 수 있다.

-     클래수에는 그 클래스만의 전용 함수(메서드)와 속성을 정의할 수 있다

-     class라는 키워드를 사용하여 클래스를 정의한다

생성자

-     클래스 정의에는 __init__라는 특별한 메서드가 있는데 클래스를 초기화하는 방법이며 생성자라고 부른다

-     클래스의 인스턴스가 만들어질 때 한 번만 불러진다. 

-     파이썬에는 메서드의 첫 번째 인수로 자신(자신의 인스턴스)을 나타내는 self를 명시적으로 쓰는 것이 특징이다

-     위 사진에서 Man이라는 새로운 클래스를 정의하였고 Man 클래스에서 m이라는 인스턴스(객체)를 생성한다

-     Man의 생성자(초기화 메서드)는 name이라는 인수를 받고, 그 인수로 인스턴스 변수인 self.name을 초기화한다

>    인스턴스 변수는 인스턴스별로 저장되는 변수이며 self.name처럼 self 다음에 속성 이름을 써서 인스턴수를 작성하거나 접근할 수 있다

1.5 넘파이

넘파이

-     넘파이는 외부 라이브러리이기 때문에 "import numpy as np"처럼 import문을 이용해야한다

-     np를 통해 넘파이를 참조할 수 있다.

넘파이 배열

-     넘파이 배열을 만들 때 "np.array()" 메서드를 이용한다

-     파이썬의 리스트를 인수로 받아 넘파이 라이브러리가 제공하는 특수한 형태의 배열(numpy.ndarray)을 반환한다

넘파이의 산술 연산

-     각각 원소의 수가 같다면 산술 연산은 각 원소에 대해서 행해진다(다르면 오류가 생긴다)

-     원소별 계산뿐 아니라 넘파이 배열과 수치 하나(스칼라값)의 조합으로 된 산술 연산도 수행할 수 있다

넘파이의 N차원 배열

-     넘파이는 1차원 배열뿐 아니라 다차원 배열도 작성할 수 있다

-     행렬 (행렬을 포함한 N차원 배열에서 그 배열의 '각 차원의 크기(원소 수)') 의 형상은 shape으로 알 수 있다.

-     행렬에 담긴 원소의 자료형은 dtype으로 알 수 있다

-     형상이 같은 행렬끼리 행렬의 산술 연산도 대응하는 원소별로 계산이 된다

-     행렬과 스칼라값의 산술 연산도 가능하다

브로드캐스트

-     넘파이에서는 브로드캐스트의 기능을 통해 형상이 다른 배열끼리도 계산할 수 있다

원소 접근

-     원소의 인덱스는 0부터 시작한다

-     각 원소에 접근하기 위해서는 아래와 같이 진행된다

1.6 matplotlib

-     그래프를 그려주는 라이브러리이다

-     그래프 그리기와 데이터 시각화가 쉬워진다

 

단순한 그래프 그리기

-     그래프를 그리기 위해서 matplotlib의 pyplot 모듈을 이용한다

-     넘파이의 arange 메서드로 데이터를 생성하여 변수 x에 할당한다

-     그다음 줄에서는 x의 각 원소에 넘파이의 sin 함수인 np.sin()을 적용하여 변수 y에 할당한다

-     x와 y를 인수로 plt.plot 메서드를 호출해 그래프를 그린다

-     plt.show()을 호출해 그래프를 화면에 출력하고 끝낸다

 

pyplot의 또 다른 기능

이미지 표시하기

-     pyplot에는 이미지를 표시해주는 메서드인 imshow()도 준비되어 있다

-     이미지를 읽어들일 때는 matplotlib.image 모듈의 imread() 메서드를 이용한다

현재 작업 디렉토리에 있다고 가정한