저는 DL과 Keras를 처음 사용하며 현재 Keras에서 sobel 필터 기반 사용자 지정 손실 함수를 구현하려고합니다.Keras를 사용하여 사용자 정의 sobel 필터 기반 손실 함수를 구현하는 방법
아이디어는 sobel 필터링 된 예측과 sobel 필터링 된 지상 진실 이미지의 평균 제곱 손실을 계산하는 것입니다.
지금까지, 내 사용자 정의 손실 함수는 다음과 같습니다 y_true.shape
만 None
를 반환, 내가 발견 디버거를 사용
in mse_sobel
for i in range (0, y_true.shape[0]):
TypeError: __index__ returned non-int (type NoneType)
이 손실 함수를 사용하여
이from scipy import ndimage
def mse_sobel(y_true, y_pred):
for i in range (0, y_true.shape[0]):
dx_true = ndimage.sobel(y_true[i,:,:,:], 1)
dy_true = ndimage.sobel(y_true[i,:,:,:], 2)
mag_true[i,:,:,:] = np.hypot(dx_true, dy_true)
mag_true[i,:,:,:] *= 1.0/np.max(mag_true[i,:,:,:])
dx_pred = ndimage.sobel(y_pred[i,:,:,:], 1)
dy_pred = ndimage.sobel(y_pred[i,:,:,:], 2)
mag_pred[i,:,:,:] = np.hypot(dx_pred, dy_pred)
mag_pred[i,:,:,:] *= 1.0/np.max(mag_pred[i,:,:,:])
return(K.mean(K.square(mag_pred - mag_true), axis=-1))
이 오류로 연결 - 좋아. 나는이 for i in range (0,1):
것 같습니다 있도록 예를 1
을 위해 함께 y_true.shape
를 교체 할 때, 또 다른 오류가 발생합니다
in sobel
axis = _ni_support._check_axis(axis, input.ndim)
in _check_axis
raise ValueError('invalid axis')
ValueError: invalid axis
을 여기에, 나는 축이 유효하지 않은 것으로 보인다 이유에 대해 확실하지 않다?
아무도 그 손실 기능을 구현하는 방법을 알아낼 수 있습니까? 도움 주셔서 대단히 감사합니다!
와우, 어떤 완벽한 답/해결책. 도와 주셔서 대단히 감사합니다. –