numpy - 神经网络不良结果

标签 numpy machine-learning neural-network backpropagation

我正在研究神经网络。我正在探索使用更大的数据集进行训练的效果。目前我得到的结果很糟糕。有什么建议么?我不想使用除 numpy 之外的任何库,请保持简单。我是一名 GCSE 学生,所以我对微积分也不太了解。 为了改善我的网络,我添加了: 第二个隐藏层, 更多纪元, 不同的激活函数(reLU 而不是 sigmoid), 每层更多隐藏节点 ...但我的结果仍然很糟糕!

import numpy as np

x = np.array([
    [0000],
    [0001],
    [0010],
    [0100],
    [1000],
    [0011],
    [0110],
    [1100],
    [1001],
    [1001],
    [1110],
    [1101],
    [1011],
    [1111],
    [1111],
    [1111],
    [1111]
    ])

y = np.array([
    [0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1]
    ]).T

w = np.random.random((1, 1))
w2 = np.random.random((1, 1))
w3 = np.random.random((1, 1))

for j in xrange(500000):
    a2 = 1/(1 + np.exp(-(np.dot(x, w))))
    a3 = 1/(1 + np.exp(-(np.dot(a2, w2))))
    a4 = 1/(1 + np.exp(-(np.dot(a3, w3))))
    a4delta = (y - a4) * (a4 * (1 - a4))
    a3delta = a4delta.dot(w3.T) * (a3 * (1 - a3))
    a2delta = a3delta.dot(w2.T) * (a2 * (1 - a2))
    w3 += a3.T.dot(a4delta)
    w2 += a2.T.dot(a3delta)
    w += x.T.dot(a2delta)
print(a4)

最佳答案

我认为主要问题在于输入 - 在你的情况下 x 是一个具有一个特征的向量;我不认为模型可以从中学习。为什么不制作一个具有 4 个特征的向量?

x = np.array([
[0,0,0,0],
[0,0,0,1],
[0,0,1,0],
[0,1,0,0],
[1,0,0,0],
[0,0,1,1],
[0,1,1,0],
[1,1,0,0],
[1,0,0,1],
[1,0,0,1],
[1,1,1,0],
[1,1,0,1],
[1,0,1,1],
[1,1,1,1],
[1,1,1,1],
[1,1,1,1],
[1,1,1,1]
])

同时更改权重形状:

w = np.random.random((4, 4))
w2 = np.random.random((4, 4))
w3 = np.random.random((4, 1))

通过这些更改,网络给出了良好的结果。

关于numpy - 神经网络不良结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45391164/

相关文章:

python - 如何确定 Keras 上的卷积神经网络预测的二进制类别?

mobile - 移动设备中的深度学习人脸检测

python - 如何对列表中的二维数组对求和

python - mac安装opencv-python时出现OSError : [Errno 1] Operation not permitted

python - 使用 numpy 过滤值

python - 比较 Pandas Dataframe 的列名

python - 在 Python 中使用 2D 掩码从 (x,y) 字段高效选择元素

machine-learning - 信息检索 (IR)、数据挖掘、机器学习 (ML)

python - 使用 Tensorflow CNN 分类器获取精度和召回值

neural-network - BigBird,或稀疏自注意力 : How to implement a sparse matrix?