TFLearn дает одинаковые результаты для каждого прогноза

Моя сеть выдает один и тот же результат для каждого прогноза. У меня около 49 000 выборок данных во фрейме данных pandas.
Как это исправить?

# Input data X.as_matrix() => 8 dimensional array  
# One example: [1.50000000e+00,3.00000000e+00,6.00000000e+00,2.40000000e+01,9.50000000e+01,3.00000000e+03,5.00000000e+00,1.50000000e+00]  
import tensorflow as tf  
import tflearn  

with tf.Graph().as_default():  
    net = tflearn.input_data([None, 8])  

    net = tflearn.fully_connected(net, 20, activation='softmax',weights_init='normal',regularizer='L2', weight_decay=0.001)   
    net = tflearn.fully_connected(net, 3, activation='softmax',weights_init='normal')  
    sgd = tflearn.Adam(learning_rate=0.01)  
    net = tflearn.regression(net, optimizer=sgd,loss='categorical_crossentropy')  
    model = tflearn.DNN(net)  
    model.fit(X.as_matrix(), Y, show_metric=True, batch_size=10, n_epoch=2, snapshot_epoch=False)  
print(model.predict([X.as_matrix()[1]]))  
print(model.predict([X.as_matrix()[2]]))  
print(model.predict([X.as_matrix()[3]]))    

Result:  
[0.6711940169334412,0.24268993735313416,0.08611597120761871]  
[0.6711940169334412,0.24268993735313416,0.08611597120761871]  
[0.6711940169334412,0.24268993735313416,0.08611597120761871]  

Actual:  
[ 0,  1,  0]  
[ 1,  0,  0]  
[ 0,  0,  1]  

person Jordan Ott    schedule 10.02.2017    source источник


Ответы (1)


Попробуйте использовать sigmoid или relu вместо softmax. Я получил лучшие прогнозы с этими двумя. Может быть, вы хотите использовать сигмоид для первого и relu для второго слоя. Просто играйте с ними и комбинируйте их, чтобы у вас были лучшие прогнозы. Также попробуйте другие функции потерь.

person CrisH    schedule 15.02.2017