在Julia Flux中,我不断得到错误LoadError:不支持变异数组,但我不';我看不出我在哪里变异数组

在Julia Flux中,我不断得到错误LoadError:不支持变异数组,但我不';我看不出我在哪里变异数组,julia,julia-flux,Julia,Julia Flux,我是Julia的新手,出于某种原因,我无法让这个非常简单的代码正常工作。无论我做什么尝试,都会得到错误LoadError:不支持变异数组。我知道,当我在优化过程中对数组进行变异,使代码不再可微时,就会发生此错误。很明显,我对朱莉娅的理解不够,看不出我在做什么 如果有帮助,则错误似乎发生在数据集中d的行中 using Statistics using Flux: onehotbatch, onehot, onecold, crossentropy, throttle using Flux usin

我是Julia的新手,出于某种原因,我无法让这个非常简单的代码正常工作。无论我做什么尝试,都会得到错误
LoadError:不支持变异数组
。我知道,当我在优化过程中对数组进行变异,使代码不再可微时,就会发生此错误。很明显,我对朱莉娅的理解不够,看不出我在做什么

如果有帮助,则错误似乎发生在数据集中d的
行中

using Statistics
using Flux: onehotbatch, onehot, onecold, crossentropy, throttle
using Flux
using Base.Iterators:repeated
using Plots:heatmap
using ImageView:imshow

images = Flux.Data.MNIST.images()[1:10]
labels = Flux.Data.MNIST.labels()[1:10]

heatmap(images[4], color=:grays, aspect_ratio=1)

X = float.(reshape.(images, :))
encode(x) = onehot(x, 0:9)
Y = encode.(labels)

m = Chain(Dense(28^2, 32, relu), Dense(32, 10), softmax)

loss(x, y) = crossentropy(m(x), y)
opt = ADAM()

accuracy(x, y) = mean(onecold(m(x)) .== onecold(y))

dataset = zip(X, Y)

print(size(X))

evalcb = () -> @show(loss(X, Y))

print("Training...")
# Flux.train!(loss, params(m), dataset, opt, cb=throttle(evalcb, 5));
for d in dataset
    print(d[2])
    gs = gradient(params(m)) do
        l = loss(d...)
    end
    update!(opt, params(m), gs)
end

看起来我确实有一个旧版本的Flux(但没有那么旧)。我必须卸载并重新安装Julia才能安装新版本的Flux。

您的代码运行时,使用Flux:update。也许你有一个旧版本的东西?尝试
]激活--temp
,然后
添加Flux-Zygote
以获得所有内容的新副本。好的,如果它与包相关,我应该提到我正在使用Julia扩展通过REPL on VSCode运行此操作。这可能与此有关吗?我将尝试在终端中运行代码,看看是否有任何更改。