2016-05-10 24 views
5

Keras'ı kullanarak sinir ağımdan birkaç NaN çıkışı alıyorum. Sadece 10.000 sonuç başına bir NaN alırım. Aslında, son softmax katmanına beslenen bir relu aktivasyon tabakası vardı. Bu daha fazla NaN sonucu üretti. Anayasal ağdaki son iki yoğun katman için etkinleştirme işlevini relu'dan sigmoid'e değiştirdim. Bu problemi daha iyi hale getirdi ama hala NaN elde ediyorum. Nan'u tamamen nasıl ortadan kaldıracağım konusunda bir tavsiye var mı?Keras Neural Nets, Çıkışta NaN değerleri nasıl kaldırılır?

model = Sequential() 
model.add(InputLayer((1, IMG_H, IMG_W))) 

model.add(Convolution2D(32, 3, 3, activation = 'relu')) 
model.add(Convolution2D(32, 3, 3, activation = 'relu')) 
model.add(MaxPooling2D(pool_size = (2, 2))) 

model.add(Dropout(0.3)) 

model.add(Convolution2D(64, 3, 3, activation = 'relu')) 
model.add(Convolution2D(64, 3, 3, activation = 'relu')) 
model.add(MaxPooling2D(pool_size = (2, 2))) 

model.add(Dropout(0.3)) 

model.add(Flatten()) 
model.add(Dense(256, activation = 'sigmoid')) 
model.add(Dropout(0.3)) 
model.add(Dense(64, activation = 'sigmoid')) 
model.add(Dropout(0.3)) 
model.add(Dense(categories, activation = 'softmax')) 
+1

Çıkış/kayıplarınızdaki NaN'ler her zaman çok kötü bir işarettir. Girişinizi önişlemiş/normalleştirdiniz mi? Öğrenme oranınız yeterince küçük mü? Veriler doğru bir şekilde işlenirse NaN'ler asla oluşmamalıdır. [Bu] (http://cs231n.github.io/neural-networks-2/) yardımcı olabilir. – sascha

+0

Girişimi 1 ile 0 arasında normalleştirdim. 0,01 ve 0,001 arasında küçük bir öğrenme oranı kullandım. Şu anda bu yardımcı olup olmadığını görmek için ağırlık düzenleyici ekliyorum. – chasep255

+0

0-1 arasında normalleştirme yapmak istediğiniz gibi değildir. Bu sklearn'de MinMax-scaler'a benziyor. Sklearn'deki standart ve değişkenleri aka standartlaştırmak istiyorsun. SGD tabanlı algoritmalar kullanıldığında bu çok önemlidir! Durumunuzda ortalama >> 0.0 olacaktır ve bence varyansı değiştirmediniz. – sascha

cevap

2

sorunu çözdük benziyor, ama ileride yararlanmak üzere başka şeylerin yanı sıra size nan girişi olup olmadığını kontrol öneren bir nice question yoktur.