我正在尝试为乳腺癌数据集创建一个用于二进制分类的神经网络:
https://www.kaggle.com/uciml/breast-cancer-wisconsin-data
我的神经网络由3层组成(不包括输入层):
第一层:6个具有tanh激活的神经元。
第二层:6个具有tanh激活的神经元。
最后一层:1个具有乙状结肠激活的神经元。
不幸的是,在训练示例中,我的准确率仅为44%,在测试示例中,我的准确率仅为23%。
这是我的python代码:
std::swap
感谢您的帮助:)
答案 0 :(得分:2)
我认为您的反向传播存在问题(我进行了快速测试,并在Tensorflow上尝试了您的模型,该模型在训练和测试数据上均达到了约92%的准确性)。
我对您的代码进行了以下修改:
dz3 = a3 - y
d3 = np.multiply(dz3, dsigmoid(a3))
您的函数预测也仅返回一个数字,因此它应返回示例数量与之相同的数字
y_predict = np.zeros((m, 1))
for i in range(m):
y_predict = 1 if a3[i, 0] > 0.5 else 0
return y_predict
我将此部分更改为
y_predict[a3[:,0] > 0.5] = 1
return y_predict
我进行了2000次训练,并将学习率提高到1(a = 1)