我正在研究神经网络。我正在探索使用更大的数据集进行培训的效果。目前我的结果很糟糕。有什么建议?我不想使用除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)
答案 0 :(得分:1)
我认为主要问题在于输入 - 在你的情况下,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))
通过这些改变,网络可以产生良好的效果。