问题标签 [flux-machine-learning]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
28 浏览

neural-network - 训练神经微分方程时如何保证收敛?

我目前正在完成 Julia 语言的 SciML 教程研讨会练习 ( https://tutorials.sciml.ai/html/exercises/01-workshop_exercises.html )。具体来说,我坚持练习 6 第 3 部分,其中涉及训练神经网络以逼近方程组

目标是用神经网络替换 du[2] 的方程:du[2] = NN(u, p) 其中 NN 是具有参数p和输入的神经网络u

我有一组网络应该尝试匹配的样本数据。损失函数是网络模型输出与样本数据之间的平方差。

我用 NN = Chain(Dense(2,30), Dense(30, 1)). 我可以开始Flux.train!跑步,但问题是有时神经网络的初始参数会导致 10^20 量级的损失,因此训练永远不会收敛。我的最佳尝试使用 ADAM 优化器在大约 1000 次迭代中将损失从最初的大约 2000 降低到大约 20,但我似乎无法做得更好。

如何确保我的网络始终可训练,有没有办法更好地收敛?

0 投票
1 回答
110 浏览

neural-network - 使用 sciml_train 改进通用微分方程训练的方法

大约一个月前,我问了一个关于在训练神经微分方程时更好地收敛的策略的问题。从那以后,我已经使用给我的建议使该示例起作用,但是当我将相同的建议应用于更困难的模型时,我又被卡住了。我所有的代码都在 Julia 中,主要使用 DiffEqFlux 库。为了使这篇文章尽可能简短,我不会分享我尝试过的所有代码,但如果有人想访问它来解决问题,我可以提供。

我想要做什么

我试图学习的数据来自 SIRx 模型:

我使用的初始条件是u0 = Float32.([0.062047128, 1.3126149f-7, 0.9486445]);. 我生成了从 t=0 到 25 的数据,每 0.02 采样一次(在训练中,我只使用每 20 个点左右来提高速度,使用更多并不能提高结果)。数据如下所示:训练数据

我正在训练的 UDE 是

每个神经网络 ( ann_dS, ann_dI, ann_dx) 都使用 定义FastChain(FastDense(3, 20, tanh), FastDense(20, 1))。我尝试使用具有 3 个输入和 3 个输出的单个神经网络,但它速度较慢并且性能也没有更好。我还尝试首先对网络的输入进行规范化,但除了减慢速度之外,它并没有显着的区别。

我试过的

  • 单拍 网络正好适合一条穿过数据中间的线。即使我在损失函数中对早期数据点进行更多加权,也会发生这种情况。单次训练
  • 多重射击 我得到的最好结果是多重射击。如此处所见,它不仅仅是拟合一条直线,而且也不是完全拟合数据Multiple Shooting Result。我尝试了从 0.1 到 100 的连续性术语和从 3 到 30 的组大小,但没有显着差异。
  • 各种其他策略 我也尝试过迭代地增加适合度、搭配搭配的 2 阶段训练和小批量,如下所述:https : //diffeqflux.sciml.ai/dev/examples/local_minima,https://diffeqflux .sciml.ai/dev/examples/collocation/ , https://diffeqflux.sciml.ai/dev/examples/minibatch/. 迭代地增加拟合在前几次迭代中效果很好,但随着长度的增加,它又回到拟合直线。2-stage 搭配训练在第 1 阶段效果非常好,但在第 2 阶段实际上并没有提高性能(我在第 2 阶段尝试过单拍和多拍)。最后,mini-batching 的效果与单次拍摄一样好(也就是说不是很好),但速度要快得多。

我的问题

总之,我不知道该尝试什么。有很多策略,每个策略都有很多可以调整的参数。我需要一种更准确地诊断问题的方法,以便更好地决定如何进行。如果有人有此类问题的经验,我会很感激我能得到的任何建议或指导。

0 投票
1 回答
46 浏览

julia - 尝试编写一个 softmax 和 NNLib softmax 给出意外的输出

我正在阅读一本python书..但使用Julialang代替..为了学习语言等......我在这里遇到了另一个我不太清楚的领域..

但是当我开始折腾更复杂的矩阵时,它就崩溃了..

我得到了一个合适的矩阵

但是这本书有

看来我比书低一个数量级?即使使用 FluxML 的 softmax 函数

编辑:

我想也许是我的 ReLU 激活码导致了差异......并尝试切换到 FluxML NNlib 版本......但得到相同activated_output20.0033333而不是0.333333

将继续检查其他部分,例如我的转发功能

编辑2:

添加我的DenseLayer实现以确保完整性

密集层

编辑3:

使用图书馆..我开始检查我的spiral_data实现..似乎在合理范围内

Python

朱莉娅朗

0 投票
1 回答
54 浏览

julia - 如何在 Flux.jl 中进行自适应平均池化

我已经看到自适应平均池在 Tensor FlowPyTorch中都可用。

我想知道如何在Flux.jl中实现这一点?

0 投票
1 回答
167 浏览

julia - 如何在 Flux.jl 中使用 BSON 加载经过训练的模型

我之前在 Flux.jl 中训练了一个模型并通过以下方式保存它:

现在我想重新加载该模型并再次使用它。如何在 Flux 中实现这一点?

0 投票
1 回答
55 浏览

julia - 如何在 Flux.jl 中使用 VGG19?

我有一个特定的计算机视觉问题,我想尝试使用一些预先训练的模型来解决。Flux.jl 文档实际上并没有像其他一些 ML 框架(以 PyTorch 为例)那样的任何预训练模型。我将如何访问 Flux 中的那些相关模型?

0 投票
1 回答
334 浏览

julia - Flux.jl GPU 支持 M1 Mac?

我目前正在使用带有 M1 Mac 芯片的笔记本电脑。Flux.jl 文档仅提及对 Nvidia GPU 的支持。是否可以使用我的本地 GPU 训练我的模型,还是不支持 M1 Mac?注意:Julia 1.7 beta 3目前正在提供 M1 Mac 支持,所以这似乎是可行的,但我不是 GPU 专家。