I am trying to build a neural network that has about 200 Boolean features as inputs and I would like to train it against a regression output (so the y
is continuous). I tried to setup the network like so
using Flux
model = Flux.Chain(
Dense(14*16+4, 64, relu),
Dense(64, 16, relu),
Dense(16, 1, relu));
so I got 3 dense layers all activated by relu
and now to test my understanding I just ran the x
through the model
x = rand(Bool, 14*16+4)
model(x)
so far so good but the below gives error
y = 100
loss(x,y) = (model(x) - y)^2
Flux.train!(loss, [(x,y)])
# Flux.train!(loss, [(x,y)], ADAM(...)) # this didn't work either
and the error is
MethodError: no method matching train!(::typeof(loss), ::Array{Tuple{Array{Bool,2},Array{Float64,1}},1})
Closest candidates are:
train!(::Any, ::Any, !Matched::Any; cb) at /home/jrun/.julia/packages/Flux/UHjNa/src/optimise/train.jl:56Stacktrace:
[1] top-level scope at In[106]:1
This is after having browsed through the model zoo and I can’t seem to figure out how to do this simple neural network. I am doing a simple prototype of reinforcement learning, so being able to update the model is also important so would appreciate pointers to Flux.train!
and Flux.update!
and how to make them work