언어/파이썬

numpy [...]

AlgoPoolJa 2021. 1. 1. 13:20

파이썬 라이브러리중 하나인 numpy는 가장 많이 사용되는 라이브러리 중 하나이다. (저도 종종 사용합니다.....)

그 중 처음보는게 있어서 정리해본다. 

class MatMul: 

    def __init__(self , W):

        self.grads = [np.zeros_like(W)]

 

    def backward(self, dout):

        self.grads[0][...]  = dout

 

과 같은 형태를 보게 되었는데 여기서 [...]를 사용하게 되는 이유는 무엇일까?

사실 이 형태는 전에 포스팅 했던 S = Q[:] 형태와 비슷한 형태이다. 즉 S의 id값은 변경되지 않고 Q의 값을 그대로 취한다. 이게 Numpy 버전으로는 [...]로 생각하면 된다.

이렇게 하는 이유는 무엇일까?

바로 grads의 값을 바꿔도 dout의 값은 바뀌지 않기를 바라기 때문이다. 

그냥 self.grads[0] = dout 을 하게 되면 dout의 주소와 self.grads[0] 의 주소가 같아지기 때문에 문제가 발생하게 된다.