前言
深度學習技術的不斷髮展,神經網路在各個領域得到了廣泛應用。為了滿足 .NET 開發的需求,推薦一款使用 C# 編寫的神經網路計算圖框架。
框架的使用方法接近 PyTorch,提供了豐富的示例和詳細的文件,幫助大家快速上手。
框架介紹
專案完全使用 C# 編寫,提供了一個透明的神經網路計算圖框架。使用者可以檢視和理解框架內部的任何實現細節。
框架支援多種網路結構,包括卷積神經網路(CNN)、反向傳播網路(BP)、全連線網路(FCN)、長短期記憶網路(LSTM)、卷積長短期記憶網路(ConvLSTM)和門控迴圈單元網路(GRU)。
每個示例都附帶了所需的資料內容,確保使用者能夠快速上手並進行實驗。
使用說明
- 損失函式支援:MESLOSS、交叉熵損失 (Cross-Entropy)
- 啟用函式支援:ReLU、Tanh、Sigmoid、Softmax
- 資料型別支援:二維資料 float[][] 和四維資料 float[][][,]
- 池化支援:平均池化、最大池化
- 其他支援:卷積層 (ConvLayer)、二維卷積層 (Conv2DLayer)、乘法層 (MulLayer)、轉置卷積層 (ConvTranspose2DLayer)
部分程式碼示例
//宣告兩個ConvLayer 和一個啟用函式SigmodLayer ConvLayer cl1 = new ConvLayer(13, 5, true); SigmodLayer sl = new SigmodLayer(); float lr = 0.5f; ConvLayer cl2 = new ConvLayer(5, 1, true); int i = 0,a=0; while (a < 5000) { dynamic ff = cl1.Forward(x); ff = sl.Forward(ff); ff = cl2.Forward(ff); //計算誤差 MSELoss mloss = new MSELoss(); var loss = mloss.Forward(ff, y); Console.WriteLine("誤差:" + loss); dynamic grid = mloss.Backward(); //反傳播w2 dynamic w22 = cl2.backweight(grid); //反傳播W1 dynamic grid1 = cl2.backward(grid); grid1 = sl.Backward(grid1); dynamic w11 = cl1.backweight(grid1); //更新引數 cl2.weights = Matrix.MatrixSub(cl2.weights, Matrix.multiply(w22.grid, lr)); cl2.basicData = Matrix.MatrixSub(cl2.basicData, Matrix.multiply(w22.basic, lr)); cl1.weights = Matrix.MatrixSub(cl1.weights, Matrix.multiply(w11.grid, lr)); cl1.basicData = Matrix.MatrixSub(cl1.basicData, Matrix.multiply(w11.basic, lr)); i++; a++; }
BP網路執行圖
CNN網路95%識別成功率
lstm網路預測PM2.5空氣質量
專案地址
Gitee:https://gitee.com/UDCS/WeaveAI
如果你覺得這篇文章對你有幫助,不妨點個贊支援一下!你的支援是我繼續分享知識的動力。如果有任何疑問或需要進一步的幫助,歡迎隨時留言。
也可以加入微信公眾號[DotNet技術匠] 社群,與其他熱愛技術的同行一起交流心得,共同成長!優秀是一種習慣,歡迎大家留言學習!