2014-10-29 7 views
4

: 제로 수 있습니다 self.squared_euclidean_distances의 일부 값으로0으로 나누기를 방지하거나 Theano의 무한 값을 바꾸는 방법은 무엇입니까? 나는이 용어를 계산하기 위해 저를 필요로하는 regularizer 기간을 포함 Theano의 비용 함수를 사용하고

T.sum(c/self.squared_euclidean_distances) 

을이 할머니 값을 생성합니다. 이 문제를 해결하려면 어떻게해야합니까? T.isinf를 사용하려고했지만 성공하지 못했습니다. 한 가지 해결책은 self.squared_euclidean_distances의 0을 작은 수로 제거하거나 T.sum (c/self.squared_euclidean_distances)의 무한 수를 0으로 대체하는 것입니다. 나는 Theano에서 그 값을 대체하는 방법을 모른다.

답변

8

T.switch을 살펴보십시오. 당신은

T.switch(T.eq(self.squared_euclidean_distances, 0), 0, c/self.squared_euclidean_distances) 

(또는 상류, 당신은 당신이 제곱 유클리드 거리를 이용하여 자체 벡터를 비교하지 있는지 확인합니다.) 예를 들어 할 수있는 I 행의 페어 거리를 찾기 위해 솔루션을 사용하고

+2

루프없이 매트릭스의 그래서 내가 쉽게 상류 솔루션을 사용할 수 없습니다. – Ash

+1

'=='를'T.eq'로 바꿔 승인해야만하는 거부 된 편집이있었습니다. 잘못 수정 된 편집을 다시 승인하는 방법을 모르기 때문에이 변경을 직접 수행 할 것입니다. – eickenberg