简体   繁体   English

Keras网络适合:损失是'nan',准确性不会改变

[英]Keras network fit: loss is 'nan', accuracy doesn't change

I try to fit keras network, but in each epoch loss is 'nan' and accuracy doesn't change... I tried to change epoch, layers count, neurons count, learning rate, optimizers, I checked nan data in datasets, normalize data by different ways, but problem was not solved. 我尝试适应keras网络,但在每个纪元丢失是'nan'并且准确性不会改变...我试图改变纪元,层数,神经元数,学习率,优化器,我检查数据集中的nan数据,规范化数据以不同的方式,但问题没有解决。 Thanks for your help. 谢谢你的帮助。

np.random.seed(1337)

# example of input vector: [-1.459746, 0.2694708, ... 0.90043]
# example of output vector: [1, 0] or [0, 1]

model = Sequential()
model.add(Dense(1000, activation='tanh', init='normal', input_dim=503))
model.add(Dense(2, init='normal', activation='softmax'))

opt = optimizers.sgd(lr=0.01)
model.compile(loss="categorical_crossentropy", optimizer=opt, metrics=['accuracy'])

print(model.summary())

model.fit(x_train, y_train, batch_size=1000, nb_epoch=100, verbose=1)
99804/99804 [==============================] - 5s 52us/step - loss: nan - acc: 0.4938
Epoch 1/100
99804/99804 [==============================] - 5s 49us/step - loss: nan - acc: 0.4938
Epoch 2/100
99804/99804 [==============================] - 5s 51us/step - loss: nan - acc: 0.4938
Epoch 3/100
99804/99804 [==============================] - 5s 52us/step - loss: nan - acc: 0.4938
Epoch 4/100
99804/99804 [==============================] - 5s 52us/step - loss: nan - acc: 0.4938
Epoch 5/100
99804/99804 [==============================] - 5s 51us/step - loss: nan - acc: 0.4938
...

First convert your output to categorical, as described in Keras documentation : 首先将输出转换为分类,如Keras文档中所述

Note: when using the categorical_crossentropy loss, your targets should be in categorical format. 注意:使用categorical_crossentropy损失时,您的目标应采用分类格式。 In order to convert integer targets into categorical targets, you can use the Keras utility to_categorical: 要将整数目标转换为分类目标,可以使用Keras实用程序to_categorical:

from keras.utils import to_categorical
categorical_labels = to_categorical(int_labels, num_classes=None)

Oh, problem has been found! 哦,问题已被发现! After normalization, one nan neuron appeared in the input vector 归一化后,输入载体中出现一个纳米神经元

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM