[스터디 내용 정리] step01. 상자로서의 변수

Gamchan Kang·2023년 4월 3일
0

딥러닝

목록 보기
2/8

이 책에서 구현하는 코드는 객체 지향으로 특히 캡슐화(encapsulation)와 다형성(Polymorphism)에 무게를 두고 있다.

그중 캡슐화에 첫 단계인 1고지는 VariableFunction 클래스 구현이 중심이다.
VariableFunction과 상호작용하며 서로를 호출하며 역전파 연산을 수행한다.

step01에서는 그중 Variable을 기초적으로 구현한다.


1. 변수란


수학 문제 풀 때 생각하는 변수는 대표성(Symbolic)을 띈다.
미지수를 표현할 때 x{x}라고 쓰는데, x{x}에는 어떤 데이터/값이 들어가 있다.
이를 실제 데이터로 표현하면 다른 상수와 혼돈이 생기기 때문에 미지수를 사용하는 것이다.

이를 정리하면

  • 변수와 데이터는 별개이다.(클래스와 메소드의 차이)
  • 변수에는 데이터가 들어간다.
  • 데이터는 변수를 통해 참조한다.


2. Variable 클래스 구현

위 성질로 Variabledata를 구현하면 다음과 같은 코드이다.

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

profile
Someday, the dream will come true

0개의 댓글