2016-11-06 6 views
0

훈련 후 모든 항목에 대해 동일한 출력에 수렴 인간과 오이의 차이점을 파악할 수있는 프로그램을 개발하는 것이 좋습니다. 나는 이미지 - 인터넷에서 이미지를 끌어와 오이로 인간/와 오이 사진에 사람의 사진을 넣어/TensorFlow 항상이 내가 함께 일하고 코드의 조각

가 나는 프로그램이 복용 믿습니다 단계의 목록을 만들어 :

  1. 파일 경로 및 키 배열을 만들고 섞습니다.

  2. 파일 경로에 대한 배치가 생성됩니다.

  3. 배치에서 파일 경로가 이미지로 변환되고 크기가 250x250으로 조정되어 이미지 일괄 배열에 추가됩니다 (이 시점에서 키와 이미지는 여전히 정렬됩니다).

  4. 이미지 배치와 키 배치가 어레이로 공급됩니다.

  5. 모든 신기원의 끝에서 각 이미지 10 개에 대해 네트워크를 테스트합니다.

    [[ 0.53653401 0.46346596]] [0] [0, 1] 
    [[ 0.53653401 0.46346596]] [0] [0, 1] 
    [[ 0.53653401 0.46346596]] [0] [0, 1] 
    [[ 0.53653401 0.46346596]] [0] [1, 0] 
    [[ 0.53653401 0.46346596]] [0] [1, 0] 
    [[ 0.53653401 0.46346596]] [0] [0, 1] 
    [[ 0.53653401 0.46346596]] [0] [1, 0] 
    [[ 0.53653401 0.46346596]] [0] [1, 0] 
    [[ 0.53653401 0.46346596]] [0] [1, 0] 
    [[ 0.53653401 0.46346596]] [0] [0, 1] 
    [[ 0.53653401 0.46346596]] [0] [1, 0] 
    [[ 0.53653401 0.46346596]] [0] [0, 1] 
    [[ 0.61422414 0.38577583]] [0] [1, 0] 
    [[ 0.53653401 0.46346596]] [0] [0, 1] 
    [[ 0.53653401 0.46346596]] [0] [1, 0] 
    [[ 0.53653401 0.46346596]] [0] [1, 0] 
    [[ 0.53653401 0.46346596]] [0] [0, 1] 
    [[ 0.53653401 0.46346596]] [0] [0, 1] 
    [[ 0.53653401 0.46346596]] [0] [0, 1] 
    [[ 0.53653401 0.46346596]] [0] [1, 0] 
    

    제 어레이의 출력 노드 인, 제 배열되는 tf.argmax() 출력 : I)이 (use_network 실행할 때

는 I 콘솔이 출력을 얻을 , 그리고 세 번째는 기대했던 것입니다.

  1. : 나는이 일을 시도하고 변경하려면 다음을 수행하려고했습니다

    Epoch 1 completed out of 50  Error 3762.83390808 
    Epoch 2 completed out of 50  Error 3758.51748657 
    Epoch 3 completed out of 50  Error 3753.70425415 
    Epoch 4 completed out of 50  Error 3748.32539368 
    Epoch 5 completed out of 50  Error 3742.45524597 
    Epoch 6 completed out of 50  Error 3736.21272278 
    Epoch 7 completed out of 50  Error 3729.56756592 
    ... 
    Epoch 45 completed out of 50 Error 3677.34605408 
    Epoch 46 completed out of 50 Error 3677.34388733 
    Epoch 47 completed out of 50 Error 3677.34150696 
    Epoch 48 completed out of 50 Error 3677.3391571 
    Epoch 49 completed out of 50 Error 3677.33673096 
    Epoch 50 completed out of 50 Error 3677.33418274 
    

    :

    실제 학습이 학습에서 출력되는으로도 오히려 작은 것 같다 이미지를 작게 만들기, 예를 들어 32x32 및/또는 흑백으로 만듭니다. 작은 이미지가 예측의 변화로 이어질지를 확인하십시오.

  2. 비용 방정식을 reduce_sum과 reduce_mean 사이에서 변경하고 내부 방정식을 sigmoid_cross_entropy에서 softmax_cross_entropy로 변경합니다.

나는 그것이 작동 밤은 이유에 몇 가지 아이디어를 가지고 있고, 그 다음으로 그들은 :

  1. 그냥 가난한 코드

  2. 입력 데이터가 너무 크고 충분하지 노드/레이어 과정.

  3. 이미지와 관련 키가 어딘가에서 스크램블됩니다.

+0

학습 속도를 줄여보십시오. 그것은 내 경험에서이 문제의 가장 일반적인 원인입니다. – chasep255

답변

2

여기에는 몇 가지 가능한 문제점이 있습니다. 첫 번째는 큰 이미지 그물 이미지를 처리하기 위해 밀도가 높은 연결 레이어를 사용하고 있다는 것입니다. 이미지에 길쌈 네트워크를 사용해야합니다. 나는 이것이 당신의 가장 큰 문제라고 생각합니다. 길쌈/풀링 레이어의 피라미드를 적용한 후에 만 ​​공간 차원을 '피쳐'로 축소하면 밀도가 높은 레이어를 추가해야합니다.

https://www.tensorflow.org/versions/r0.11/tutorials/deep_cnn/index.html

둘째, 당신은 조밀 한 층을 사용하려고하는 경우에도 당신은주의 모델에서 일부 예외를 제외하고 숨겨진 층 사이의 활성화 (로 softmax를 함수를 적용하지 않아야하지만이 더 진보 된 개념이다.) 소프트 맥스 (Softmax)는 레이어에있는 모든 활성화의 합계가 사용자가 원치 않는 레이어로 전환되도록합니다. 나는 숨겨진 레이어 사이의 활성화를 relu 또는 적어도 tanh로 변경합니다.

마지막으로, 네트워크가 일정한 값에 접근하면 학습 속도를 낮추는 데 도움이 될 수 있음을 발견했습니다. 나는 이것이 당신의 문제라고 생각하지 않습니다. 나의 처음 두 댓글은 당신이 집중해야하는 것입니다.

+0

이것이 내 문제 였어, 고마워. 나는 아직도 NN의 작동 방식을 배우고 있으며, FC 레이어를 사용하는 MNIST 튜토리얼에서 일부 내용을 변경했습니다. 고맙습니다 :) – em202020

관련 문제