我正在使用TensorFlow开发一个网络,该网络生成一个向量,然后通过softmax处理作为我的输出。
我在测试过程中发现了一个奇怪的现象:经过softmax处理的向量在除了一个坐标之外的所有坐标上都有零值。
根据softmax的定义和指数函数,我认为这种情况不应该发生。这是错误吗?
编辑:我的向量大小为120×160 = 192000。所有值都是float32类型
回答:
这可能不是错误。你需要检查输入到softmax的向量。很可能是这个向量中有很多非常负的值和一个非常正的值。这会导致softmax输出向量中除了一个值为1之外,其余都是零。
你正确地指出,由于指数函数,softmax的分子不应该有零值。然而,由于浮点精度的原因,分子可能是一个非常小的值,比如exp(-50000),实际上等于零。