【问题标题】:In Julia Flux, I keep getting the error LoadError: Mutating arrays is not supported, but I don't see where I am mutating an array在 Julia Flux 中,我不断收到错误 LoadError: Mutating arrays is not supported,但我看不到我在哪里改变数组
【发布时间】:2021-04-22 01:34:54
【问题描述】:

我是 Julia 的新手,由于某种原因,我无法让这个非常简单的代码工作。无论我尝试什么,我都会收到错误LoadError: Mutating arrays is not supported。我知道当我在优化过程中对数组进行变异以使代码不再可区分时,会发生此错误。我显然对 Julia 的了解不够,看不出我在做什么。

如果有帮助,错误似乎发生在for d in dataset 行中。

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

【问题讨论】:

  • 您的代码运行,using Flux: update!。也许你有旧版本的东西?尝试] activate --temp 然后add Flux Zygote 获取所有内容的新副本。
  • 好的,如果它与包相关,我应该提到我正在使用 Julia 扩展通过 VSCode 上的 REPL 运行它。这可能与它有关吗?我会尝试在终端中运行代码,看看是否有任何变化。

标签: julia flux.jl


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    相关资源
    最近更新 更多