官方API https://fluxml.ai/Flux.jl/stable/ecosystem/
官网给出了 Flux’s model-zoo, 是一个庞大的案例库, 可以提供直观的参考, 并且还列举了基于 Flux.jl 开发的第三方库。
机器视觉
- ObjectDetector.jl YOLO 抓取的“预备跑” 图像
- Metalhead.jl 用于迁移学习的机器视觉模型
- UNet.jl U型网络
自然语言过程
- Transformer.jl GPT 模型关键环节。
- TextAnalysis.jl 文本分析器。
强化学习
- AlphaZero.jl Deepmind AlphaZero 算法
- ReinforcementLearning.jl Julia 语言环境中的强化学习研究包
图论学习
- GraphNeuralNetworks.jl 灵活的图神经网络工具
- GeometricFlux.jl 首款Julia语言中的图神经网络
- NeuralOperators.jl 可用于求解PDE工具代替了有限元方法
- SeaPearl.jl 利用约束规划求解基于图输入 的强化学习
时间序列
- FluxArchitectures.jl 为时间序列预测建立的高级网络架构
鲁棒神经网络
- RobustNeuralNetworks.jl 包括系列的满足鲁棒性约束的神经网络
数据集
- MLDatasets.jl 下载解包机器学习的相关数据
- GraphMLDatasets.jl 图论相关的机器学习数据集
小试牛刀:线性回归最小二乘法
min W , b 1 N ∑ i = 1 N ( w x i + b − y i ) 2 \min_{W,b} \frac{1}{N}\sum_{i=1}^N (wx_i+b-y_i)^2 W,bminN1i=1∑N(wxi+b−yi)2
using Flux
using Plots
x = hcat(collect(Float32, -3:0.1:3)...)
f(x) = @. 3x + 2;
y = f(x)
x = x .+ reshape(rand(Float32, 61), (1, 61));
custom_model(W, b, x) = @. W*x + b
W = rand(Float32, 1, 1)
b = [0.0f0]
function custom_loss(W, b, x, y)
ŷ = custom_model(W, b, x)
sum((y .- ŷ).^2) / length(x)
end;
flux_model = Dense(1 => 1)
dLdW, dLdb, _, _ = gradient(custom_loss, W, b, x, y);
function train_custom_model()
dLdW, dLdb, _, _ = gradient(custom_loss, W, b, x, y)
@. W = W - 0.1 * dLdW
@. b = b - 0.1 * dLdb
end;
for i = 1:40
train_custom_model()
end
W, b, custom_loss(W, b, x, y)
plot(reshape(x, (61, 1)), reshape(y, (61, 1)), lw = 3, seriestype = :scatter, label = "Data", title = "Linear Regression", xlabel = "x", ylabel= "y")
plot!((x) -> b[1] + W[1] * x, -3, 3, label="Fitting", lw=2)