이 책에서 구현하는 코드는 객체 지향으로 특히 캡슐화(encapsulation)와 다형성(Polymorphism)에 무게를 두고 있다.
그중 캡슐화에 첫 단계인 1고지는 Variable
과 Function
클래스 구현이 중심이다.
Variable
은 Function
과 상호작용하며 서로를 호출하며 역전파 연산을 수행한다.
step01에서는 그중 Variable
을 기초적으로 구현한다.
수학 문제 풀 때 생각하는 변수는 대표성(Symbolic)을 띈다.
미지수를 표현할 때 라고 쓰는데, 에는 어떤 데이터/값이 들어가 있다.
이를 실제 데이터로 표현하면 다른 상수와 혼돈이 생기기 때문에 미지수를 사용하는 것이다.
이를 정리하면
Variable
클래스 구현위 성질로 Variable
과 data
를 구현하면 다음과 같은 코드이다.
class Variable:
def __init__(self, data):
self.data=data
Variable
을 생성하면 데이터는 어떤 식으로도 들어간다.(None
이라도)
data = np.array(1.0)
x = Variable(data)
print(x.data)
x
의 데이터는 x.data
로 참조한다.
np.array
로 스칼라 데이터를 넣는 이유는 향후 벡터와 텐서 계산에도 활용하기 위함이다.
딥러닝 프레임워크는 벡터와 텐서 계산이 중점으로 이루어지기 때문이다.
Github: https://github.com/gsgh3016/Deep-Learning-from-Scratch3/blob/main/gamchan/part_1/step01.py