基于.NET下的人工智能系列专题|.NET下的人工智能系列专题|用Keras.NET 做一个图像识别的训练...
? ? .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 做一个图像识别的训练...的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 【朝夕技术专刊】WebApi部署多服务器
 - 下一篇: WTM系列视频教程:WebApi