Я пытаюсь реализовать градиентный спуск с импульсом с нуля в python. При реализации коррекции смещения для экспоненциально взвешенного среднего я обнаружил предупреждение во время выполнения, в котором говорилось: «Встречается переполнение при numpy истинном делении». Я пытаюсь разделить массив numpy с помощью очень маленького числа с плавающей запятой (указано в разделе кода).
for i in range(1, len(self.layers)):
self.dvw['dvw'+str(i)] = (self.beta1*self.dvw['dvw'+str(i)] + (1-self.beta1)*self.dw['dw'+str(i)])
self.dvb['dvb'+str(i)] = (self.beta1*self.dvb['dvb'+str(i)] + (1-self.beta1)*self.db['db'+str(i)])
self.dvw['dvw'+str(i)] = self.dvw['dvw'+str(i)].astype('float')
self.dvb['dvb'+str(i)] = self.dvb['dvb'+str(i)].astype('float')
self.dvw['dvw'+str(i)] = np.divide(self.dvw['dvw'+str(i)], (1-np.power(self.beta1, t))) # encounterd error in this line
self.dvb['dvb'+str(i)] = np.divide(self.dvb['dvb'+str(i)], (1-np.power(self.beta1, t))) # and this line aswell
dvw и dvb - это словари с массивами numpy в качестве значений. Значение beta1 равно 0,9, а t - действительное число