用Keras.NET 做一个图像识别的训练

作者:kinfey

.NET Core 的应用场景越来越广,开源社区也不断壮大, .NET Core在机器学习领域不断发展ML.NET外,也通过结合Tensorflow.NET去完善ML.NET在深度学习领域的功能,在ML.NET 1.3开始迈出了非常重要的一步。这不仅是微软拥抱开源的策略,也是对SciSharp社区的认可。SciSharp社区不仅有Tensorlow.NET优秀的产品,也有很多对基于Python机器学习/深度学习库的封装,这补充了现阶段ML.NET在发展阶段功能不全的缺陷,也让更成熟的机器学习/深度学习方案应用在.NET Core的生产环境中。今天我会介绍一下Keras.NET并通过Keras.NET做一个图像识别的深度学习训练。

什么是Keras?

Keras是一个用Python编写通过Tensorflow、PlaidML以及CNTK作为后端的高层神经网络API。Keras让你用最简单的方式快速完成深度学习(https://keras-cn.readthedocs.io/en/latest/) 。 不少人喜欢用Keras进行模型训练。 ScipySharp社区也对 Keras通过pythonnet进行了封装(https://github.com/SciSharp/Keras.NET) 。

在这里插入图片描述

如何用Keras.NET?

pythonnet是一个运行基础,它作为一个Python和.NET Core的桥接存在, ScipySharp社区对pythonnet进行了封装和修改。由于开发环境各异,对于pythonnet的引用都略有不同,Windows下使用Python.Runtime.NETStandard / Linux下使用Python.Runtime.Mono / macOS下使用 Python.Runtime.OSX 。补充一点记得设置好Python的环境变量,否则你调用就会出现一堆问题。对于Keras.NET的封装,也依赖于Numpy.NET(https://github.com/SciSharp/Numpy.NET)。这里有个比较特别的地方,需要下载源码,把Keras.NET/Numpy.NET基于不同平台对应的Python.Runtime版本的包添加重新设置编译,并在本地通过dll直接引用。还有Numpy.NET有两个版本,一个是支持Windows的Numpy , 一个是支持Linux/macOS的Numpy.Bare 使用时候不要搞混了。

在这里插入图片描述

一个经典的例子:做一个猫狗分类的图像分类

这个示例比较经典,也算是一个Keras上的HelloWorld .让我们来看看如何通过Keras.NET来完成。

1. 环境
  我还是依赖于 JupyterNotebook (如何用JupyterNotebook 支持C#环境, 可以看我之前的文章(https://blog.csdn.net/kinfey/article/details/96095690),这里提醒需要把Keras.NET, Numpy.NET添加到ICSharpCore项目当中,否则没法使用Keras.NET.

2. 创建JupyterNotebook
  把项目必要的库进行引用.注意因为我是Linux环境,在Linux环境下是Python 3.6.8,所以我这里对应的是Python.Runtime.Mono 3.6.0(如果你是其他平台其他版本记得要切换好,否则是不能使用的), 还有通过Rosyln把本地编译好的Keras.dll,Numpy.Bare.dll引入。
在这里插入图片描述

3. CNN算法定义
  这个就是佛系了,毕竟这是深度学习的一部分,。CNN, 全名卷积神经网络(Convolutional Neural Network,简称CNN), 是一种前馈神经网络,人工神经元可以相应周围但愿,可以进行大型图像处理。(http://cs231n.github.io/convolutional-networks/)。CNN网络层级由输入层,卷积层,激活层,池化层,全连接FC层共5个部分组成,通过Keras可以很容易完成这5个部分的层级操作。具体看以下代码。

在这里插入图片描述

4. 数据整理
  数据分为训练数据,和测试数据,Keras有对图像分类支持的接口ImageDataGenerator。

在这里插入图片描述

5. 训练和保存模型
  通过FitGenerator对图像数据进行训练,这里你可以根据实际情况调整训练参数,训练完后可以保存以h5为后续的模型。注意,训练需要时间,如果你有GPU是最好的,否则CPU会花不少时间。

添加链接描述

这里要提醒一点,因为ICSharpCore还在改进,训练时产生的状态只能通过去命令行中查阅,所以要看训练效果可以通过命令行看
在这里插入图片描述
在这里插入图片描述

6. 测试模型

在这里插入图片描述

   最后展示一个完整的Jupyter Notebook 

在这里插入图片描述

转型到机器学习/深度学习对不少人来说都需要花很多的时间,但在自己熟悉的环境下学习是提升学习效率的方法。希望SciSharp社区能帮到.NETer。

原文链接:https://blog.csdn.net/kinfey/article/details/99691593

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值