快速上手Keras.NET:10分钟搭建你的第一个C#神经网络(XOR实战)
【免费下载链接】Keras.NETKeras.NET is a high-level neural networks API for C# and F#, with Python Binding and capable of running on top of TensorFlow, CNTK, or Theano.项目地址: https://gitcode.com/gh_mirrors/ke/Keras.NET
Keras.NET是一款面向 C# 和 F# 开发者的高级神经网络 API,基于 Python 绑定可直接运行在 TensorFlow 之上,让你无需切换语言栈,用熟悉的 C# 代码就能完成深度学习开发。本文带你用 10 分钟跑通经典的 XOR 神经网络实战,从零搭建、训练、保存到加载你的第一个 C# 神经网络模型。
一、为什么 C# 开发者需要 Keras.NET 🤔
深度学习生态以 Python 为主,但 C# 开发者在 .NET 项目中同样有 AI 需求。Keras.NET 解决的正是这个痛点:
- ✅纯 C# 调用:像调用普通类一样构建模型,无需写 Python 脚本
- ✅完整 Keras 生态:Sequential 模型、卷积、循环网络、预训练模型(ResNet、VGG 等)全覆盖
- ✅灵活后端:支持 TensorFlow / CNTK / PlaidML,兼容 CPU 与 GPU
- ✅NuGet 一键安装:
dotnet add package Keras.NET即可集成
核心库位于 Keras/Keras.csproj,模型基类实现见 Keras/Models/Sequential.cs,常用层(Dense、Dropout 等)定义在 Keras/Layers/Core.cs。
二、Keras.NET 环境搭建:3 步完成安装
第 1 步:安装 Python 环境
Keras.NET 通过 Python 绑定调用底层框架,需先安装 Python 3.7 或 3.8,并安装 TensorFlow(Keras 2.0 已内置于 TensorFlow 中):
pip install tensorflow numpy第 2 步:安装 .NET SDK
建议使用 .NET 6.0(示例项目 Examples/BasicSamples/BasicSamples.csproj 的目标框架即为 net6.0)。
第 3 步:添加 NuGet 包
dotnet add package Keras.NET💡 如果 Python 路径不在系统环境变量中,可用 Tensorflow/Setup.cs 中的
Setup.SetPythonPath()指定解释器位置;Setup.Run()还可以自动检查并安装缺失的 keras、numpy 与后端模块。
三、20行C#代码训练XOR神经网络
XOR(异或)是神经网络入门的经典案例:单层线性模型无法拟合它,必须引入隐藏层——这是验证深度学习"隐藏层魔力"的最佳试金石。
打开示例入口 Examples/BasicSamples/XOR.cs,核心代码只有 4 步:
① 准备数据——XOR 的全部 4 组输入输出:
NDarray x = np.array(new float[,] { { 0, 0 }, { 0, 1 }, { 1, 0 }, { 1, 1 } }); NDarray y = np.array(new float[] { 0, 1, 1, 0 });② 搭建 Sequential 模型——32 个神经元的第一隐藏层 + 64 个神经元的第二隐藏层 + sigmoid 输出层:
var model = new Sequential(); model.Add(new Dense(32, activation: "relu", input_shape: new Shape(2))); model.Add(new Dense(64, activation: "relu")); model.Add(new Dense(1, activation: "sigmoid"));③ 编译并训练——SGD 优化器 + 二元交叉熵损失:
model.Compile(optimizer: "sgd", loss: "binary_crossentropy", metrics: new string[] { "accuracy" }); model.Fit(x, y, batch_size: 2, epochs: 1000, verbose: 1);④ 保存与加载模型——ToJson()导出结构、SaveWeight()导出权重,随时可以恢复:
File.WriteAllText("model.json", model.ToJson()); model.SaveWeight("model.h5"); var loaded_model = Sequential.ModelFromJson(File.ReadAllText("model.json")); loaded_model.LoadWeight("model.h5");运行 Examples/BasicSamples/Program.cs 中的XOR.Run(),终端就会开始滚动输出训练进度——损失(loss)持续下降,准确率(acc)稳步爬向 1.0000:
当 acc 稳定在 1.0000 时,说明你的 C# 神经网络已经完美学会了异或逻辑 🎉
除了 Sequential 写法,项目还演示了函数式 API:用
Input+.Set()逐层连线构建任意拓扑模型,代码见 XOR.cs 第 22-27 行,以及 Keras/Models/Model.cs 中的Model类实现。
四、进阶挑战:从XOR到MNIST手写数字识别 🚀
XOR 只是热身。Keras.NET 同样支持卷积神经网络(CNN),官方示例 Examples/BasicSamples/MNIST_CNN.cs 用Conv2D、MaxPooling2D、Flatten等层搭建 CNN,12 个 epoch 即可达到98%+ 的识别准确率(3 个 epoch 就已突破 90%):
更复杂的应用可以直接调用 Keras/Applications/ 下的预训练模型(ResNet、VGG、Inception、MobileNet 等),几行代码即可完成 ImageNet 图像分类——示例见 Examples/ImageExamples/ImageRecognition.cs。
五、更多实战示例速查清单
不知道下一步学什么?项目内置了这些可直接运行的示例:
| 示例 | 场景 | 文件位置 |
|---|---|---|
| XOR | 入门必练,理解隐藏层 | Examples/BasicSamples/XOR.cs |
| MNIST CNN | 卷积网络、图像分类 | Examples/BasicSamples/MNIST_CNN.cs |
| 糖尿病预测 | 结构化数据二分类 | Examples/BasicSamples/PrimaIndiansDiabetics.cs |
| CIFAR-10 | 彩色图像分类 | Examples/ImageExamples/Cifar10_CNN.cs |
| 文本情感分析 | 自然语言处理 | Examples/TextExamples/SentimentClassification.cs |
| Web 在线手写识别 | ASP.NET Core 实战 | Examples/Keras.Playground/ |
| 音乐生成 | WaveNet 生成钢琴曲 | Examples/MusicGeneration/WavenetMusicGeneration.cs |
常用组件速查:
- 优化器:SGD、Adam、RMSprop 等 → Keras/Optimizers.cs
- 回调函数(EarlyStopping、ModelCheckpoint、TensorBoard)→ Keras/Callbacks.cs
- 数据集(MNIST、CIFAR10、IMDB 一键加载)→ Keras/Datasets.cs
- 损失函数与指标→ Keras/Losses.cs、Keras/Metrics.cs
- 数据增强(ImageDataGenerator)→ Keras/PreProcessing/ImageDataGenerator.cs
六、总结
回看这 10 分钟:环境装好 → 20 行代码训练 XOR → 模型保存加载 → 一路进阶到 CNN 与文本处理。Keras.NET 让 C# 开发者用原生语法享受完整的 Keras 深度学习体验,从原型实验到生产部署,无需再写一行 Python。现在就可以打开Examples/BasicSamples/,跑起你的第一个 C# 神经网络!
【免费下载链接】Keras.NETKeras.NET is a high-level neural networks API for C# and F#, with Python Binding and capable of running on top of TensorFlow, CNTK, or Theano.项目地址: https://gitcode.com/gh_mirrors/ke/Keras.NET
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考