【问题标题】:Training accuracy on SGDSGD 的训练精度
【发布时间】:2017-11-12 03:18:51
【问题描述】:

您如何计算 SGD 的训练准确度?您是否使用您训练网络的批处理数据来计算它?还是使用整个数据集? (对于每个批次优化迭代)

我尝试使用我训练网络的批处理数据来计算每次迭代的训练准确度。它几乎总是给我 100% 的训练准确率(有时是 100%、90%、80%,总是 10% 的倍数,但第一次迭代给了我 100%)。这是因为我正在计算我为该迭代训练它的同一批数据的准确性吗?还是我的模型过度拟合,它立即给了我 100%,但验证准确度很低? (这是这里的主要问题,是否可以接受,或者模型有问题)

这是我使用的超参数。

batch_size = 64
kernel_size = 60 #from 60 #optimal 2
depth = 15 #from 60 #optimal 15
num_hidden = 1000 #from 1000 #optimal 80

learning_rate = 0.0001
training_epochs = 8

total_batches = train_x.shape[0] // batch_size

【问题讨论】:

    标签: machine-learning tensorflow deep-learning


    【解决方案1】:

    在训练过程中计算批量数据的训练准确率是正确的。如果准确率的数量始终是 10% 的倍数,那么很可能是因为您的批量大小为 10。例如,如果 8 个训练输出与标签匹配,那么您的训练准确率将为 80%。如果训练准确度数上下波动,主要有两种可能: 1、如果你在一个epoch内多次打印出准确度数,这是正常的,尤其是在训练的早期,因为模型是在不同的数据样本上进行预测; 2.如果你每个epoch打印一次accuracy,如果在训练后期看到训练accuracy上下波动,说明你的learning rate太大了。你需要在训练期间停止加班。 如果这些不能回答您的问题,请提供更多详细信息以便我们提供帮助。

    【讨论】:

    • 哇!是的,我的批量大小是 10!那太精彩了。但是,您如何建议我“随着时间的推移降低学习率”?
    • 我正在使用 Adam Optimizer
    • 您可以使用学习率衰减方法,也可以通过将学习率作为占位符来构建模型,然后像在训练期间提供训练批数据一样提供您想要的值。但是,您的学习率 1e-4 看起来已经足够小了。
    • 嗯,是的,如果我的学习率已经足够小,你认为问题出在哪里?我发布了我使用的超参数。
    • 但是有自适应学习率算法对吧?其中之一是亚当?
    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 2013-01-21
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多