2017-02-15 11 views
0

Я использую python 2.7, и я действительно не понимаю, почему я получаю это. Я предполагаю, что проблема в том, что мой python 2.7 вызывает проблему типа float.Tensorflow epoch_loss становится нулевым во вторую эпоху

('Epoch', 1, 'completed out of', 10, 'loss:', 49576.683227539062) 
('Epoch', 2, 'completed out of', 10, 'loss:', 0.0) 
('Epoch', 3, 'completed out of', 10, 'loss:', 0.0) 
('Epoch', 4, 'completed out of', 10, 'loss:', 0.0) 
('Epoch', 5, 'completed out of', 10, 'loss:', 0.0) 
('Epoch', 6, 'completed out of', 10, 'loss:', 0.0) 
('Epoch', 7, 'completed out of', 10, 'loss:', 0.0) 
('Epoch', 8, 'completed out of', 10, 'loss:', 0.0) 
('Epoch', 9, 'completed out of', 10, 'loss:', 0.0) 
('Epoch', 10, 'completed out of', 10, 'loss:', 0.0) 
('Accuracy:', 1.0) 

Мой код как следующее:

def train_neural_network(x): 
    prediction = neural_network_model(x) 
    cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(prediction,y)) 
    optimizer = tf.train.AdamOptimizer(learning_rate=0.001).minimize(cost) 

    with tf.Session() as sess: 
     sess.run(tf.initialize_all_variables()) 

     for epoch in range(hm_epochs): 
      epoch_loss = 0 
      i=0 
      while i < len(train_x): 
       start = i 
       end = i+batch_size 
       batch_x = np.array(train_x[start:end]) 
       batch_y = np.array(train_y[start:end]) 

       _, c = sess.run([optimizer, cost], feed_dict={x: batch_x, # substitute batch_x into it 
                  y: batch_y}) 
       epoch_loss += c 
       i+=batch_size 

      print('Epoch', epoch+1, 'completed out of',hm_epochs,'loss:',epoch_loss) 
     correct = tf.equal(tf.argmax(prediction, 1), tf.argmax(y, 1)) 
     accuracy = tf.reduce_mean(tf.cast(correct, 'float')) 

     print('Accuracy:',accuracy.eval({x:test_x, y:test_y})) 
+0

Какова ваша модель, данные прогнозирования и проверки? – kennytm

+0

Спасибо за ваш ответ Кенни. Мои тестовые данные - это два txt-файла, которые содержат положительные слова настроения и отрицательные слова. И он собирается предсказать предложение, принадлежит ли оно к постительной или отрицательной категории. Моя модель точно такая же, как и эта. [Модель и предсказание] (https://pythonprogramming.net/train-test-tensorflow-deep-learning-tutorial/?completed=/preprocessing-tensorflow-deep-learning-tutorial/) – BenjiBB

+0

Ваш отступ неправильный, а переменные ' hm_epoches', 'batch_size',' train_x' и 'train_y' не определены. – MaxPowers

ответ

0

Может быть, вы подходите данные почти идеально и округление делает его идти в 0.0. Вы можете попытаться использовать функцию потерь в тестовом наборе, чтобы видеть выходные или выходные промежуточные выходы каждой итерации, чтобы увидеть, уменьшается ли убыток по мере надобности.

Я бы не стал беспокоиться об этом, потому что ваша точность теста 100% и, следовательно, оптимальная. Что еще вы хотите?

+0

Я согласен с тем, что мой результат показывает 1,0 точность, и поэтому она равна нулю. Однако в учебнике показано постепенное снижение. Я думаю, мне нужно будет проверить промежуточный результат стоимости и посмотреть, уменьшается ли она или нет. Спасибо, Томас! – BenjiBB

+0

Большое вам спасибо. Я нашел ответ сейчас, один из входного текстового файла был пуст. Я был таким глупым. – BenjiBB

+1

http://stackoverflow.com/help/someone-answers –