小编Pav*_*v3k的帖子

keras.metrics.Accuracy() 和“准确度”之间的区别

我一直在测试构建神经网络模型(tensorflow、keras)的不同方法,我发现在编译模型期间度量有一些奇怪的地方。

我检查了两种方法:

    model.compile(
        loss=keras.losses.CategoricalCrossentropy(),
        optimizer=keras.optimizers.Adam(),
        metrics=keras.metrics.Accuracy()
    )
Run Code Online (Sandbox Code Playgroud)

    model.compile(
        loss=keras.losses.CategoricalCrossentropy(),
        optimizer=keras.optimizers.Adam(),
        metrics=["accuracy"]
    )

Run Code Online (Sandbox Code Playgroud)

第一种方法的结果:

    Epoch 1/2
    1875/1875 - 2s - loss: 0.0494 - accuracy: 0.0020
    Epoch 2/2
    1875/1875 - 2s - loss: 0.0401 - accuracy: 0.0030

    <tensorflow.python.keras.callbacks.History at 0x7f9c00bc06d8>
Run Code Online (Sandbox Code Playgroud)

第二种方法的结果:

    Epoch 1/2
    1875/1875 - 2s - loss: 0.0368 - accuracy: 0.9884
    Epoch 2/2
    1875/1875 - 2s - loss: 0.0303 - accuracy: 0.9913

    <tensorflow.python.keras.callbacks.History at 0x7f9bfd7d35c0>
Run Code Online (Sandbox Code Playgroud)

这很奇怪,我认为“准确度”与keras.metrics.Accuracy()完全相同。至少在参数“loss”和“optimizer”中是这样,例如“adam”与keras.optimizers.Adam()相同。有谁知道为什么这这么奇怪或者我错过了什么?

编辑:

[] 中的度量方法也给出了奇怪的结果:

    model.compile(
        loss=keras.losses.CategoricalCrossentropy(),
        optimizer=keras.optimizers.Adam(),
        metrics=[keras.metrics.Accuracy()]
    )

    Epoch 1/2
    1875/1875 - 2s - …
Run Code Online (Sandbox Code Playgroud)

python machine-learning deep-learning keras tensorflow

16
推荐指数
2
解决办法
7343
查看次数