Error/Pytorch

ValueError: matrix contains invalid numeric entries

  • -
728x90
반응형

1. 에러 화면

return _lsap_module.calculate_assignment(cost_matrix)
ValueError: matrix contains invalid numeric entries

 

2. 발생 원인

matrix에 숫자가 아닌 elements가 존재해서 발생, 주로 어떤 수를 0으로 나눠서 발생(NaN 값 생성)하는 에러로 보여짐

GitHub의 issue에 올라온 버그 논의

 

3. 발생 위치

본인의 파이썬(아나콘다) 라이브러리 중, scipy의 설치경로(.../pythonX.X/site-packages/scipy/optimize) 폴더의 _lsap.py 파일 혹은 linear assignment.py 파일

 

4. 해결 방법

파일에 NaN 값을 피하기 위해, 임의의 아주 큰 값으로 대체하는 아래 코드의 21(nan = np.isnan~~~) ~ 24(cost_matrix[np.isnan~~~) line을 추가

.
. (생략)
.
def linear_sum_assignment(cost_matrix, maximize=False):
    """Solve the linear sum assignment problem.
.
. (생략)
.
    Examples
    --------
    >>> cost = np.array([[4, 1, 3], [2, 0, 5], [3, 2, 2]])
    >>> from scipy.optimize import linear_sum_assignment
    >>> row_ind, col_ind = linear_sum_assignment(cost)
    >>> col_ind
    array([1, 0, 2])
    >>> cost[row_ind, col_ind].sum()
    5
    """
    cost_matrix = np.asarray(cost_matrix)

    nan = np.isnan(cost_matrix).any()
    if nan:
        INFTY_COST = 1e+5
        cost_matrix[np.isnan(cost_matrix)] = INFTY_COST

    if cost_matrix.ndim != 2:
        raise ValueError("expected a matrix (2-D array), got a %r array"
                         % (cost_matrix.shape,))
.
. (생략)
.
728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.