【问题标题】:acc and cost is not stable in my CNN modelacc 和 cost 在我的 CNN 模型中不稳定
【发布时间】:2018-05-05 19:35:21
【问题描述】:

我有自己的6600个数字(0~9)训练图像集,18200个小写英文字母(a~z)训练图像集,18200个大写英文字母(A~Z)训练图像集。

我首先用 CNN 模型训练了我的数字训练集,效果很好。

这是我的 CNN 模型形成。

learning rate = 0.0001

28X28 input image
11X11 output label.(0~9(5500 training sets) and none digit ex)a~z, A~Z(1100 training sets))

CONV1
filter(3,3,1,32)->relu->maxpool(1,2,2,1) and stride(1,2,2,1)

CONV2
filter(3,3,32,64)->relu->maxpool(1,2,2,1) and stride(1,2,2,1)

CONV3
filter(3,3,64,128)->relu->maxpool(1,2,2,1) and stride(1,2,2,1)->reshape(-1, 128*4*4)

FC1   
input - (128*4*4)   
relu    
output - (625)   

FC2   
input - (625)   
relu   
output - (11)  

its acc : 
![enter image description here][1]

its cost : ![enter image description here][2]

我认为这个 CNN 模型训练得很好。

我用自己的英文小写字母(a~z)训练了相同的CNN模型,出现了问题。

digit CNN模型只有一个区别,就是FC2层输出(27)

这是用英文小写字母训练的 CNN 模型的 acc 和 cost

acc:

费用:

acc 和 cost 与 digit CNN 模型相比存在严重的波动情况

我想让这个 CNN 模型更稳定。如果你有兴趣,能给我一些建议吗?

我认为CNN模型形成是原因,但无法具体解释问题所在

【问题讨论】:

    标签: python tensorflow conv-neural-network


    【解决方案1】:

    我个人认为英文小写字母 (a-z) 的波动对我来说看起来很正常。与数字数据集相比,波动很可能是由于数据集中存在的类数量增加造成的。数字数据集只有 10 个类,但英文小写字母有 26 个类。因此,在训练英文小写字母数据集的过程中出现更多的波动是合乎逻辑的,因为模型更有可能遇到以前没有见过的示例。

    您可以尝试减少波动的一种方法是增加批量大小,以便模型可以调整其权重,同时在每个训练步骤“查看”更多示例。

    对我的答案不太自信,但这是我在 1 年多的 CNN 训练中观察到的。期待看看它是否也适用于您的模型。

    【讨论】:

    • 我将批量大小从 100 更改为 300,并在每个步骤后在终端上打印成本和 acc 日志,没有波动。但张量板标量图(acc 和 cost)存在波动。我不知道为什么会这样,你能解释一下这种情况吗?
    • 我假设您的问题是关于“为什么打印值和张量板值之间存在差异”。也许您应该检查的第一件事是您的namename_scope 变量没有错误。如果没有错误,请发布另一个问题并将 URL 发给我,然后我会看看它:) 如果我的答案是正确的,请将其标记为正确。非常感谢。
    猜你喜欢
    • 2022-11-28
    • 1970-01-01
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    • 2023-03-07
    • 2021-09-02
    • 2020-09-17
    • 2018-02-21
    相关资源
    最近更新 更多