模型在训练RGB图像数据集时未正确训练准确性是恒定的

时间:2018-12-13 22:07:16

标签: python tensorflow machine-learning keras google-cloud-ml

我正在训练kaggle的fruits360数据集模型。 我的keras模型中有0个密集层和3个卷积层。当图像以rgb格式加载时,我的输入形状为(60,60,3)。请帮助我解决此模型的问题,为什么训练不正确。我尝试了不同的图层组合,但是无论您进行任何更改,其准确性和损耗都保持不变。

以下是模型:

SELECT vc_vin_vis_start_range FROM ok_dc.gms3_vc_mme_vin_si_detail
   WHERE TO_NUMBER(vc_vin_vis_start_range, 
                   rpad('x', length(vc_vin_vis_start_range) , 'x'))
      >= TO_NUMBER('100001', 'xxxxxx');

但精度保持不变,如下所示:

rpad()

我该怎么做才能正确训练此模型。为了提高准确性。

2 个答案:

答案 0 :(得分:0)

我不确定sparse_categorical_crossentropy对于只有1个单位的输出是否是适当的损失。

请注意,您的损失为nan。这意味着您的模型/数据/丢失处存在数学错误。很多时候,这是由零除,数字溢出等引起的。

我想您应该将'binary_crossentropy'用作损失函数。

请注意,由于“ relu”激活,您仍有冻结损失的风险。如果发生这种情况,可以在BatchNormalization()层之前添加Activation('relu')层。


请考虑@desertnaut的评论。您将在每个循环中创建一个新的Sequential模型。

答案 1 :(得分:0)

该错误与最后一个密集层有关。它设置为一个(即一类)。 Fruits-360数据集(取决于版本)具有100个以上的类。 1%的精度也是另一回馈。训练集中的标签具有100个不同的值。一个输出节点的密集层只能(随机地)将其正确地从100中选出1,也就是1%。

'sparse_categorical_crossentropy'是可以的,只要标签不是单热编码的。如果是这样,则应使用“ categorical_crossentropy”。与Adam一起使用时,Fruits-360数据集在较高的学习率(如0.1和0.01)下往往不会收敛,最好将学习率设置为0.001至0.0001之间。