news 2026/8/26 14:02:38

快速上手Keras.NET:10分钟搭建你的第一个C神经网络(XOR实战)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
快速上手Keras.NET:10分钟搭建你的第一个C神经网络(XOR实战)

快速上手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 用Conv2DMaxPooling2DFlatten等层搭建 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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/26 14:01:02

5分钟上手umi-plugin-qiankun:Umi+qiankun微前端快速入门实战教程

5分钟上手umi-plugin-qiankun:Umiqiankun微前端快速入门实战教程 【免费下载链接】umi-plugin-qiankun Umi plugin for qiankun. 项目地址: https://gitcode.com/gh_mirrors/umi/umi-plugin-qiankun umi-plugin-qiankun(npm 包名 umijs/plugin-qi…

作者头像 李华
网站建设 2026/8/26 13:58:47

树的笔记()、拓扑结构

文章目录数据结构-树树特点:平衡二叉树二叉查找树AVL树红黑树红黑树和AVL树的比较b-树(注 读作b树,不是b减树,没有减号这个概念)b树是二叉树吗?b树的特点二叉树可以简称读作b树吗?b树和红黑树的区别b树和b树的区别什么叫自平衡树?菜单数据…

作者头像 李华
网站建设 2026/8/26 13:52:26

jQuery的Ajax请求和PHP交互的接口是不是RESTful API?

是不是RESTful API?jQuery的Ajax请求和PHP交互的接口可以是,也可以不是RESTful API。这主要取决于你如何设计和实现这个接口。RESTful API是一种设计风格和原则,它要求接口的设计遵循一定的规范,如使用HTTP方法(GET、P…

作者头像 李华
网站建设 2026/8/26 13:49:01

Apache配置ssl证书-实现https访问

一、准备工作 1.1 安装Apache服务器 #下载安装apache yum install httpd -y#启动apache服务 systemctl start httpd systemctl enable httpd#查看服务状态 netstat -lntp |grep http1.2 Apache服务器上已经开启了443端口 443为HTTPS服务的默认端口1.3 Apache服务器上已安装了m…

作者头像 李华
网站建设 2026/8/26 13:46:17

EU Icons 官方AI生成内容标识:从素材获取到批量打标与合规落地

这次不聊模型,聊一套给 AI 内容做“身份证”的官方素材包:EU Icons for labelling AI-generated content。它是欧盟委员会在“塑造欧洲数字未来”框架下发布的 AI 生成内容标识图标,目标是让 AI 生成的文本、图片、音频、视频在欧洲市场范围内…

作者头像 李华