tensorflow - 使用带有 keras 的自定义损失函数,准确度值不正确
问题描述
我正在尝试为tf.keras
考虑输入特征的二进制分类问题实现自定义损失函数,这是我当前的版本:
def custom_loss(data, y_pred):
y_true = data[:, -1]
y_true = tf.reshape(y_true, [-1, 1])
feature_1 = data[:,1]
feature_2 = data[:,2]
loss_bce = tf.maximum(y_pred,0)-y_pred * y_true + tf.math.log(1+tf.math.exp((-1)*tf.math.abs(y_pred)))
return tf.reduce_mean(loss_bce, axis=-1) + 'terms with features'
history = model.fit(X_train, np.append(X_train, y_train, axis=1), epochs=5, batch_size=100, shuffle=False)
它完美地符合并运行良好的二进制交叉熵项,但是,准确性不正确,如下所示:
Epoch 1/5
823/823 [==============================] - 24s 29ms/step - loss: 0.7028 - accuracy: 0.1580 - val_loss: 0.6859 - val_accuracy: 0.1587
Epoch 2/5
823/823 [==============================] - 23s 29ms/step - loss: 0.6853 - accuracy: 0.1590 - val_loss: 0.6842 - val_accuracy: 0.1590
Epoch 3/5
823/823 [==============================] - 24s 29ms/step - loss: 0.6833 - accuracy: 0.1595 - val_loss: 0.6881 - val_accuracy: 0.1566
Epoch 4/5
823/823 [==============================] - 24s 29ms/step - loss: 0.6825 - accuracy: 0.1598 - val_loss: 0.6879 - val_accuracy: 0.1567
Epoch 5/5
823/823 [==============================] - 24s 29ms/step - loss: 0.6821 - accuracy: 0.1599 - val_loss: 0.6894 - val_accuracy: 0.1560
我想知道为什么损失看起来合理但准确性不合理?!
解决方案
推荐阅读
- java - 为什么我的 h2 数据库找不到医生和患者 ID?
- r - How to superimpose bargraphs on top of each other
- sql - 与同一台机器上的数据库的 JDBC 连接
- swiftui - 从 ImagePicker 导入的图像被拉伸
- c# - 如何在 Net Core 中覆盖 SaveChangesAsync?
- javascript - Jquery在彼此之上而不是在表格长度上附加数据堆栈
- excel - VBA在列中的单元格中插入公式以在满足多个IF AND条件时进行计算
- python - 无法在烧瓶中呈现输出。在列表列表中返回烧瓶 json.dumps 的异常
- c++ - A if A else B 但只评估 A 一次
- java - 缓慢的应用程序,频繁的 JVM 挂起,单 CPU 设置和 Java 12+