class TimeRNN: # multiple time step data capable
def __init__(self, Wx, Wh, b, stateful=False):
self.params = [Wx, Wh, b]
self.grads = [np.zeros_like(Wx), np.zeros_like(Wh), np.zeros_like(b)]
self.layers = None
self.h, self.dh = None, None
self.stateful = stateful # n개 입력일때 n개 출력 할거냐?
def forward(self, xs): #sequence input
Wx, Wh, b = self.params
N, T, D = xs.shape # N : batch, T : sequence, D: data length
D, H = Wx.shape
self.layers = [] # 왜 init에서 안해주고 forward 에서 해주나?불필요한 메모리 방지. forward 호출 전 까지는 메모리 사용하지 않음.
self.layers, __init__
에서 초기화 하지 않고forward
에서 초기화 하는 이유