一款 C# 编写的神经网络计算图框架
前言
深度学习技术的不断发展,神经网络在各个领域得到了广泛应用。为了满足 .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= newSigmodLayer();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 = newMSELoss();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技术匠]
社区,与其他热爱技术的同行一起交流心得,共同成长!
优秀是一种习惯,欢迎大家留言学习!