我正在阅读有关宏的文档,并在“阻止:为什么宏”部分下遇到了以下内容。使用宏的理由如下:
宏是必需的,因为它们在解析代码时执行,因此,宏允许程序员在运行完整程序之前生成并包含自定义代码的片段
这让我想知道为什么有人想要使用“在运行完整程序之前生成并包含自定义代码的片段”。有人可以提供有关为什么这对宏有益和/或其他良好用例的上下文吗?
我试图将数字 10^19 保存在 Julia 的变量中。
我知道它正在溢出,但我认为做类似的事情BigInt(10^19)
或Int128(10^19)
会解决问题,但事实并非如此。
有什么想法吗?
我有一个文本文件,我想在其中附加一些字符串而不覆盖现有数据。我怎样才能在 Julia 中实现这一目标?
我正在尝试在损失函数中使用分位数进行训练!(对于某些稳健性,例如最少修剪的平方),但它会改变数组并且 Zygote 会抛出一个错误Mutating arrays is not supported
,来自sort!
. 下面是一个简单的例子(内容当然没有意义):
using Flux, StatsBase
xdata = randn(2, 100)
ydata = randn(100)
model = Chain(Dense(2,10), Dense(10, 1))
function trimmedLoss(x,y; trimFrac=0.f05)
yhat = model(x)
absRes = abs.(yhat .- y) |> vec
trimVal = quantile(absRes, 1.f0-trimFrac)
s = sum(ifelse.(absRes .> trimVal, 0.f0 , absRes ))/(length(absRes)*(1.f0-trimFrac))
#s = sum(absRes)/length(absRes) # using this and commenting out the two above works (no surprise)
end
println(trimmedLoss(xdata, ydata)) #works ok
Flux.train!(trimmedLoss, params(model), zip([xdata], [ydata]), ADAM())
println(trimmedLoss(xdata, ydata)) …
Run Code Online (Sandbox Code Playgroud) 我想在 Flux 中使用优化器,如 Julia Academy使用 Flux.jlSGD
进行深度学习的教程中所示。这是他们提供的笔记本,其中使用 SGD 优化器:
opt = SGD(params(model))\n
Run Code Online (Sandbox Code Playgroud)\n\n然而,当我运行 SGD 时,我得到:
\n\nERROR: UndefVarError: SGD not defined\n
Run Code Online (Sandbox Code Playgroud)\n\n这是我运行时的输出?SGD
:
search: SGD AMSGrad Signed signed Unsigned unsigned sigmoid issetgid logsigmoid StringIndexError isassigned significand\n\nCouldn\'t find SGD\nPerhaps you meant SGD, Set, Sys, GC, Some, sec, sin, sum, LSTM, csc, esc, isa, ans, abs, cis, cos, eps, ARGS, Pkg, GRU, RNN, cpu, elu, f32, f64, gpu, \xcf\x83, !, !=, !== or …
Run Code Online (Sandbox Code Playgroud) 我想知道是否有任何关于在函数中定义函数是推荐还是避免在 Julia 中的指导。
我阅读了Julia Docs 中的函数部分,但没有看到提到这个主题。
旁注是有人向我提到这是 Python 中的建议行为,这就是在我脑海中引发这个问题的原因。
我试图在 Julia 中找到特定包的路径。我不知道它到底在哪里,我想使用适当的路径。Julia 中有执行此操作的函数吗?
鉴于我有一些结构:
julia> struct Car
wheels::Int64
engine::Int64
model::String
end
Run Code Online (Sandbox Code Playgroud)
有没有办法创建一个新的结构并继承上面Car
定义的属性(类似于面向对象编程中的类继承)?
有没有一种快速简单的方法可以从 REPL 或 Julia 脚本中创建新文件(无论是 txt 还是 .jl 文件)?我通常会做一些事情,比如使用终端中的 touch 命令(即使它旨在更新文件上次编辑时的时间戳)。
看起来我可以open
在“创建”模式下使用该函数,但我宁愿不使用该语法。
我正在新创建的环境中通过 VS Code 中的 REPL 下载 Flux.jl。当我通过包管理器添加包时,出现了一堆错误,如下所示:
\n\xe2\x94\x8c Error: curl_easy_setopt: 48\n\xe2\x94\x94 @ Downloads.Curl /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/utils.jl:36\n\xe2\x94\x8c Error: curl_easy_setopt: 48\n\xe2\x94\x94 @ Downloads.Curl /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/utils.jl:36\n\xe2\x94\x94 @ Downloads.Curl /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/utils.jl:36\n
Run Code Online (Sandbox Code Playgroud)\n这种情况可能发生了 100 次,但软件包看起来仍然安装正确。我还需要在这里做些什么吗?
\n