이어서 파이썬의 float와 int, 그리고 np.float64와 같은 타입과도 함께 사용할 수 있도록 하겠습니다. x가 Variable 인스턴스일 때 x + 3.0 같은 코드를 실행할 수 있도록 하러면 어떻게 해야 할까요? 한가지 방법으로 add 함수에 다음의 음영부분의 코드를 추가하는 방법이 떠오르는군요.
def add(x0, x1):
x1 = as_array(x1)
return Add()(x0, x1)
여기에서는 as_array 함술르 사용했씁니다. 9단계에서 구현한 함수죠. as_array를 사용하면 x1이 float나 int인 경우 ndarray인스턴스로 변환됩니다. 그리고 ndarray 인스턴스는 (이후에)Function 클래스에서 Variable 인스턴스로 변환됩니다. 이것으로 다음과 같은 코드르 작성할 수 있게 됐습니다.
x = Variable(np.array(2.0))
y = x + 3.0
#y = add(x, 3.0)
print(y)
이와같이 float와 Variable인스턴스를 조합한 계산이 가능해졌습니다. 여기서는 add함수만 대표로 수정해봤지만, mul과 같은 다른 함수들도 같은 방식으로 수정할 수 있습니다. 다 수정하고 나면 +나 *로 Variable 인스턴스, float, int를 조합하여 계산할 수 있습니다. 그런데 실은 지금의 방식에는 두가지 문제가 남아 있습니다.
댓글 없음:
댓글 쓰기