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() 메서드를 이용한다
'학교 공부 > 컴퓨터비전' 카테고리의 다른 글
밑바닥부터 시작하는 딥러닝 Chapter 4 : 신경망 학습 (0) | 2024.05.02 |
---|---|
밑바닥부터 시작하는 딥러닝 Chapter3-2 : 신경망 (0) | 2024.05.02 |
밑바닥부터 시작하는 딥러닝 Chapter3-1 : 신경망 (0) | 2024.05.01 |
밑바닥부터 시작하는 딥러닝 Chapter2 : 퍼셉트론 (0) | 2024.05.01 |