현재 배치에 따라 Keras 손실 함수에 추가 정보를 통합해야합니다. Keras 손실은 두 개의 인수 만 취하기 때문에 나는이 정보를 발전기 객체에서 next() 함수를 호출하여 추가하는 방법을 고려했습니다. 그러나 생성기는 한 번만 호출됩니다 (아마도 model.compile()에서 손실 함수를 추가 할 때).손실 함수에서 발전기 사용
data_batches = yield_data_batches()
meta_batches = yield_meta_batches()
....
model.compile(loss=loss_function, ...)
model.fit_generator(generator=data_batches, ....)
def loss_function(x, y):
meta_x, meta_y = next(meta_batches)
x *= meta_x # component-wise matrix multiplication
y *= meta_y # component-wise matrix multiplication
return mse(x, y)
손실 함수는 새로운 meta_batch 그것이 data_batch 평가 때마다 얻을 만들 수있는 방법이 있나요 : 다음은 샘플 코드? 또는이 메타 정보를 손실 함수에 통합하는 또 다른 방법이 있습니까?
설명 : meta_x 및 meta_y는 손실로 계산해서는 안되기 때문에 예측에서 특정 요소를 취소해야하는 이진 행렬입니다. 예를 들어 :
이제y_true = (a,b,c,0) y_pred = (d,e,f,g) y_meta = (1,1,1,0)
, y_pred *이 손실을 계산하지 않도록 y_meta가 g을 취소해야한다.
내 경우에는 가중치가 스칼라가 아니라 행렬입니다. 그것은 컴포넌트 - 와이즈 행렬 곱셈 (위의 예제에서 이것을 수정했습니다)이라고 생각했습니다. 그래서 당신의 접근 방식은 불행하게도 작동하지 않습니다. 이 정보를 y_true에 통합하면 (즉,이 두 행렬을 연결하면) 신경망이 더 많은 매개 변수를 추정해야합니다. 그것도 실현 가능한 해결책이 아닙니다. – limes