首页 > 解决方案 > Keras 多类训练准确率没有提高,没有损失报告

问题描述

我不确定我的数据或我提出问题的方式有什么问题。我已经构建了一个时间序列数据集,在 x(10 个特征)上具有多个输入特征,并且 y 被构建为一个热编码的多类输出,其特征为 (61726,3)。y 类具有三个潜在值,每个值的频率估计值:

我在 Keras 中的模型如下:

    trainy = to_categorical(trainy)
    testy = to_categorical(testy)
    
    # create model
    model = Sequential()
    model.add(Dense(8, input_dim=trainx.shape[1], activation='relu'))
    model.add(Dense(3, activation='softmax'))
    #Compile model
    model.compile(loss='categorical_crossentropy',
                  # optimizer=SGD(lr=0.0001),
                  optimizer='adam', 
                  metrics=['categorical_accuracy'])
    trainy_ints=numpy.argmax(trainy, axis=1)
    class_weights=class_weight.compute_class_weight(class_weight='balanced',
                                                    classes=numpy.unique(trainy_ints), 
                                         classification           y=trainy_ints)
    class_weights=dict(enumerate(class_weights))
    print('\tusing class_weights: ',class_weights)
    model.fit(x=trainx,y=trainy,
              batch_size=batchSize,epochs=epochs,
              class_weight=class_weights)

正如其他答案中所建议的,我尝试将优化函数更改为 SGD 并更改学习率,但这并没有帮助。

我发现了另一个关于不平衡类的答案,并认为这对我的问题很有意义,因为该算法可能总是预测最频繁的类,所以我也尝试使用 class_weights 参数,如您所见,但我仍然遇到同样的问题。

这是我在训练期间有问题的输出的一个例子。您还可以看到,第一个时期似乎总是以较低的精度开始,然后在第二个时期它总是达到最大值。

Epoch 1/100
63/63 [==============================] - 0s 3ms/step - loss: nan - categorical_accuracy: 0.4818   
Epoch 2/100
63/63 [==============================] - 0s 3ms/step - loss: nan - categorical_accuracy: 0.4933
Epoch 3/100
63/63 [==============================] - 0s 3ms/step - loss: nan - categorical_accuracy: 0.4933

任何见解都非常感谢!谢谢。

标签: pythonmachine-learningkerasneural-network

解决方案


我发现我的输入数据集中仍有“nan”,这导致训练过程中断。


推荐阅读