我正在训练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()
我该怎么做才能正确训练此模型。为了提高准确性。
答案 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之间。