변수는 영어로 variable입니다. 그래서 DeZero에서 사용하는 변수라는 개념을 Variable이라는 이름의 클래스로 구현하겠습니다. 덧붙여서, 파이썬에서는 클래스 이름의 첫 글자를 보통 대문자로 합니다. 파이썬이 권항하는 코딩 규칙은 PEP8을 참고하세요.
이제 Variable 클래스가 상자가 되도록 구현해보죠. 다음은 이 기능을 최소한의 코드로 작성해본 모습니다.
class Variable:
def __init__(self, data):
self.data = data
보는 바와 같이 초기화 함수 __init__에 주어진 인수를 인스턴스 변수 data에 대입했습니다.
아주 간단한 코드지만, 이제 Variable클래스를 상자로 사용할 수 있습니다. 실제 데이터가
Variable의 data에 보관되기 때문이죠, 다음 예를 보면 더 명확해질 것입니다.
import numpy as np
data = np.array(1.0)
x = Variable(data)
print(x.data)
1.0
이 예에서 상자에 데이터는 '넘파이의 다차원 배열'을 사용했습니다. 이때 x는 Variable
인스턴스이며, 실제 데이터는 x안에 담겨 있습니다. 즉, x는 데이터 자체가 아니라 데이터를
담은 상자가 됩니다.
머신 러닝 시스템은 기본 데이터 구조로 '다차원 배열'을 사용합니다. 그래서 DeZero의
Variable 클래스는 넘파이의 다차원 배열만 취급합니다. 넘파이의 다차원 배열 클래스는
numpyu.ndarray이며 np.ndarray로 줄여 쓰곤 합니다. 넘파이 배열은 앞의 코드에서 볼 수
있듯 np.array함수를 이용해 생성할 수 있습니다. 이 책에서는 앞으로numpy.ndarray인스터스
를 단순히 ndarray 인스턴스라고 부르겠습니다.
이어서 앞 코드에 x에 새로운 데이터를 대입해 보겠습니다.
x.data = np.array(2.0)
print(x.data)
2.0
보는 바와 같이 x.data = ... 형태로 쓰면 새로운 데이터가 대입됩니다. 이제 Variable클래스
를 상자로 사용할 수 있게 되었습니다.
댓글 없음:
댓글 쓰기