Neural network 损失和验证损失减少,但准确性和验证准确性保持不变

Neural network 损失和验证损失减少,但准确性和验证准确性保持不变,neural-network,statistics,deep-learning,keras,Neural Network,Statistics,Deep Learning,Keras,输入数据(xs): 输出数据(ys): 培训集分为70%的培训和30%的验证 训练该网络可以看到损耗和val_损耗降低,但acc和val_acc分别保持在0.5714和0的静态: Train on 7 samples, validate on 3 samples Epoch 1/60 0s - loss: 4.4333 - acc: 0.0000e+00 - val_loss: 4.4340 - val_acc: 0.0000e+00 Epoch 2/60 0s - loss: 4.4335 -

输入数据(xs):

输出数据(ys):

培训集分为70%的培训和30%的验证

训练该网络可以看到损耗和val_损耗降低,但acc和val_acc分别保持在0.5714和0的静态:

Train on 7 samples, validate on 3 samples
Epoch 1/60
0s - loss: 4.4333 - acc: 0.0000e+00 - val_loss: 4.4340 - val_acc: 0.0000e+00
Epoch 2/60
0s - loss: 4.4335 - acc: 0.0000e+00 - val_loss: 4.4338 - val_acc: 0.0000e+00
Epoch 3/60
0s - loss: 4.4331 - acc: 0.0000e+00 - val_loss: 4.4335 - val_acc: 0.0000e+00
Epoch 4/60
0s - loss: 4.4319 - acc: 0.0000e+00 - val_loss: 4.4331 - val_acc: 0.0000e+00
Epoch 5/60
0s - loss: 4.4300 - acc: 0.0000e+00 - val_loss: 4.4326 - val_acc: 0.0000e+00
Epoch 6/60
0s - loss: 4.4267 - acc: 0.0000e+00 - val_loss: 4.4320 - val_acc: 0.0000e+00
Epoch 7/60
0s - loss: 4.4270 - acc: 0.1429 - val_loss: 4.4314 - val_acc: 0.0000e+00
Epoch 8/60
0s - loss: 4.4257 - acc: 0.1429 - val_loss: 4.4307 - val_acc: 0.0000e+00
Epoch 9/60
0s - loss: 4.4240 - acc: 0.0000e+00 - val_loss: 4.4300 - val_acc: 0.0000e+00
Epoch 10/60
0s - loss: 4.4206 - acc: 0.1429 - val_loss: 4.4292 - val_acc: 0.0000e+00
Epoch 11/60
0s - loss: 4.4192 - acc: 0.1429 - val_loss: 4.4284 - val_acc: 0.0000e+00
Epoch 12/60
0s - loss: 4.4156 - acc: 0.4286 - val_loss: 4.4276 - val_acc: 0.0000e+00
Epoch 13/60
0s - loss: 4.4135 - acc: 0.4286 - val_loss: 4.4267 - val_acc: 0.0000e+00
Epoch 14/60
0s - loss: 4.4114 - acc: 0.5714 - val_loss: 4.4258 - val_acc: 0.0000e+00
Epoch 15/60
0s - loss: 4.4072 - acc: 0.7143 - val_loss: 4.4248 - val_acc: 0.0000e+00
Epoch 16/60
0s - loss: 4.4046 - acc: 0.4286 - val_loss: 4.4239 - val_acc: 0.0000e+00
Epoch 17/60
0s - loss: 4.4012 - acc: 0.5714 - val_loss: 4.4229 - val_acc: 0.0000e+00
Epoch 18/60
0s - loss: 4.3967 - acc: 0.5714 - val_loss: 4.4219 - val_acc: 0.0000e+00
Epoch 19/60
0s - loss: 4.3956 - acc: 0.5714 - val_loss: 4.4209 - val_acc: 0.0000e+00
Epoch 20/60
0s - loss: 4.3906 - acc: 0.5714 - val_loss: 4.4198 - val_acc: 0.0000e+00
Epoch 21/60
0s - loss: 4.3883 - acc: 0.5714 - val_loss: 4.4188 - val_acc: 0.0000e+00
Epoch 22/60
0s - loss: 4.3849 - acc: 0.5714 - val_loss: 4.4177 - val_acc: 0.0000e+00
Epoch 23/60
0s - loss: 4.3826 - acc: 0.5714 - val_loss: 4.4166 - val_acc: 0.0000e+00
Epoch 24/60
0s - loss: 4.3781 - acc: 0.5714 - val_loss: 4.4156 - val_acc: 0.0000e+00
Epoch 25/60
0s - loss: 4.3757 - acc: 0.5714 - val_loss: 4.4145 - val_acc: 0.0000e+00
Epoch 26/60
0s - loss: 4.3686 - acc: 0.5714 - val_loss: 4.4134 - val_acc: 0.0000e+00
Epoch 27/60
0s - loss: 4.3666 - acc: 0.5714 - val_loss: 4.4123 - val_acc: 0.0000e+00
Epoch 28/60
0s - loss: 4.3665 - acc: 0.5714 - val_loss: 4.4111 - val_acc: 0.0000e+00
Epoch 29/60
0s - loss: 4.3611 - acc: 0.5714 - val_loss: 4.4100 - val_acc: 0.0000e+00
Epoch 30/60
0s - loss: 4.3573 - acc: 0.5714 - val_loss: 4.4089 - val_acc: 0.0000e+00
Epoch 31/60
0s - loss: 4.3537 - acc: 0.5714 - val_loss: 4.4078 - val_acc: 0.0000e+00
Epoch 32/60
0s - loss: 4.3495 - acc: 0.5714 - val_loss: 4.4066 - val_acc: 0.0000e+00
Epoch 33/60
0s - loss: 4.3452 - acc: 0.5714 - val_loss: 4.4055 - val_acc: 0.0000e+00
Epoch 34/60
0s - loss: 4.3405 - acc: 0.5714 - val_loss: 4.4044 - val_acc: 0.0000e+00
Epoch 35/60
0s - loss: 4.3384 - acc: 0.5714 - val_loss: 4.4032 - val_acc: 0.0000e+00
Epoch 36/60
0s - loss: 4.3390 - acc: 0.5714 - val_loss: 4.4021 - val_acc: 0.0000e+00
Epoch 37/60
0s - loss: 4.3336 - acc: 0.5714 - val_loss: 4.4009 - val_acc: 0.0000e+00
Epoch 38/60
0s - loss: 4.3278 - acc: 0.5714 - val_loss: 4.3998 - val_acc: 0.0000e+00
Epoch 39/60
0s - loss: 4.3254 - acc: 0.5714 - val_loss: 4.3986 - val_acc: 0.0000e+00
Epoch 40/60
0s - loss: 4.3205 - acc: 0.5714 - val_loss: 4.3975 - val_acc: 0.0000e+00
Epoch 41/60
0s - loss: 4.3171 - acc: 0.5714 - val_loss: 4.3963 - val_acc: 0.0000e+00
Epoch 42/60
0s - loss: 4.3150 - acc: 0.5714 - val_loss: 4.3952 - val_acc: 0.0000e+00
Epoch 43/60
0s - loss: 4.3106 - acc: 0.5714 - val_loss: 4.3940 - val_acc: 0.0000e+00
Epoch 44/60
0s - loss: 4.3064 - acc: 0.5714 - val_loss: 4.3929 - val_acc: 0.0000e+00
Epoch 45/60
0s - loss: 4.3009 - acc: 0.5714 - val_loss: 4.3917 - val_acc: 0.0000e+00
Epoch 46/60
0s - loss: 4.2995 - acc: 0.5714 - val_loss: 4.3905 - val_acc: 0.0000e+00
Epoch 47/60
0s - loss: 4.2972 - acc: 0.5714 - val_loss: 4.3894 - val_acc: 0.0000e+00
Epoch 48/60
0s - loss: 4.2918 - acc: 0.5714 - val_loss: 4.3882 - val_acc: 0.0000e+00
Epoch 49/60
0s - loss: 4.2886 - acc: 0.5714 - val_loss: 4.3871 - val_acc: 0.0000e+00
Epoch 50/60
0s - loss: 4.2831 - acc: 0.5714 - val_loss: 4.3859 - val_acc: 0.0000e+00
Epoch 51/60
0s - loss: 4.2791 - acc: 0.5714 - val_loss: 4.3848 - val_acc: 0.0000e+00
Epoch 52/60
0s - loss: 4.2774 - acc: 0.5714 - val_loss: 4.3836 - val_acc: 0.0000e+00
Epoch 53/60
0s - loss: 4.2714 - acc: 0.5714 - val_loss: 4.3824 - val_acc: 0.0000e+00
Epoch 54/60
0s - loss: 4.2696 - acc: 0.5714 - val_loss: 4.3813 - val_acc: 0.0000e+00
Epoch 55/60
0s - loss: 4.2641 - acc: 0.5714 - val_loss: 4.3801 - val_acc: 0.0000e+00
Epoch 56/60
0s - loss: 4.2621 - acc: 0.5714 - val_loss: 4.3790 - val_acc: 0.0000e+00
Epoch 57/60
0s - loss: 4.2569 - acc: 0.5714 - val_loss: 4.3778 - val_acc: 0.0000e+00
Epoch 58/60
0s - loss: 4.2556 - acc: 0.5714 - val_loss: 4.3767 - val_acc: 0.0000e+00
Epoch 59/60
0s - loss: 4.2492 - acc: 0.5714 - val_loss: 4.3755 - val_acc: 0.0000e+00
Epoch 60/60
0s - loss: 4.2446 - acc: 0.5714 - val_loss: 4.3744 - val_acc: 0.0000e+00
Out[23]:
<keras.callbacks.History at 0x7fbb9c4c7a58>
我的培训数据的一些简单统计:

    0   1   2   3   4
count   10.000000   10.000000   10.000000   10.000000   10.000000
mean    0.275118    -0.033855   0.273101    0.277016    0.030270
std 0.011664    0.001594    0.011386    0.012060    0.000746
min 0.261630    -0.035711   0.259897    0.261270    0.029256
25% 0.263404    -0.035207   0.261871    0.267094    0.029756
50% 0.274853    -0.033919   0.273771    0.276760    0.030201
75% 0.284981    -0.032777   0.283758    0.288072    0.030692
max 0.290841    -0.030872   0.287884    0.293469    0.031718
使用以下方式生成:

import pandas as pd
pd.DataFrame(xs).describe()
这个数据集的标准差很低,这是我的网络不收敛的原因吗

我是否可以尝试其他修改,以提高该网络的培训和验证精度

更新:

第一和第四个培训示例:

[0.28555165, -0.03237782,  0.28525293,  0.2898103 ,  0.03093571]
[0.27617554, -0.03335768,  0.27927279,  0.28285823,  0.03015975] 
包含相同的目标映射:

     0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
     0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
     0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
     0.,  0.,  0.,  0.,  0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
     0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
     0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
     0.,  0.,  0.,  0.,  0.,  0.

     0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
     0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
     0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
     0.,  0.,  0.,  0.,  0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
     0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
     0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
     0.,  0.,  0.,  0.,  0.,  0.

这些培训示例是否有可能影响结果的特性?我需要了解大量的训练数据来训练神经网络,但这并不能解释为什么
loss
val\u loss
会减少,而是训练准确性和验证准确性的评估:
acc
val\u acc
保持静态?

首先,我必须提醒你这里有些不太好的事情:

  • 似乎您正在尝试一个84个类的分类问题,其中只有10个数据样本(7个用于培训,3个用于验证)。这显然是因为数据太少,无法尝试创建成功的深度学习模型(大多数深度学习问题至少需要数千个数据样本,其他问题甚至需要数百万个)。首先,您甚至没有针对所有类别的一个数据样本,因此在我看来,考虑到数据太少,这似乎是一个失败的原因

    似乎你已经意识到了这一点,正如你在帖子中所指出的。你还说,尽管这不能解释你的精确性的奇怪行为,但我必须说,在这些条件下,得出这样的结论不是一个好主意。拥有如此少的数据样本肯定会导致您的培训出现意外/不稳定的行为,因此难怪您的指标表现异常

  • 我看到您在模型的所有层中都使用了
    softmax
    激活。根据我的经验,这对于分类问题不是一个好主意。深度学习模型分类的当前“标准”是对内层使用
    ReLU
    激活,而将
    softmax
    仅用于输出层

    这是因为
    softmax
    返回N个类的概率分布(它们的总和为1),因此它有助于在您的选择中获得最可能的类。这也意味着
    softmax
    将“挤压”或修改输入值,使它们都在[0,1]之间,这可能会影响应用于所有层时的训练过程,因为它不会为您提供与其他S形函数相同的激活值。简单地说,您在某种程度上“规范化”了模型每一层上的值,而不是让数据“为自己说话”


  • 现在,如果我们在训练期间查看你的4个指标,我们可以看到你的
    acc
    并不像你想的那样是静态的:它的第一个历元保持在
    0.0
    ,然后在第7个历元开始增加,直到第17个历元达到
    0.5714
    ,并且似乎达到了一个渐进极限

    我们还可以看到,您的
    损失
    指标几乎没有改善,从
    4.4333
    开始,到
    4.2446
    结束,其间有几次起伏。鉴于这一证据,您的模型似乎已经过拟合了:也就是说,它通过记忆学习了您的7个训练样本,但没有真正学习模型的表示当给定3个数据时,它从未见过所有数据都失败。这并不奇怪,因为您拥有的数据非常少,而且不平衡,以及前面提到的其他方面


    我是否可以尝试其他修改,以提高该网络的培训和验证精度

    除了获取更多数据并可能重新设计网络架构之外,还有一件事可能会影响您,那就是
    验证\u split
    参数。通过为测试和列车数据指定所需的比率,您已经正确地使用了它。然而,阅读Keras常见问题,我们可以看到:

    如果将model.fit中的validation_split参数设置为,例如0.1,则使用的验证数据将是数据的最后10%。如果将其设置为0.25,则它将是最后25%的数据,以此类推。请注意,在提取验证拆分之前,数据不会被洗牌,因此验证实际上只是传递的输入中最后x%的样本


    这意味着,通过指定
    0.3
    的验证拆分,您总是使用最后3个数据元素作为验证。您可以做的是在调用fit之前洗牌所有数据,或者使用
    validation\u data
    参数
    ,将您希望与数据一起使用的
    (X\u test,Y\u test)
    指定为元组(例如,使用
    train\u test\u split
    )。我希望这能帮助你解决问题,祝你好运。

    你有很多课。我建议你离开网络去更多的时代。只是想确定一下,你真的想用7个训练样本(每个样本有5个特征)来解决84类分类问题吗?
    import pandas as pd
    pd.DataFrame(xs).describe()
    
    [0.28555165, -0.03237782,  0.28525293,  0.2898103 ,  0.03093571]
    [0.27617554, -0.03335768,  0.27927279,  0.28285823,  0.03015975] 
    
         0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.,  0.
    
         0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
         0.,  0.,  0.,  0.,  0.,  0.