生之为萌,乐享创造

在 C# 中使用 Keras

折腾万岁!

前段时间突然有了在 C# 中调用 Keras 生成的模型的奇怪需求,本来想的是干脆直接调用 Python 脚本然后传个参进去,但是这样不是很好玩,Google 了一下发现竟然有人把 Python 的几个机器学习框架都移植到了 C# 下,而 Keras.NET 就是其中一个,这下就很有趣了。

Keras.NET 是 SciSharp(是不是很熟悉,Python 中的科学计算工具包叫做 SciPy,不过我不知道这两者是不是一家)移植的用于 .NET 的 Keras 框架,其最大的特点是尽量使 C# 中的语法与 Python 原版的相似。另外 SciSharp 还移植了 NumSharp 等一系列库。

基于上述特点,Python 代码只需做极少量的改动就能在 C# 中使用,如下所示( 代码摘自 Github 官方 repo)。

这是 Python 代码:

这是 C# 代码:

目前我用到的功能中和 Python 有点区别的是,尽管 NumSharp 通过字符串作为参数实现了 Python 中的 slice 功能,但是并不能像 Python 里一样使用x = x[:, :, :, np.newaxis]。不过好在就算是 Python,也有另一种方法完成同样的功能,就是np.expand_dims,对应在 C# 里则是x = np.expand_dims(x, 3);

需要注意的是,使用 Keras.NET 需要安装版本匹配的 Python,并且仅支持 64 位的 Windows,这也就意味着编译 .NET 程序时不能选择“首选 32 位”。

发表评论

电子邮件地址不会被公开。 必填项已用*标注