【发布时间】:2020-11-26 13:50:28
【问题描述】:
我一直在测试构建 nn 模型(tensorflow、keras)的不同方法,我发现在编译模型期间度量标准有些奇怪。
我检查了两种方法:
model.compile(
loss=keras.losses.CategoricalCrossentropy(),
optimizer=keras.optimizers.Adam(),
metrics=keras.metrics.Accuracy()
)
和
model.compile(
loss=keras.losses.CategoricalCrossentropy(),
optimizer=keras.optimizers.Adam(),
metrics=["accuracy"]
)
第一种方法的结果:
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>
第二种方法的结果:
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>
这很奇怪,我以为“准确度”与keras.metrics.Accuracy()完全一样。 至少在参数“损失”和“优化器”中是这种情况,例如“adam”与 keras.optimizers.Adam() 相同。 有谁知道为什么这很奇怪或者我错过了什么?
编辑:
在 [] 中使用度量的方法也会产生奇怪的结果:
model.compile(
loss=keras.losses.CategoricalCrossentropy(),
optimizer=keras.optimizers.Adam(),
metrics=[keras.metrics.Accuracy()]
)
Epoch 1/2
1875/1875 - 2s - loss: 0.2996 - accuracy: 0.0000e+00
Epoch 2/2
1875/1875 - 2s - loss: 0.1431 - accuracy: 1.8333e-05
<tensorflow.python.keras.callbacks.History at 0x7f9bfd1045f8>
【问题讨论】:
-
试试
metrics=[keras.metrics.categorical_accuracy]
标签: python tensorflow machine-learning keras deep-learning