XOR-Gate 모델링하는 TensorFlow 에서 간단한 MLP 를 작성했습니다 .
그래서 :
input_data = [[0., 0.], [0., 1.], [1., 0.], [1., 1.]]
다음을 생성해야합니다.
output_data = [[0.], [1.], [1.], [0.]]
네트워크에는 입력 레이어, 숨겨진 레이어 및 각각 2, 5 및 1 뉴런이있는 출력 레이어가 있습니다.
현재 다음과 같은 교차 엔트로피가 있습니다.
cross_entropy = -(n_output * tf.log(output) + (1 - n_output) * tf.log(1 - output))
또한이 간단한 대안을 시도했습니다.
cross_entropy = tf.square(n_output - output)
다른 시도와 함께.
그러나 내 설정에 관계없이 a의 오류는 a 보다 훨씬 느리게 GradientDescentOptimizer
감소 했습니다 .AdamOptimizer
실제로 tf.train.AdamOptimizer(0.01)
400-800 개의 학습 단계 ( 0.01
최상의 결과를 얻은 학습 속도의 의존성) 후에 실제로 좋은 결과를 tf.train.GradientDescentOptimizer
산출하는 한편, 교차 엔트로피 계산이나 학습 속도에 관계없이 항상 2000 개 이상의 학습 단계가 필요했습니다.
왜 그렇습니까? AdamOptimizer
항상 더 나은 선택 인 것 같습니다 !