我自学了机器学习,最近开始深入研究 Julia 机器学习生态系统。
skimage
经验,我想将 Julia ML 库(Flux/JuliaImages)与它的同行进行基准测试,看看它真正执行CV(任何)任务的速度有多快或多慢, 并决定是否我应该转而使用 Julia。
我知道如何使用这样的timeit
模块来获取在 python 中执行函数所花费的时间:
#Loading an Image using OpenCV
s = """\
img = cv2.imread('sample_image.png', 1)
"""
setup = """\
import timeit
"""
print(str(round((timeit.timeit(stmt = s, setup = setup, number = 1))*1000, 2)) + " ms")
#printing the time taken in ms rounded to 2 digits
Run Code Online (Sandbox Code Playgroud)
如何使用适当的库(在本例中为JuliaImages
)比较在 Julia 中执行相同任务的函数的执行时间。
Julia 是否为 …
我有 Julia 1.1
我想更新到最新版本的包,在这种情况下,Flux 8.3.0
根据Flux.jl 的文档
当我打字时
Pkg.status("Flux")
Run Code Online (Sandbox Code Playgroud)
我得到
Status `~/.julia/environments/v1.1/Project.toml`
[587475ba] Flux v0.6.10
Run Code Online (Sandbox Code Playgroud)
我也试过:
Pkg.add("Flux")
Pkg.update("Flux")
Run Code Online (Sandbox Code Playgroud)
但它不会改变版本
编辑 我在 Bogumi 发表评论后尝试了以下命令?神滑雪
Pkg.update()
Run Code Online (Sandbox Code Playgroud)
给我
Updating registry at `~/.julia/registries/General`
? Warning: Some registries failed to update:
? — `~/.julia/registries/General` — registry dirty
? @ Pkg.Types /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/Pkg/src/Types.jl:1269
Updating git-repo `https://github.com/MikeInnes/IRTools.jl.git`
Updating git-repo `https://github.com/JuliaInterop/RCall.jl.git`
Updating git-repo `https://github.com/FluxML/Zygote.jl.git`
Updating git-repo `https://github.com/VMLS-book/VMLS.jl`
Resolving package versions...
ERROR: Unsatisfiable requirements detected for package ZygoteRules [700de1a5]:
ZygoteRules [700de1a5] log:
??ZygoteRules [700de1a5] has no known versions! …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在损失函数中使用分位数进行训练!(对于某些稳健性,例如最少修剪的平方),但它会改变数组并且 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) 我正在尝试将 Flux 添加到 Julia 中的包存储库中,但出现错误。
我输入了 pkg> add Flux 但 Julia REPL 返回“5 个依赖项错误”。
他们是:
要查看完整的报告,请运行import Pkg; Pkg.precompile()
或加载包,我运行了命令预编译,这就是我得到的。
ERROR: The following 1 direct dependency failed to precompile:
Flux [587475ba-b771-5e3f-ad9e-33799f191a9c]
Failed to precompile Flux [587475ba-b771-5e3f-ad9e-33799f191a9c] to
C:\Users\Kostas\.julia\compiled\v1.6\Flux\jl_3C4D.tmp.
ERROR: LoadError: could not load library "C:\Users\Kostas\.julia\juliaup\julia-
1.6.4+0~x64\bin\LLVM.dll"
The specified module could not be found.
Stacktrace:
[1] dlopen
@ .\libdl.jl:114 [inlined]
[2] #dlopen#2
@ .\libdl.jl:110 [inlined]
[3] dlopen (repeats 2 times)
@ .\libdl.jl:110 [inlined]
[4] loaded_llvm()
@ …
Run Code Online (Sandbox Code Playgroud) 在以下示例中(从Flux project.toml复制的代码) [extras] 和 [targets] 部分的用途是什么?
[compat]
Adapt = "3.0"
ArrayInterface = "3.1, 4, 5, 6"
CUDA = "3"
.
.
.
Zygote = "0.6.34"
julia = "1.6"
[extras]
ComponentArrays = "b0b7db55-cfe3-40fc-9ded-d10e2dbeff66"
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
.
.
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
[targets]
test = ["Test", "Documenter", "IterTools", "LinearAlgebra", "FillArrays", "ComponentArrays"]
Run Code Online (Sandbox Code Playgroud) 我在 Julia 中使用 Flux 库。如何将 Inception 神经网络导入其中?
我已经看到可以执行以下操作Mocha.jl
来导入预先训练好的网络。
using HDF5
h5open("model/bvlc_reference_caffenet.hdf5", "r") do h5
load_network(h5, net)
end
init(net)
Run Code Online (Sandbox Code Playgroud)
有什么方法可以导入预先训练的模型Flux
吗?
我使用 Tensorflow 进行深度学习工作,但我对 Julia for ML 的一些功能很感兴趣。现在在 Tensorflow 中,协议缓冲区有一个明确的标准——这意味着 TFRecords 格式是将大量数据集加载到 GPU 以进行模型训练的最佳方式。我一直在阅读 Flux、KNET、文档以及其他论坛帖子,看看是否有关于最有效数据格式的任何特别建议。但我还没有找到。
我的问题是,是否有推荐的 Julia ML 库数据格式来促进训练?换句话说,是否有任何明确的数据集格式由于性能不佳而应该避免?
现在,我知道有一个Protobuf.jl
库,因此用户仍然可以使用协议缓冲区。我现在计划使用协议缓冲区,因为我可以为 Tensorflow 和 Julia 使用相同的数据格式。然而,我也发现了这篇有趣的 Reddit 帖子,内容是关于用户如何不使用协议缓冲区而只使用直接的 Julia Vectors。
https://www.reddit.com/r/MachineLearning/comments/994dl7/d_hows_julia_language_mit_for_ml/
我知道 Julia ML 库可能与数据存储格式无关。这意味着无论数据以何种格式存储,数据都会被解码为某种向量或矩阵格式。所以在这种情况下,我可以使用任何格式。但只是想确保我没有遗漏文档中的任何内容,或者由于使用错误的数据存储格式而导致的问题或性能下降。
我正在实施 Yoon Kim 的 CNN ( https://arxiv.org/abs/1408.5882 ) 用于 Julia 中的文本分类,使用 Flux 作为深度学习框架,将单个句子作为输入数据点。模型动物园 ( https://github.com/FluxML/model-zoo ) 已被证明在一定程度上很有用,但它没有使用 CNN 的 NLP 示例。我想检查我的输入数据格式是否正确。
有一个在一维转化率的流量没有明确的实现,所以我用转化率发现https://github.com/FluxML/Flux.jl/blob/master/src/layers/conv.jl 下面是部分解释输入数据格式的文档字符串:
Data should be stored in WHCN order (width, height, # channels, # batches).
In other words, a 100×100 RGB image would be a `100×100×3×1` array,
and a batch of 50 would be a `100×100×3×50` array.
Run Code Online (Sandbox Code Playgroud)
我的格式如下:
1. width: since text in a sentence is 1D, the width is always 1
2. height: this is the maximum …
Run Code Online (Sandbox Code Playgroud) 我是 Julia 用户,刚接触 Flux 和机器学习。作为第一次测试并了解 Flux 的工作原理,我尝试使用 Flux 来估计一个简单的线性回归模型。但显然我做错了什么,因为使用火车训练模型!没有给出预期的 OLS 系数。这让我很惊讶;由于线性回归是一个简单的凸优化问题,我预计梯度下降会快速收敛到最优值。所以我想我对如何训练有一些误解!作品。
这是我的代码:
using Flux
using Flux: @epochs
using GLM
# Load data: The features of the Iris data set
features = Flux.Data.Iris.features();
x = features[1:3,:];
y = features[4,:];
J, N = size(x); # number of explanatory variables, number of observations
model = Chain(Dense(J,1)); # define the model
loss(x,y) = Flux.Losses.mse(model(x),y); # define the loss function
function loss_all(X,y) # and define a full-sample loss function
l = 0;
for i in …
Run Code Online (Sandbox Code Playgroud)