为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 Keras/tensorflow 的 sigmoid 和交叉熵精度低?

为什么 Keras/tensorflow 的 sigmoid 和交叉熵精度低?

一只甜甜圈 2021-06-07 05:26:56
我有以下简单的神经网络(只有 1 个神经元)来测试Keras的sigmoid激活和计算精度binary_crossentropy:model = Sequential()model.add(Dense(1, input_dim=1, activation='sigmoid'))model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])为了简化测试,我手动设置唯一权重为1,偏置为0,然后用2点训练集评估模型{(-a, 0), (a, 1)},即y = numpy.array([0, 1])for a in range(40):    x = numpy.array([-a, a])    keras_ce[a] = model.evaluate(x, y)[0] # cross-entropy computed by keras/tensorflow    my_ce[a] = np.log(1+exp(-a)) # My own computation我的问题: 我发现由 Keras keras_ce/Tensorflow 计算的二元交叉熵 ( ) 达到了大约1.09e-7什么时候的下限a。16,如下图(蓝线)。随着“a”不断增长,它不会进一步减少。这是为什么?该神经网络只有 1 个神经元,其权重设置为 1,偏差为 0。使用 2 点训练集{(-a, 0), (a, 1)},binary_crossentropy只需-1/2 [ log(1 - 1/(1+exp(a)) ) + log( 1/(1+exp(-a)) ) ] = log(1+exp(-a))所以交叉熵应该随着a增加而减少,如上面的橙色('my')所示。是否有一些 Keras/Tensorflow/Python 设置我可以更改以提高其精度?还是我在某个地方弄错了?我很感激任何建议/评论/答案。
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 223 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信