2017-02-02 2 views
3

keras 프레임에서 사용자 정의 목적 함수를 구현하려고합니다. 두 개의 인수 tensors y_true와 y_pred를 취하는 가중 평균 함수. 가중치 정보는 y_true 텐서로부터 유도된다.텐서의 가중 평균

tensorflow에 가중 평균 함수가 있습니까? 또는 이러한 종류의 손실 기능을 구현하는 방법에 대한 다른 제안 사항이 있습니까?

같은 것을 보일 것 내 기능 :

기능 (y_true을 y_pred) A = (y_true-y_pred) ** 2 승 - y_true에서 추론, 같은 모양의 텐서는 y_true 평균 반환 로 (A, 가중치 = w) < - 스칼라

y_true 및 y_pred는 3D 텐서입니다.

+0

당신은 질문으로 표현이 필요; 게시물에 현재 포함되어 있지 않습니다. – PaulNUK

답변

1

keras에서 here의 기존 목표 (손실이라고도 함) 중 하나를 사용할 수 있습니다.

당신은 또한 사용자 정의 기능 손실을 구현할 수 :

from keras import backend as K 

def my_loss(y_true, y_pred): 
    return K.mean(K.square(y_pred - y_true), axis=-1) 

# Let's train the model using RMSprop 
model.compile(loss=my_loss, optimizer='SGD', metrics=['accuracy']) 

통지 성능에서 치료를 해달라고하지 않는 한 K 모듈, 그것 keras, 당신은 완전히 keras 성능을 활용하는 데 사용해야하는 백엔드 이런 식으로 뭔가를 해달라고 문제 :

def my_bad_and_slow_loss(y_true, y_pred): 
    return sum((y_pred - y_true) ** 2, axis=-1) 

귀하의 특정 사례에 대한 도움이 필요하면 원하는 목적 함수를 작성하십시오.

업데이트하는 것은

이 무게를 제공하기 위해 시도 할 수 있습니다 - 손실 함수로 W :

def my_loss(y_true, y_pred): 
    W = np.arange(9)/9. # some example W 
    return K.mean(K.pow(y_true - y_pred, 2) * W) 
+0

답변 해 주셔서 감사합니다. mean_squared_error는 각 항목에 대해 가중치를 적용해야한다는 것을 제외하고는 정상적으로 처리됩니다. 현재 진행중인 작업은 cnn (인코딩 - 디코딩 아키텍처)을 통한 의미 론적 세분화입니다. 무겁게 불균형 한 두 개의 수업. 나는 케라에서 체중 클래스 나 샘플 가중치를 알고 있지만, 클래스 간의 비율은 이미지마다 다릅니다. 이것은 왜 각 픽셀에 대한 계수를 적절하게 적용 할 가중치 텐서를 만드는 것을 고려하고있는 이유입니다. 케이스에 대한 –

+0

예제를 업데이트했습니다. 더 많은 도움이 필요하면 작성하려고하는 정확한 계산을 게시하십시오. – ShmulikA