【发布时间】:2022-01-22 07:40:32
【问题描述】:
我正在尝试用 3 个类训练分类器 CNN。我正在尝试解决我的损失函数。我正在测试tf.keras.losses.CategoricalCrossentropy() 和tf.keras.losses.categorical_crossentropy().numpy()。我正在关注the tensorflow documentation 的独立使用指南。
我认为我没有得到应有的正确输出。
当我输入y_true=[0.,1.,0.] 和y_pred=[1.,0.,0.] 时,我预计会丢失无穷大(程序中的输出:nan)。但是,我收到的输出是16.118095。当分类与标签(即y_true=[1.,0.,0.] 和y_pred=[1.,0.,0.])对齐时,输出为1.192093e-07,即使我期望一个完美的0。
我真的对这种行为感到困惑。同样,对于 1 个长向量情况:y_true=[1.] 和 y_pred=[0.],损失为 16.118095,同样,当分类对齐 y_true=[1.] 和 y_pred=[1.] 时,我收到 1.192093e-07 和 y_true=[0.] 和 y_pred=[0.]结果是nan。
我认为总结我得到的结果、我期望的结果以及我输入到损失函数中的值会使事情更具可读性,所以我将在下面这样做:
y_true |
y_pred |
Actual Output | What I Expect |
|---|---|---|---|
[0.,1.,0.] |
[1.,0.,0.] |
16.118095 |
nan or infinity |
[1.,0.,0.] |
[1.,0.,0.] |
1.192093e-07 | True 0 |
[0.,1.] |
[1.,0.] |
16.118095 |
nan or infinity |
[1.,0.] |
[1.,0.] |
1.192093e-07 | True 0 |
[1.] |
[0] |
nan or infinity |
nan or infinity |
[1.] |
[1.] |
1.192093e-07 | True 0 |
如果这是一个微不足道的问题,我很抱歉,但我真的不知道为什么我会得到我得到的结果。我认为出了点问题,因为我只有 16 岁而不是无穷大,但如果没有任何问题,我希望得到保证。如果我错了,我非常感谢您的指正。
【问题讨论】:
标签: python tensorflow keras deep-learning loss-function