Есть ли разница между следующими двумя реализациями в зависимости от вычислительной производительности и потребления памяти?
Разница заключается в том, чтобы сначала сохранить промежуточные вычисления в отдельной переменной (S_corrected) или нет.
1)
def step(self, data_deriv: npt.NDArray) -> npt.NDArray:
self.t += 1
self.S = self.beta * self.S + (1 - self.beta) * data_deriv ** 2
return data_deriv / np.sqrt((self.S / (1 - self.beta ** self.t)) + self.epsilon)
и
2)
def step(self, data_deriv: npt.NDArray) -> npt.NDArray:
self.t += 1
self.S = self.beta * self.S + (1 - self.beta) * data_deriv ** 2
S_corrected = (self.S / (1 - self.beta ** self.t))
return data_deriv / np.sqrt(S_corrected + self.epsilon)
Подробнее здесь: https://stackoverflow.com/questions/784 ... is-returne