RuntimeWarning: в sqrt обнаружено недопустимое значение - PullRequest
0 голосов
/ 03 августа 2020

Я получаю сообщение об ошибке в заголовке кода ниже, но у меня нет отрицательных значений или NaN в моем массиве.

Есть ли что-нибудь еще, что я должен проверить?

Я не получаю сообщения об ошибке для небольших массивов, которые можно скопировать сюда. Я получаю его только в своих массивах размером примерно 100000 x 1000

def norm2(A,B):
    """numpy.ndarray A shape (m1,d), B shape (m2,d)
    Returns ndarray of shape (m1, m2) dists_{i,j} = ||A_i - B_j||
    """
    
    print("A.shape: ", A.shape)
    print("B.shape: ", B.shape)
    
    sums = np.sum(np.square(A[:,None,:] - B[None,:,:]),
                  axis = 2
                  )
    
    print("sums.shape: ", sums.shape)
    
    negs = np.sum(sums < 0)
    nans = np.sum(np.isnan(sums))
    
    warn = "There are " + str(negs) + " negative numbers and " + str(nans) + " NaNs."

    dists = np.sqrt(sums) # dists_{i,j} = || A_i - B_j ||

    return dists, warn

Вывод операторов печати:

A.shape:  (100000, 1000)
B.shape:  (100000, 1000)
sums.shape:  (100000, 100000)

Возвращаемое warn: 'There are 0 negative numbers and 0 NaNs.'

Что еще я могу проверить?

Другие похожие вопросы были вызваны отрицательными числами: Numpy, RuntimeWarning: недопустимое значение в sqrt

Я проверил руководство , но ничего не смог найти о предупреждении времени выполнения https://numpy.org/doc/stable/reference/generated/numpy.sqrt.html

Я попытался проверить исходный код, но не смог понять, где находится код для sqrt: https://github.com/numpy/numpy/tree/master/numpy/lib

...