TensorFlow에서 MNIST에 대해 DCGAN을 직접 작성하고 싶습니다. 그러나 나는 발전기의 손실 기능을 어떻게 설정해야하는지 알아 내려고 애 쓰고있다. Keras DCGAN implementation에서 저자는이 문제에 대한 약간의 "해결 방법"을 사용했습니다. 그는 단순히 3 가지 모델을 만들었습니다. 생성기 (G), 판별 자 (D) 및 세 번째 단계. 여기에서 G와 D를 결합한 상태에서 D의 열차 능력을 거짓으로 설정합니다.TensorFlow MNIST DCGAN : 손실 기능을 설정하는 방법?
D는 D가 G + D에서 학습 할 수 없기 때문에 D의 손실이 G로 전달되므로 실제 이미지와 생성 된 이미지를 D에 공급하여 D를 훈련하고 G + D 결합 모델을 학습 할 수 있습니다. 결합 모델.
TensorFlow에서 저는 G와 D를 이미 구축했습니다.
session.run(D_train_op,
feed_dict={x: batch_x, y: batch_y})
이 예에서 훈련 연산은 이진 cross entropy :
tf.losses.softmax_cross_entropy(y, D_out)
방금 생성 한 사람과 실제 MNIST 훈련 이미지의 배치를 결합하고 훈련 연산을 호출 할 필요가 있기 때문에 교육 D는 비교적 간단하다
...하지만 "G와 D"를 하나의 세 번째 모델로 결합한 "겹쳐진"모델이 없으면 G에 대한 손실 함수를 어떻게 설정합니까?
나는 G로 이미지 배치를 만들어야하고, D로 먹여야하고 D의 손실을 얻을 수 있다는 것을 알고있다. 그러나 G의 출력은 모양이 (batch_size, 28, 28, 1)
이다. 손으로 G의 손실 함수를 어떻게 설정합니까? 이에 대해 "G와 D"-combined 모델 "해결 방법"없이
, 나는 G.
의 출력 층에G는 것인지를 (batch_size, 1)
의 출력 형태를 갖는다 D의 손실을 전파해야 예를 들어, 어떤 분류를해라. 이것은 알아 내기가 어렵지는 않을 것이다. 그러나 G는 이미지를 출력한다. 따라서 D의 손실을 G의 출력 레이어에 직접 매핑 할 수는 없습니다.
G + D를 결합한 세 번째 모델을 설정해야합니까? 아니면 손으로 G 손실을 계산할 수있는 방법이 있습니까?
이 어떤 도움을 매우 높이 평가한다 : 발전기 단계 훈련에서