问题标签 [flux.jl]
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.
machine-learning - DiffEqFlux 中的 FastChain 与 GPU
对于模型的 GPU 训练,我正在使用
相对
中央处理器训练
超过 1000 次迭代,Fastchain 比运行 GPU Tesla K40c 快几个数量级。这是预期的行为吗?否则,我在 GPU 上实现模型时会做错什么吗?GPU实现的MWE如下:
julia - 将 Flux 与结构一起使用:意外的通道维度
在结构中调用 Flux 函数时,我似乎得到了不同的行为(不同的输出维度),而不是直接将函数应用于张量:
直接申请:
通过结构:
为什么 2 个片段的输出通道尺寸不同?我对 Julia 中的结构缺少什么?谢谢!
julia - 在 Flux 中进行优化时出现标量 getindex 错误
我正在尝试logitbinarycrossentropy
在 GPU 上的全卷积网络上使用 Flux 的函数进行优化:
其中损失定义为:
但是,我遇到了一个ERROR: LoadError: scalar getindex is disallowed
错误。我已经验证我的模型运行正确(返回正确的输出等),并且损失函数能够计算一个值。我尝试将其重写logitbinarycrossentropy
为自定义损失函数,但它仍然失败,并出现相同的错误update!(opt, ps, gs)
。我也尝试使用σ
withbinarycrossentropy
而不是logitbinarycrossentropy
,并得到了同样的错误。
我正在使用 Julia 1.3.0、Flux 0.10.3、Zygote 0.4.6。
我推测这可能与我cat
在模型定义中的使用有关,这可能吗?这大致是我定义模型的方式:
完整的堆栈跟踪:
谢谢!
deep-learning - Julia Flux 中的等效数据集
我想使用 Flux 来训练音频文件的深度学习模型。在 Flux 文档中,他们将整个数据数组(包括所有示例)传递给数据加载器,该加载器将为train!()
函数提供批处理列表。关键是我的系统中没有足够的内存来一次加载所有音频文件。
在 PyTorch 中,dataloader
将由一个dataset
对象提供,该对象具有在方法上一次打开一个文件的逻辑__getitem__()
。
那么,在 Flux/Julia 中实现它的正确方法是什么,什么是 Torch 数据集等价物?
julia - 在 Flux 中创建自定义层时出现数组突变错误
我使用 Flux 库创建了一个神经网络。我的代码基于论文“神经重要性采样”。我定义了自定义层和自定义损失函数。每层返回两个输出。当我运行我的代码时,我收到此错误:
不支持变异数组…[6] LinearLayer at .\In[6]:13
这是我的代码:
上面的错误说明这部分代码有问题:
calculate_forward 函数是:
我能做些什么来解决它?
neural-network - Julia 网络表达式 Flux
学习 Julia 元编程以通过表达式自动构建 ANN。虽然一切都适用于推理,但后退阶段会引发错误:
LoadError:无法区分foreigncall表达式
下一个代码显示了问题出现的位置。虽然 eval(net(x)) 运行良好,但由于某种原因,它在梯度计算阶段引发了错误。
keras - Julia 的 Flux 中的 Keras W_constraint 和 W_regularizer 类似物
我正在尝试解析json 文件以在 JuliaKeras
中创建模型( v1.1.0 和v0.10.4)。Flux
Keras
Flux
Dense
层配置示例:
因此,我很清楚如何在Flux
. 但是W_constraint
和W_regularizer
呢?Flux
我在'sDense
层没有发现任何类似的东西。它存在吗?我应该自己实施吗?层的这些参数是否Dense
甚至很重要,或者在创建模型时可以轻松跳过Flux
而不会严重改变性能?
julia - Julia Flux:确定层的类型
我是 Julia 的新手,我无法确定Flux
's 模型中图层的类型。出于示例的目的,假设我的模型只是一个神经元:
我想迭代我的Chain
,并根据层的类型,做出不同的动作(具体来说,我想为Dense
层添加正则化)。
我从 Python 来到 Julia,我的第一个猜测是将 layer 的类型与Dense
. 与我的直觉相反,这给了我false
:
- 为什么这在 Julia 中不起作用?
- 让 Julia 发挥作用的正确方法是什么?当然,我可以检查给定层是否存在
struct
(in
/out
/sigmoid
in case ofDense
)的特定字段,但不能保证它不是具有类似字段的其他层。
julia - Julia Flux:根据提供的正则化系数编写正则化器
我正在编写一个将 Python Keras
(v1.1.0) 模型转换为 JuliaFlux
模型的脚本,并且我正在努力实现正则化(我已阅读https://fluxml.ai/Flux.jl/stable/models/regularisation/)作为一种方式了解朱莉娅。
所以,在Keras
的 json 模型中,我有类似的东西:"W_regularizer": {"l2": 0.0010000000474974513, "name": "WeightRegularizer", "l1": 0.0}
对于每Dense
一层。我想使用这些系数在Flux
模型中创建正则化。问题在于,Flux
它直接添加到损失中,而不是被定义为层本身的属性。
为避免在此处发布太多代码,我已将其添加到 repo 中。这是一个采用 json 和 createa 的小脚本Flux
:Chain
https: //github.com/iegorval/Keras2Flux.jl/blob/master/Keras2Flux/src/Keras2Flux.jl
现在,我想使用预定义的/系数为每Dense
一层创建一个惩罚。我试着这样做:l1
l2
因此,我为每一层创建了一个惩罚函数Dense
,然后将其总结为总惩罚。但是,它给了我这个错误:
ERROR: LoadError: BoundsError: attempt to access 3-element Array{Any,1} at index [4]
我明白这意味着什么,但我真的不明白如何解决它。因此,似乎当我调用 时total_penalty(model)
,它使用index_regs
== 4 (因此, 和 的值index_regs
在index_model
for 循环之后)。相反,我想使用他们的实际指数,同时将给定的惩罚推到惩罚列表中。
另一方面,如果我不是将其作为函数列表而是作为值列表,那也是不正确的,因为我将损失定义为
loss(x, y) = binarycrossentropy(model(x), y) + total_penalty(model)
:如果我只是将它用作值列表,那么我将有一个 static ,而在模型训练期间total_penalty
每次都应该为每一层重新计算它。Dense
如果有 Julia 经验的人给我一些建议,我将不胜感激,因为我肯定无法理解它在 Julia 中的工作原理,特别是在Flux
. 我将如何创建total_penalty
在训练期间自动重新计算的?