밑바닥부터 시작하는 딥러닝 1장

kimkihoon·2021년 11월 26일
2

클래스

class Man:
    def __init__(self,name): # 클래스 초기화 __init__ 은 초기화용 매서드이고 생성자라고 한다.
        self.name = name # 파이썬에서 매서드의 첫 번쨰 인수로 자신을 나타내는 self를 씀
        print('Initialized!')
    
    def hello(self):
        print('Hello ' + self.name + '!')

    def goodbye(self):
        print('Good-bye ' + self.name + '!')

m = Man('David')
m.hello()
m.goodbye()

파이썬에서는 클래스를 직접 정의해서 개발자가 독자적인 자료형을 만들 수 있다. init 이라는 특별한 메서드를 통해 클래스를 초기화 할 수 있다. 이 초기화용 메서드를 생성자라고도 하며 클래스의 인스턴스가 만들어질 때 한번만 불린다.
Man 이라는 클래스를 정의하고 m이라는 객체를 생성한다.
Man의 생성자는 name이라는 인수를 받고 그 인수로 인스턴스 변수인 self.name을 초기화한다. 인스턴스 변수는 인스턴스별로 저장되는 변수로 파이썬에서는 self.name 처럼 self 다음에 속성 이름을 써서 인스턴스 변수를 작성하거나 접근가능하다.

넘파이

넘파이의 배열 클래스인 numpy.array에는 편리한 메서드가 많기 때문에 딥 러닝을 구현할 때 이것들을 이용한다.

import numpy as np # numpy import 

x = np.array([1,2,3]) # 1차원 배열 선언
print(x)

넘파이 배열을 만들 때에는 np.array() 메서드를 이용한다. np.array()는 파이썬의 리스트를 인수로 받아 numpy.ndarray 를 반환한다.

넘파이는 또한 N차원의 배열도 작성할 수 있다.

A = np.array([[1,2],[3,4]]) # 2차원 배열 선언
print(A)
print(A.shape) # 행과 열의 수 표현
print(A.dtype)

2차원 배열을 작성한 예시이다.
그리고 이렇게 작성한 배열끼리의 연산도 가능하다.

A = np.array([[1,2],[3,4]]) # 2차원 배열 선언
print(A)
print(A.shape) # 행과 열의 수 표현
print(A.dtype)

B = np.array([[3,0],[0,6]])
print(A+B)
print(A*B)

print(A * 10)

브로드캐스트

넘파이에서는 형상이 다른 배열끼리도 곱할 수 있다.
예를 들어 이렇게 (2x2) 배열과 (2x1) 같은 배열을 곱할 수 있다.

c = np.array([[1,2],[3,4]]) # numpy 로 행렬의 곱셈을 쉽게 할 수 있다.
d = np.array([10,20])
print(c*d)

matplotlib

딥러닝 실험에서는 그래프 그리기와 데이터 시각화도 중요하기 때문에 그래프를 그려주는 라이브러리인 matplotlib를 이용한다.
다음은 matplotlib의 pyplot 모듈을 이용하여 sin 그래프를 그리는 간단한 예제이다.

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0,6,0.1)
y = np.sin(x)

plt.plot(x,y)
plt.show()

이 코드를 실행하면 다음과 같은 결과가 나온다.

여기에 cos 함수도 추가해서 그려보고 legend를 설정하고 그래프의 타입도 정해보고 제목도 정하는 등의 추가 기능을 활용하면 다음과 같은 코드를 작성해 볼 수 있다.

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0,6,0.1)
y1 = np.sin(x)
y2 = np.cos(x)

plt.plot(x,y1, label ='sin')
plt.plot(x,y2, linestyle='--', label = 'cos')
plt.xlabel('x')
plt.ylabel('y')
plt.title('sin & cos')
plt.legend()
plt.show()

그리고 이를 실행하면 이러한 그래프를 얻을 수 있다.

이미지 표시

pyplot에는 이미지를 표시하는 메서드인 imshow()도 있다. 이것을 활용한 예제 코드를 살펴보자.

import matplotlib.pyplot as plt
from matplotlib.image import imread

img = imread("C:\image\maple.png")

plt.imshow(img)
plt.show()

이것을 실행하면 다음과 같은 결과를 얻을 수 있다.

출처 : 밑바닥부터 시작하는 딥러닝: 파이썬으로 익히는 딥러닝 이론과 구현 - 사이토 고키(2017)

0개의 댓글