我一直在测试构建神经网络模型(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)