사용자 지정 손실 기능을 생성하는 람다 레이어를 구현하려고합니다. 레이어에서 배치의 모든 요소를 배치의 다른 모든 요소와 비교하여 비용을 계산할 수 있어야합니다. 이상적으로, 나는이 같은 형태의 코드를 원하는 :사용자 지정 손실 Keras Lambda 레이어
for el_1 in zip(y_pred, y_true):
for el_2 in zip(y_pred, y_true):
if el_1[1] == el_2[1]:
# Perform a calculation
else:
# Perform a different calculation
때 나는 사실이, 내가 얻을 : 나는 Theano 버전 0.9.0 백엔드와 Keras 버전 2.0.2을 사용하고
TypeError: TensorType does not support iteration.
. 이 작업을 수행하기 위해 Keras 텐서 함수를 사용해야한다는 것을 이해하지만, 원하는대로 텐서 함수를 이해할 수는 없습니다.
또한 내 람다 함수가 반환해야하는 것을 정확히 이해하는 데 어려움이 있습니다. 각 샘플에 대한 총 비용의 텐서 (tensor)입니까, 아니면 배치에 대한 총 비용입니까?
저는 며칠 동안 머리를 때렸습니다. 어떤 도움도 깊이 감사드립니다.
좋아, Keras를 사용 : 당신은 그들이 동일한 경우, 당신이 쓰는 것 두 값을 뺄 때
a != b
하지만 추가하려는 경우K.switch
의 구문은, 예를 들어입니다 콜백, 나는 람다가 반환해야하는 것을 결정했습니다 - 배치 당 하나의 스칼라. 그러나, 나는 여전히 트레이닝 동안 텐서를 반복하는 법을 이해할 수 없다. 제 생각에는 슬라이스와 관련이 있을지도 모릅니다 ... – gaw89
내 대답을 읽어 보셨습니까? – nemo
죄송합니다. 주말에 끝났습니다. 그냥 받아 들였다. 고마워요! – gaw89