Repository navigation
Module_Examples_zh
仓库根目录下的 Examples/ 文件夹包含独立可运行的示例工程。这些项目引用主库 Vorcyc.Mathematics(targets/dotNET10_Portable),用于演示如何在真实场景中使用各模块 API;不包含在 NuGet 包内,需从源码编译运行。
| 工程 | 路径 | 主要模块 | 说明 |
|---|---|---|---|
| 音频 WAV + MFCC | Examples/Audio_example/ |
SignalProcessing、DeepLearning、NAudio | NAudio 读/写 WAV、MFCC 分析、训练与推理 |
| 核心 / 线代 / 统计 | Examples/Core_example/ |
ComputingContext、LinearAlgebra、Statistics | 矩阵乘、Span 统计、VectorSpan、作用域解析 |
| 机器学习 | Examples/MachineLearning_example/ |
MachineLearning | 0.9 分类/回归流水线、树/森林、集成学习、CV/网格搜索 |
| 图像上色 | Examples/Colorization_example/ |
DeepLearning、LinearAlgebra | ColorNet / ChromaGAN 黑白图上色 |
| 信号处理 | Examples/SignalProcessing_example/ |
SignalProcessing | Signal 合成、FFT、滤波、MFCC、音效、并行特征 |
| 深度学习 | Examples/DeepLearning_example/ |
DeepLearning | XOR/批训练/CNN+MLP/音频分类、序列化、MlpRegressor 曲线拟合 |
| 微积分 | Examples/Calculus_example/ |
Calculus | 积分、导数、ODE、求根、级数 |
📒目录
- 🔖 目录结构约定
- 🔖 Audio_example — NAudio 音频流水线
- 🔖 Core_example — 核心与 ComputingContext
- 🔖 MachineLearning_example — 表格学习
- 🔖 Colorization_example — 图像上色
- 🔖 SignalProcessing_example — 信号处理
- 🔖 DeepLearning_example — 深度学习
- 🔖 Calculus_example — 微积分
- 🔖 模型与场景
- 🔖 依赖项
- 🔖 从旧版 HModel 导出
- 🔖 命令行用法
- 🔖 代码结构
- 🔖 与深度学习模块的关系
Examples/
└── <示例名>_example/
├── <示例名>_example.csproj # 引用 dotNET10_Portable
├── Program.cs # CLI 入口
├── models/ # 导出的 .vmdl(可选,随构建复制到输出目录)
└── … # 模型定义、序列化、图像 IO 等
新增示例时建议:
- 在
Examples/下创建独立.csproj,TargetFramework与主库一致(net10.0)。 - 将工程加入
Vorcyc.Mathematics.slnx的/Examples/文件夹。 - 在本页追加一行表格说明,并补充对应小节。
端到端演示:NAudio 读写 WAV → Vorcyc Signal → MFCC → BatchSequential 训练/推理。比 DeepLearning_example 的 audio 命令更贴近真实项目(磁盘上的 .wav 文件,而非内存合成波)。
| 包 | 版本 | 用途 |
|---|---|---|
NAudio |
2.2.1 |
AudioFileReader / WaveFileWriter 读写信道 WAV |
Vorcyc.Mathematics |
工程引用 | Signal、MFCC、AudioTrainingSamples、ModelSerializer
|
# 全流程:生成演示 WAV → 训练 → 分析 → 推理
dotnet run --project Examples/Audio_example
dotnet run --project Examples/Audio_example -- prepare
dotnet run --project Examples/Audio_example -- analyze data/class_low/tone_220hz.wav
dotnet run --project Examples/Audio_example -- analyze my.wav --csv mfcc.csv
dotnet run --project Examples/Audio_example -- train --epochs 3000
dotnet run --project Examples/Audio_example -- predict data/class_high/tone_1200hz.wav
dotnet run --project Examples/Audio_example -- help数据目录(默认在输出目录 bin/.../net10.0/data/):
data/
├── class_low/ # 标签 low:低频演示音(可替换为自己的 WAV)
└── class_high/ # 标签 high:高频演示音
models/
└── pitch_mfcc.vmdl # train 后保存的 BatchSequential 权重
Examples/Audio_example/
├── Program.cs
├── PitchClassifierConfig.cs
├── Io/
│ └── WavBridge.cs # NAudio ↔ Signal(含重采样)
└── Pipeline/
├── DemoDataFactory.cs # 生成 16-bit PCM 演示 WAV
├── LabeledWavDataset.cs # 按文件夹加载带标签数据集
├── MfccFileAnalyzer.cs # analyze:RMS / FFT / MFCC
└── PitchClassifierTrainer.cs # train / predict + ModelSerializer
Audio_example |
DeepLearning_example -- audio |
|
|---|---|---|
| 输入 | 磁盘 WAV(NAudio) | 内存 GenerateWave
|
| 外部依赖 | NAudio | 无 |
| 模型持久化 |
.vmdl 保存/加载 |
无 |
| 适用 | 文件 IO + 部署推理 | 快速验证 API 接线 |
演示 ComputingContext、MatrixFp32.Multiply、Span 统计扩展与 VectorSpan 热点 API。无额外 NuGet,跨平台可运行。与 Module_ComputingContext 手册互补。
dotnet run --project Examples/Core_example
dotnet run --project Examples/Core_example -- matrix
dotnet run --project Examples/Core_example -- statistics
dotnet run --project Examples/Core_example -- vector
dotnet run --project Examples/Core_example -- context
dotnet run --project Examples/Core_example -- helpExamples/Core_example/
├── Program.cs
├── MatrixDemo.cs # MatrixFp32.Multiply + ComputingScope
├── StatisticsDemo.cs # Sum / Average / StandardDeviation
├── VectorDemo.cs # Dot / Norm / Axpy
└── ComputingContextDemo.cs # 显式参数 vs Scope 优先级
演示 0.9 机器学习模块的典型工作流:合成三簇二维数据、DataSplit 划分、多种 IClassifier<double> 训练与评估、ClassificationPipeline、网格搜索与 K 折交叉验证,以及回归流水线示例。无额外 NuGet 依赖,跨平台可运行。
# 概览(默认):分类 + 回归
dotnet run --project Examples/MachineLearning_example
# 仅分类
dotnet run --project Examples/MachineLearning_example -- classify
# 回归:KnnRegressor、RegressionPipeline 批量预测、岭回归、K 折 CV
dotnet run --project Examples/MachineLearning_example -- regression
dotnet run --project Examples/MachineLearning_example -- helpExamples/MachineLearning_example/
├── Program.cs # classify / regression CLI
├── BlobDataset.cs # 三簇合成分类数据
└── RegressionDataset.cs # 合成回归数据
批量推理性能对比见 `benchmarks/basic_benchmark/MachineLearning_batch_benchmark.cs`(在 `Program.cs` 中取消注释后运行)。
完整 API 说明与可复制片段见 机器学习模块 — 0.9 分类器完整示例。
将灰度或彩色照片上色,移植自 Vorcyc.AwesomeAI 中的 NeuralColor / Colorization 方案,改用 0.9 DeepLearning Modules API(Convolution2DLayer、BatchNormLayer、ReLUActivation 等)与自定义模型容器,图像 IO 使用 Emgu.CV。
| 场景 | CLI --scenario
|
网络 | 适用 |
|---|---|---|---|
| 实景 |
realistic(默认) |
ColorNet | 风景、建筑等自然场景 |
| 人物 | people |
ChromaGAN | 人物照、集体照 |
两套网络均为双分支或编码-融合结构,无法直接用单个 BatchSequential 描述,因此在示例工程内实现了 ColorNetModel / ChromaGanModel,权重通过示例专用序列化器保存为 VMDL v3 变体(ModelKind = 4 / 5,见 VmdlTensorArchive)。
| 文件 | 格式 | 说明 |
|---|---|---|
*.HModel |
半精度二进制(旧版) | ColorfulSoft 原始权重 |
*.vmdl |
VMDL v3(float64 张量) | 导出后的新格式,推理使用 |
默认路径(可在命令行覆盖):
- ColorNet:
models/Colornet.vmdl,旧模型model_zoo/vision/colorization/Colornet.HModel - ChromaGAN:
models/ChromaGAN.vmdl,旧模型model_zoo/vision/colorization/ChromaGAN.HModel
除主库外,示例工程额外引用:
| 包 | 版本 | 用途 |
|---|---|---|
Emgu.CV |
4.9.0.5494 | 读图、缩放、颜色空间 |
Emgu.CV.runtime.windows |
4.9.0.5494 | Windows 本地 OpenCV 运行时 |
运行环境需为 Windows(Emgu 运行时包)。Linux/macOS 需自行替换为对应 Emgu 运行时或改写图像 IO。
若仅有 .HModel,先导出为 .vmdl:
cd Examples/Colorization_example
# ColorNet
dotnet run -- export colornet <Colornet.HModel路径> models/Colornet.vmdl
# ChromaGAN
dotnet run -- export chromagan <ChromaGAN.HModel路径> models/ChromaGAN.vmdl导出流程:半精度解码(Legacy/HalfHelper)→ 填入 ColorNetModel / ChromaGanModel 的 Parameter → ColorNetSerializer / ChromaGanSerializer 写入 VMDL。
若执行 colorize 时目标 .vmdl 不存在且默认路径下存在对应 .HModel,程序会自动导出后再推理。
# 实景上色(ColorNet)
dotnet run --project Examples/Colorization_example -- colorize photo.jpg result.jpg --scenario realistic
# 人物上色(ChromaGAN)
dotnet run --project Examples/Colorization_example -- colorize photo.jpg result.jpg --scenario people
# 指定模型文件
dotnet run --project Examples/Colorization_example -- colorize photo.jpg out.jpg --scenario people --model models/ChromaGAN.vmdl命令摘要
| 命令 | 说明 |
|---|---|
export <colornet|chromagan> [hmodel] [vmdl] |
旧权重 → VMDL |
colorize <图片> [输出] [--scenario realistic|people] [--model path] |
上色并保存 JPEG |
Examples/Colorization_example/
├── Program.cs # export / colorize CLI
├── ColorizationEnhancer.cs # 统一入口(Scenario + 模型加载)
├── Models/
│ ├── ColorNetModel.cs # ColorNet 前向(Modules API)
│ ├── ChromaGanModel.cs # ChromaGAN 前向
│ ├── SpatialLinearLayer.cs # GFN / global2 空间全连接
│ └── ModelWeightUtils.cs # 权重拷贝辅助
├── Legacy/
│ ├── HalfHelper.cs # half → float
│ ├── HModelReader.cs # ColorNet HModel
│ └── HModelChromaGanReader.cs
├── Serialization/
│ ├── VmdlTensorArchive.cs # 共用 VMDL 张量读写
│ ├── ColorNetSerializer.cs # ModelKind = 4
│ └── ChromaGanSerializer.cs # ModelKind = 5
└── Vision/
├── ColorNetIo.cs # Emgu 预处理 / LAB 合成
└── ChromaGanIo.cs
编程式调用示例
using Colorization_example;
using Emgu.CV;
using var enhancer = new ColorizationEnhancer(
ColorizationEnhancer.Scenario.RealisticView,
@"models/Colornet.vmdl");
using var input = new Mat(@"photo.jpg");
using var output = enhancer.Colorize(input);
CvInvoke.Imwrite(@"result.jpg", output);| 能力 | 主库 ModelSerializer v3 |
本示例 |
|---|---|---|
| 支持容器 |
Sequential、BatchSequential、CnnMlp、BatchParallelConcat
|
自定义 ColorNetModel / ChromaGanModel
|
| 层 API | Modules.* |
同左 + 遗留 Layers.JoinLayer / Fusion / Upsample2D
|
| 序列化 | 架构 LayerDescriptor + 权重 |
固定拓扑,仅按序读写命名张量 |
完整训练栈说明见 深度学习模块。本示例仅演示推理与旧权重迁移;若需训练同类网络,需在主库容器之上自行实现 Forward / Backward 或扩展 ModelSerializer。
演示 0.9 Signal 主 API:波形合成、TransformToFrequencyDomain、Butterworth 低通、MfccExtractor(HTK 预设)与 TremoloEffect。无额外 NuGet,跨平台可运行。
dotnet run --project Examples/SignalProcessing_example
dotnet run --project Examples/SignalProcessing_example -- synth
dotnet run --project Examples/SignalProcessing_example -- fft
dotnet run --project Examples/SignalProcessing_example -- filter
dotnet run --project Examples/SignalProcessing_example -- mfcc --csv mfcc.csv
dotnet run --project Examples/SignalProcessing_example -- effect
dotnet run --project Examples/SignalProcessing_example -- context
dotnet run --project Examples/SignalProcessing_example -- helpExamples/SignalProcessing_example/
├── Program.cs
├── SynthDemo.cs
├── FftDemo.cs
├── FilterDemo.cs
├── MfccDemo.cs
├── EffectDemo.cs
└── ContextDemo.cs # GetRms、ParallelComputeFrom(MFCC)
FftDemo 与 ContextDemo 演示 ComputingContext / ComputingScope(FFT、RMS、并行 MFCC)。
演示可微分训练栈:Sequential / BatchSequential + Trainer(XOR、批 XOR、CNN+MLP、MFCC 音频分类)、computingContext 参数、ModelSerializer v3 往返、以及 MlpRegressor(DeepLearning.Training)曲线拟合 (y=x^2)。
dotnet run --project Examples/DeepLearning_example
dotnet run --project Examples/DeepLearning_example -- xor
dotnet run --project Examples/DeepLearning_example -- classify
dotnet run --project Examples/DeepLearning_example -- batch
dotnet run --project Examples/DeepLearning_example -- cnn
dotnet run --project Examples/DeepLearning_example -- audio
dotnet run --project Examples/DeepLearning_example -- serialize
dotnet run --project Examples/DeepLearning_example -- curvefit
dotnet run --project Examples/DeepLearning_example -- help| 命令 | 要点 |
|---|---|
batch |
FitBatched + ComputingContext.Parallel
|
cnn |
CnnMlpModel + FitCnnMlp(4×4 左右图案) |
audio |
AudioTrainingSamples.FeatureMeanClassification + FitBatchSequential
|
Examples/DeepLearning_example/
├── Program.cs
├── XorDemo.cs
├── ClassifyDemo.cs
├── BatchTrainDemo.cs
├── CnnMlpDemo.cs
├── AudioClassifyDemo.cs
├── SerializeDemo.cs
└── CurveFitDemo.cs
演示数值积分(梯形 / Romberg / Gauss-Legendre)、导数与梯度、RK4 解 ODE、Newton/Brent 求根,以及 Taylor / Fourier 级数。
dotnet run --project Examples/Calculus_example
dotnet run --project Examples/Calculus_example -- integrate
dotnet run --project Examples/Calculus_example -- derivative
dotnet run --project Examples/Calculus_example -- ode
dotnet run --project Examples/Calculus_example -- root
dotnet run --project Examples/Calculus_example -- series
dotnet run --project Examples/Calculus_example -- helpExamples/Calculus_example/
├── Program.cs
├── IntegrationDemo.cs
├── DerivativeDemo.cs
├── OdeDemo.cs
├── RootFindingDemo.cs
└── SeriesDemo.cs
-
- 🔖 ArrayExtension class
- 🔖 BaseConverter class
- 🔖 BitMathExtension class
- 🔖 Combinatorics class
- 🔖 ConstantsFp32 class
- 🔖 NumberMapper class
- 🔖 PinnableArray<T> class
- 🔖 SimpleRNG_Fp32 and SimpleRNG_Fp64 classes
- 🔖 TrigonometryHelper class
- 🔖 VMath class
- 🔖 Pinned buffers (Buffers)
- 🔖 IPinnedBuffer<T> interface
- 🔖 POHBuffer<T> class
- 🔖 NativeBuffer<T> class
-
- 🔖 0.9 classifier walkthrough
- 🔖 KNN<T> class
- 🔖 MultipleLinearRegression<T> class
- 🔖 SimpleLinearRegression<T> class
- 🔖 SupportVectorMachine<TSelf> class
- 🔖 DBSCAN<T> class
- 🔖 ExpectationMaximization<T> class
- 🔖 GMM<T> class
- 🔖 HierarchicalClustering<T> class
- 🔖 KMeansClusterer<T> class
- 🔖 VectorQuantization<T> class
- 🔖 FactorAnalysis<T> class
- 🔖 PCA<TSelf> class
- 🔖 TSNE<T> class
- 🔖 Distance metric classes
-
📒 Examples
-
📒 GPU 策略说明
- 🔖 为何放弃主包 GPU
- 🔖 当前性能路径
- 🔖 若仍需要更强算力
-
📒 计算上下文模块
-
📒 核心模块
-
📒 深度学习模块
-
📒 线性代数模块
-
📒 机器学习模块
- 🔖 0.9 分类器完整示例
- 🔖 KNN<T> 类
- 🔖 MultipleLinearRegression<T> 类
- 🔖 SimpleLinearRegression<T> 类
- 🔖 SupportVectorMachine<TSelf> 类
- 🔖 DBSCAN<T> 类
- 🔖 ExpectationMaximization<T> 类
- 🔖 GMM<T> 类
- 🔖 HierarchicalClustering<T> 类
- 🔖 KMeansClusterer<T> 类
- 🔖 VectorQuantization<T> 类
- 🔖 FactorAnalysis<T> 类
- 🔖 PCA<TSelf> 类
- 🔖 TSNE<T> 类
- 🔖 距离度量类
-
📒 信号处理模块
-
📒 数值模块
-
📒 统计模块
- 🔖 基础统计函数
- 🔖 高级统计函数
- 🔖 稳健统计 / RunningMoments
- 🔖 其它统计函数
- 🔖 分布相关函数
- 🔖 时间序列分析
- 🔖 IComparable 扩展
- 🔖 ExtremeValueFinder
- 🔖 INumber 扩展
-
📒 FFTW 扩展
-
📒 示例