BoundsError в Julia MXNet при использовании небольшого размера пакета
Я пытаюсь воспроизвести некоторый код Python MXNet в Julia 0.6.0, и я получаю BoundsError, если я пытаюсь использовать размер пакета, который меньше, чем размер вывода. Если в игрушечном примере я использую пакет большего размера, все работает правильно, и сеть сходится к правильному решению, но в моем приложении выходной размер велик, так что это не практично.
Вот пример линейной регрессии, который дает эту ошибку:
using MXNet
net = mx.Variable(:data)
net = mx.FullyConnected(net, name=:fc0, num_hidden=5)
net = mx.LinearRegressionOutput(net, name=:output)
mod = mx.FeedForward(net, context=mx.cpu(0))
batch_size = 4 # works for batch_size > 4
A = randn(5,100)
train_in = randn(100,1000)
train_out = A*train_in + .1*randn(5,1000)
train_provider = mx.ArrayDataProvider(:data=>train_in,
:output_label=>train_out,
shuffle=true,
batch_size=batch_size)
optimizer = mx.SGD(lr=0.001, momentum=0.9, weight_decay=0.00001)
mx.fit(mod, optimizer, train_provider)
Это производит
INFO: Start training on MXNet.mx.Context[CPU0]
INFO: Initializing parameters...
INFO: Creating KVStore...
INFO: TempSpace: Total 0 MB allocated on CPU0
INFO: Start training...
ERROR: LoadError: BoundsError: attempt to access 5×4 Array{Float32,2} at index [Base.Slice(Base.OneTo(5)), 5]
Если я увеличу размер пакета до 5 или более, он будет работать как положено. Что мне не хватает?
1 ответ
Вы можете отслеживать разрешение этой ошибки здесь:
https://github.com/dmlc/MXNet.jl/issues/264
Я проверил это две недели назад, и, к сожалению, это все еще происходит.