0

내 논문에 대한 실험을 수행하고 TF의 CNN 예제를 기반으로 Tensorflow에서 또 다른 작은 심층 신경 네트워크를 만들었습니다 주어진 예와 비슷하지만 Mnist 대신 1d에 있음).Tensorflow : NN은 random_normal 및 random_uniform 데이터를 가중치 초기화 도구로 사용할 때 훈련을하지 않습니다.

이 TF 주어진 예제는 tf.truncated_normal 데이터로 모든 가중 변수를 초기화하므로 NN이 내 데이터를 학습하게합니다 (손실 감소 + 정확도 증가). 그러나 과학 논문에서 신경 네트워크를 에뮬레이션하려고하기 때문에 정상적인 분포에서 가져온 값을 사용하여 컨볼 루션 레이어의 가중치를 초기화해야했습니다 (이 경우 stddev가 0.1 인 tf.random_normal을 사용했습니다). 완전히 연결된 레이어 가중치가 균일 한 분포 값 (여기서 tf.random_uniform을 사용했습니다). 그 결과는 손실과 정확도가 8- 14 %의 정확도와 2.51에서 2.54 사이의 정확도 사이에서 약간의 작은 자릿수 사이에서 진동하지만 감소하거나 증가하지는 않는다고 생각하고 생각하기 때문에 꽤 나 빠졌다.

저는이 부분이 거의 새롭지 않아 프레임 워크가 작동하는 방식을 잘 모르기 때문에 각 반복마다 변수 (이니셜 라이저로 사용하고 있음)가 항상 다시 시작됩니다 (그리고 tf.truncated_normal 데이터로 발생하지 않는 무언가입니다). 그래서이 두 가지 유형의 초기화를 사용하는 신경 세포는 결코 배우지 못합니다. 그게 사실이라면, 누군가가 그냥 이니셜로 사용되는이 값을 만들 수 있고 반복하지 않는 방법을 가르쳐주세요 수

내 코드는 여기에서 찾을 수 있습니다 : https://github.com/dialgop/small_deep_nn/blob/master/Cnn_Model_Martin.ipynb

감사합니다 도움이 될 수 있습니다 사람에게 많이 저

답변

1

실제로 변동하는 정확도로 관찰되는 것은 테스트 코드에서 드롭 아웃의 결과입니다. 드롭 아웃은 교육 단계에서만 사용되며 테스트 단계에서 즉 1의 유지 확률로 해제해야합니다. 정확성은 단순히 테스트 단계에서 드롭 아웃의 임의성으로 인해 발생합니다.