[英]Simple neural network in Julia
我嘗試將本教程中的python代碼重寫為julia,並得到意外的結果- [0.5; 0.5; 0.5; 0.5]
[0.5; 0.5; 0.5; 0.5]
[0.5; 0.5; 0.5; 0.5]
我一遍又一遍地看那條線,但看不到差異。
Python代碼:
from numpy import exp, array, random, dot
training_set_inputs = array([[0, 0, 1], [1, 1, 1], [1, 0, 1], [0, 1, 1]])
training_set_outputs = array([[0, 1, 1, 0]]).T
random.seed(1)
synaptic_weights = 2 * random.random((3, 1)) - 1
for iteration in xrange(10000):
output = 1 / (1 + exp(-(dot(training_set_inputs, synaptic_weights))))
synaptic_weights += dot(training_set_inputs.T, (training_set_outputs - output) * output * (1 - output))
print 1 / (1 + exp(-(dot(array([1, 0, 0]), synaptic_weights))))
我的茱莉亞代碼:
function activate(x)
return 1./(1+exp(-x))
end
function g_activate(x)
return x.*(1-x)
end
function test(iter)
Input = [0 0 1;0 1 1;1 0 1;1 1 1]
TInput = transpose(Input)
Test = [0, 1, 1, 0]
Weights = 2 * rand(3, 1) - 1
for i in 1:iter
output = activate(Input*Weights)
error = Test - output
delta = error.*g_activate(output)
Weights += TInput*delta
end
println(activate(Input*Weights))
end
我做錯了什么以及如何在Julia中使用更慣用的方式
您在Julia代碼中使用了錯誤的輸入數據。 匹配Python示例
Input = [0 0 1;0 1 1;1 0 1;1 1 1]
應該
Input = [0 0 1;1 1 1;1 0 1;0 1 1]
那就是我得到正確輸入的結果:
julia> test(10000)
[0.00966854; 0.992117; 0.993589; 0.00786553]
如果我正在使用training_set_inputs = array([[0, 0, 1], [0, 1, 1], [1, 0, 1], [1, 1, 1]])
運行Python代碼得到[ 0.5]
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.