【问题标题】:Fitting a keras model when layers aren't trainable gives inconsistent results当层不可训练时拟合 keras 模型会产生不一致的结果
【发布时间】:2017-12-14 11:42:20
【问题描述】:

我试图在不训练和更新权重的情况下确定模型的准确性,因此我将所有层设置为 trainable = False

当我在带有shuffle = False 的生成器上运行fit_generator 时,每次都会得到一致的结果。

当我在带有shuffle = True 的生成器上运行fit_generator 时,结果有点跳跃。鉴于输入数据相同,并且模型没有训练,我希望模型的内部状态不会改变,并且无论排序如何,在同一数据集上的准确度都相同。

然而,这种排序依赖意味着尽管trainable = False,模型中的某种状态正在发生变化。导致这种情况的模型内部发生了什么?

【问题讨论】:

  • 即使在使用 numpy.random.seed() 设置种子后,这是否可以重现?
  • 没试过设置种子,那不就是保证输入数据的顺序一致吗?我的理解是在这里订购不重要,但我显然遗漏了一些东西
  • 我的建议主要是测试你的假设。神经网络的设计很嘈杂,因此总是存在可重现的案例。
  • 这个主意不错,会试试的
  • 你试过我的答案了吗?

标签: machine-learning neural-network keras theano keras-2


【解决方案1】:

这是一个非常有趣的现象。这可能是由于大多数神经网络包都使用float32 精度这一事实 - 这为您提供了高达 5-7 个小数点的精度。 Here你可以阅读详细说明。

【讨论】:

    猜你喜欢
    • 2021-01-15
    • 1970-01-01
    • 2017-12-25
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多