【发布时间】:2018-10-01 07:57:34
【问题描述】:
我正在用 Python 构建一个简单的自动更正神经网络。以下是完整代码:Code&Data
训练数据只是一个单词列表(包含在上面的链接中)例如:
yellow
woods
four
现在,每个单词都被分配了一个唯一的编号,例如:
yellow => 0.101
然后将输入单词中的一个字符替换为随机字符会产生拼写错误。 因此,每个单词会产生大约 4-5 个拼写错误,例如:
yelbow => 0.101
ytllow => 0.101
然后我提供拼写错误列表及其正确的唯一数字,以使其学习模式。
如果解释不好,请看上面的代码。
这是训练逻辑:
syn0 = 2*np.random.random((x_dim, hidden_dim)) - 1
syn1 = 2*np.random.random((hidden_dim, x_dim)) - 1
for j in range(20000):
err = 0
input_arr, output_arr = shuffle(input_arr, output_arr)
for i in range(len(input_arr)):
X = input_arr[i]
y = output_arr[i]
l0 = X
l1 = sigmoid(np.dot(l0, syn0))
l2 = sigmoid(np.dot(l1, syn1))
l2_err = y - l2
l2_delta = l2_err * sigmoid(l2, deriv=True)
l1_err = l2_delta.dot(syn1.T)
l1_delta = l1_err * sigmoid(l1, deriv=True)
syn1 += l1.T.dot(l2_delta) * alpha
syn0 += l0.T.dot(l1_delta) * alpha
err += np.mean(np.abs(l2_err))
if(j % 1000) == 0:
print str(j) + ", Error:" + str(err)
我的问题是它正确地学习了大约 10-15 个单词,错误减少到 0.009 以下,但是对于更多的单词,它无法学习它们并且错误保持在 0.4 左右
请帮忙。
【问题讨论】:
标签: python numpy machine-learning neural-network