Hi,

I'm an R user trying to learn Julia. I got hold of some code from the Knet 
package that I was playing around with. My goal is to set values to zero in 
a loop based on a logical expression, but I cannot figure out how the 
indexing works. Any help would be appreciated (the problem lies in 
w[1,(w[1].<z)&(w[1].>-(z))] = 0):

using Knet
predict(w,x) = w[1]*x .+ w[2]
lambda = 2
z = Array{Float64}(1,13)
loss(w,x,y) = sumabs2(y - predict(w,x)) / size(y,2)
lossgradient = grad(loss)
function train(w, data; lr=.1)
    for (x,y) in data
        dw = lossgradient(w, x, y)
        z[:] = lr * lambda
        w[1] -= lr * dw[1]
        w[2] -= lr * dw[2]
        w[1,(w[1].<z)&(w[1].>-(z))] = 0
    end
    return w
end
url = 
"https://archive.ics.uci.edu/ml/machine-learning-databases/housing/housing.data";
rawdata = readdlm(download(url))
x = rawdata[:,1:13]'
x = (x .- mean(x,2)) ./ std(x,2)
y = rawdata[:,14:14]'
w = Any[ 0.1*randn(1,13), 0 ]
niter = 25
lossest = zeros(niter)
for i=1:niter; train(w, [(x,y)]); lossest[i]=loss(w,x,y); end


Best regards,

Patrik

Reply via email to