.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做一个图像识别的深度学习训练。

01

PART

什么是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) 。

02

PART

如何用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 使用时候不要搞混了。

03

PART

一个经典的例子

这里做一个猫狗分类的图像分类的示例,这个示例比较经典,也算是一个Keras上的HelloWorld .让我们来看看如何通过Keras.NET来完成。

01

环境

环境,我还是依赖于 JupyterNotebook (如何用JupyterNotebook 支持C#环境, 可以看我之前的文章

(https://blog.csdn.net/kinfey/article/details/96095690),这里提醒需要把Keras.NET, Numpy.NET添加到ICSharpCore项目当中,否则没法使用Keras.NET.

02

创建JupyterNotebook

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

03

CNN算法定义

CNN算法定义,这个就是佛系了,毕竟这是深度学习的一部分,。CNN, 全名卷积神经网络(Convolutional Neural Network,简称CNN), 是一种前馈神经网络,人工神经元可以相应周围单元,可以进行大型图像处理。

(http://cs231n.github.io/convolutional-networks/)。CNN网络层级由输入层,卷积层,激活层,池化层,全连接FC层共5个部分组成,通过Keras可以很容易完成这5个部分的层级操作。具体看以下代码。

04

数据整理

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

05

训练和保存模型

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

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

06

测试模型

最后展示一个完整的Jupyter Notebook

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

基于.NET下的人工智能系列专题|.NET下的人工智能系列专题|用Keras.NET 做一个图像识别的训练...相关推荐

  1. 听说你想做一个汽车软件工程师?(下)

    在这个系列的第一篇文章 木城:听说你想做一个汽车软件工程师?(上)里,我们讨论了汽车软件工程师都有哪些职位.但是,就算是同样一个职位,比如"诊断工程师"吧!你给ADAS系统做诊断, ...

  2. 使用微信小程序做一个简易的下拉框,无动画效果,纯原生写法(下拉列表框)

    最近在开发的时候,需要使用下拉的效果,但是之前并没有进行书写过,今天做一个简单的demo,来记录一下微信小程序开发的下拉框效果. 微信小程序和jquery最大的区别就是是否操作dom, 微信小程序无需 ...

  3. 支持三个cpu的服务器,基于第三代至强可扩展处理器,宁畅G40系列服务器正式发布...

    原标题:基于第三代至强可扩展处理器,宁畅G40系列服务器正式发布 2021年4月7日,英特尔正式发布了代号为Ice Lake-SP的第三代至强可扩展处理器,并以此为基础推出了新一代数据中心平台,据了解 ...

  4. burpsuite靶场系列之客户端漏洞篇 - 跨站脚本(XSS)专题

    https://www.anquanke.com/post/id/245953 本系列介绍 PortSwigger是信息安全从业者必备工具burpsuite的发行商,作为网络空间安全的领导者,他们为信 ...

  5. BurpSuite练兵场系列之服务器端漏洞篇 - 身份验证专题

    https://www.anquanke.com/post/id/245533 robots 本系列介绍 PortSwigger是信息安全从业者必备工具burpsuite的发行商,作为网络空间安全的领 ...

  6. 基于TensorRT的BERT实时自然语言理解(下)

    基于TensorRT的BERT实时自然语言理解(下) BERT Inference with TensorRT 请参阅Python脚本bert_inference.py还有详细的Jupyter not ...

  7. 政、企、学三方视角下的智慧城市发展 | 2020中关村论坛“人工智能与城市可持续发展论坛”成功举办...

    人工智能技术在城市中孕育,城市亦为人工智提供了广阔的应用场景.如何更好地将智能与城市结合,是政府.企业与学术三界人士共同关心的重要问题.2020中关村论坛"人工智能与城市可持续发展论坛&qu ...

  8. 独家 | 基于数据预测的解释真的能增加用户对人工智能的信任吗?(附链接)...

    作者:Ingrid Fadelli,Tech Xplore 翻译:王可汗 校对:欧阳锦 本文约1000字,建议阅读8分钟 本文为大家介绍了一项最新的研究进展,它有助于理解人工智能的可解释性实际上如何影 ...

  9. 征文 | “‘互联网+’背景下大数据与税收征管的深度融合研究” 专题征文启事...

    党的十九大报告提出,推动互联网.大数据.人工智能和实体经济深度融合.国务院<促进大数据发展行动纲要>提出"将大数据作为提升政府治理能力的重要手段".随着互联网.大数据. ...

最新文章

  1. Windows xp下配置Apache、PHP环境及Oracle10g客户端
  2. Java synchronized的CPU层面实现细节
  3. C语言实现了一个具有头结点的单链表(附完整源码)
  4. spring boot自测_将测微仪与Spring Boot 2一起使用
  5. linearregression_机器学习-TensorFlow建模过程 Linear Regression线性拟合应用
  6. CV和NLP中的无监督预训练(生成式BERT/iGPT和判别式SimCLR/SimCSE)
  7. node.js服务端代码学习
  8. 转:PHP中文乱码问题
  9. linux进程管理——进程管理相关命令
  10. 三思笔记之一步一步学ORACLE
  11. php 唱吧导出,直播必备的十款电脑声音处理软件
  12. 这样一张手绘说明书,我竟然调试通了,SYN8086TTS模块现场评测教学
  13. 英语口语必备900句
  14. Python人工智能实例 │ 使用Haar级联进行人脸检测、使用CAMShift算法、光流法进行人脸追踪
  15. 怎么压缩gif图片大小?如何压缩gif又不影响画质
  16. Python 为图片和 PDF 上去掉水印,超简单快来学!
  17. 微信3.1.0.41逆向-微信3.1.0.41HOOK接口(WeChatHelper3.1.0.41.dll)使用说明
  18. 西北乱跑娃 --- 持续稳定的isbn接口
  19. NLP文本提取中打标签列表和方案
  20. 网页端接入海康摄像头画面操作指南

热门文章

  1. WPF将数据库和GridView绑定并更改GridView模板
  2. 基于Visual C++2010与windows SDK fo windows7开发windows7平台的tabletpc应用(1)-手写数学公式输入...
  3. Microsoft Teams的Outgoing Webhook开发入门
  4. windows10加载动画_如何关闭动画并使Windows 10看起来更快
  5. Install Odoo 11 on CentOS 7
  6. MVC身份验证及权限管理(转载)
  7. Java 解析XML的几种方法
  8. CentOS下MySQL忘记root密码解决方法【转载】
  9. Spring Security入门(3-4)Spring Security 异常处理、异常传递和异常获取
  10. 私活利器,docker快速部署node.js应用