Странная ошибка — — ZeroDivisionError: деление с плавающей запятой на ноль, но оно не равно нулю [закрыто]Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Странная ошибка — — ZeroDivisionError: деление с плавающей запятой на ноль, но оно не равно нулю [закрыто]

Сообщение Anonymous »

Код: Выделить всё

/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddlenlp/metrics/bleu.py in accumulate(self)
230         logs = math.fsum(w_i * math.log(p_i)
231                          for w_i, p_i in zip(self.weights, prob_list))
--> 232         if float(self.bp_c) != 0:
233             bp = math.exp(min(1 - self.bp_r / float(self.bp_c), 0))
234         else:

ZeroDivisionError: float division by zero
Эта ошибка всегда возникает, хотя я добавил if/else, чтобы предотвратить ситуацию, когда float(self.bp_c) равен нулю, но почему все еще возникает странная ZeroDivisionError? Почему '->' указывает на строку, в которой нет разделения? Понятия не имею.
Я запускаю этот проект на BML CodeLab, который похож на блокнот Jupyter. Но я не знаю, как добавить PDB и просмотреть значения. Я могу исправить только некоторые коды в cmd.
Вот функция.

Код: Выделить всё

def accumulate(self):
'''
Calculates and returns the final bleu metric.

Returns:
Tensor: Returns the accumulated metric `bleu` and its data type is float64.
'''
prob_list = []
for n_size in range(self.n_size):
try:
if self.candi_ngram[n_size] == 0:
_score = 0.0
else:
_score = self.match_ngram[n_size] / float(
self.candi_ngram[n_size])
except:
_score = 0
if _score == 0:
_score = sys.float_info.min
prob_list.append(_score)

logs = math.fsum(w_i * math.log(p_i)
for w_i, p_i in zip(self.weights, prob_list))
if float(self.bp_c) != 0:
bp = math.exp(min(1 - self.bp_r / float(self.bp_c), 0))
else:
bp = math.exp(0)
bleu = bp * math.exp(logs)
return bleu
Даже строка 232 пуста, ошибка все та же!!!

Подробнее здесь: https://stackoverflow.com/questions/787 ... s-not-zero
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»