这可能是我的一个非常简单的错误,但我似乎无法弄清楚。我正在尝试构建一个可以学习数字序列的 RNN。示例数据集(每行代表一个数据点)
0 0 0 1 3
0 0 0 0 0
0 0 1 3 0
...
我主要关注这个例子:https ://www.juliabloggers.com/a-basic-rnn/
我的数据和示例中的数据被读取为 Array{Array{Float64,1},1}。这是我的一些代码
function eval_model(model, x)
out = model.(x)[end]
Flux.reset!(model)
return out
end
m = Chain(GRU(1, 40), Dense(40, 1, σ))
loss(y) = Flux.crossentropy(eval_model(m, y), y)
ps = Flux.params(m)
opt = Flux.ADAM()
@epochs 100 Flux.train!(loss, ps, data, opt)
输出:
MethodError: no method matching loss(::Float64, ::Float64, ::Float64, ::Float64, ::Float64)
Closest candidates are:
loss(::Any, ::Any) at In[4]:2
损失函数正在读取序列中的每个数字作为损失函数的单独输入(我尝试过其他序列长度,错误是相同的,但它是“MethodError:没有方法匹配损失((序列长度)*: :Float64)”。
在我正在处理的示例中,这不是问题。我可以从头开始构建训练程序,但宁愿将东西传递给 Flux。