【发布时间】:2018-10-05 17:09:55
【问题描述】:
为了使案例简单直观,我将使用二进制(0和1)分类进行说明。
损失函数
loss = np.multiply(np.log(predY), Y) + np.multiply((1 - Y), np.log(1 - predY)) #cross entropy
cost = -np.sum(loss)/m #num of examples in batch is m
Y的概率
predY 是使用 sigmoid 计算的,logits 可以被认为是到达分类步骤之前神经网络的结果
predY = sigmoid(logits) #binary case
def sigmoid(X):
return 1/(1 + np.exp(-X))
问题
假设我们正在运行一个前馈网络。
输入:[3, 5]:3 是示例数,5 是特征大小(制造数据)
隐藏单元数:100(只有 1 个隐藏层)
迭代次数:10000
这样的安排被设置为过拟合。当它过拟合时,我们可以完美地预测训练样本的概率;换句话说,sigmoid 输出 1 或 0,精确的数字,因为指数会爆炸。如果是这种情况,我们将有 np.log(0)undefined。您通常如何处理这个问题?
【问题讨论】:
-
对于二元分类,
Y是否只包含值 0 和 1? -
@WarrenWeckesser 正确。
标签: numpy machine-learning deep-learning