2017-11-01 7 views
1

[0,1]로 스케일 된 CIFAR10 데이터 세트에서이 implementation 노이즈 제거 자동 인코딩 프로그램을 사용하고 있습니다. 내 하이퍼 파라미터가 - 크로스 엔트로피로 손실 기능 설정에노이즈 제거 자동 엔코더에서 교차 엔트로피 손실을 사용하여 출력을 포화시킵니다.

Adam optimizer 
lr = 0.0001 
sigmoid activations for both encoder and decoder 
512 hidden nodes 
Batch size = 50 

먼저 훈련 단계에 꽤 큰 밖으로 시작한다. 하지만 3 단계에서 0으로 수렴되므로 의심 스럽습니다. 조금 연습 한 후에 AE에 이미지를 전달하고 디코드 레이어의 출력을 평가할 때 원본 이미지 값 대신 모두 1 또는 거의 같았습니다.

나는 무슨 일이 일어나고 있는지 약간의 이해가 있습니다. 디코드 층은 모두 1의 값을 가지는 경우 tf.log(self.decode) 제로 부근

tf.reduce_sum(self.input_data * tf.log(self.decode))

- 크로스 엔트로피 손실로 코드로 정의된다. 따라서 네트워크는 숨겨진 가중치를 최적화하여 출력이 1에 가까워서 교차 엔트로피가 0이됩니다. 나 맞아?

어떻게 해결할 수 있습니까?

+0

숨겨진 레이어에서 사용하는 활성화 기능은 무엇입니까? – fartagaintuxedo

답변

1

이것은 이 아니며 엔트로피 손실입니다. bernoulli 출력 변수의 경우 (이것은 sigmoid를 사용하고 있기 때문에 bernoullis를 의미합니다)

-tf.reduce_sum(
    self.input_data * tf.log(self.decode) + 
    (1-self.input_data)*(tf.log(1-self.decode))) 
+0

출력이 바이너리가 아닙니다. 범위는 [0,1] – HMK

+0

입니다. @HMK는 bernoullis에 동일하게 적용됩니다 – lejlot

+0

그래서 전체 엔트로피 손실 대 전체 엔트로피 손실의 첫 번째 용어 만 사용할 수 있습니까? 전 다중 클래스 분류의 경우에는 전 사용되는 알지만 다른 경우에 대해 잘 모르겠습니다. – HMK