用于神经网络的计算图框架 WeaveNet
2020/7/25 18:26:59 【次浏览】 开源中国
WeaveNet 是一个使用 C# 编写的用于神经网络的计算图框架 computational graph。带有cnn、bp、fcn、lstm、convlstm 等示例。使用方法接进 pytorch。
软件架构
架构完全使用c#编写,可以看到内部任何细节的实现,包含cnn,bp,fcn,lstm,convlstm等示例内容,包含示例所用的数据内容。
使用说明
LOSS支持:MESLOSS,cross-entropy
激活函数支持:ReLu,Tanh,Sigmod,Softmax
数据类型支持: float[][] 与 float[][][,],二维与四维
池化支持:平均池化,最大池化
其他支持:ConvLayer,Conv2DLayer,MulLayer
部分BP代码示例
//声明两个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网络0.93识别成功率
lstm网络预测PM2.5空气质量
手机扫码查看当前文章:
如本网转载稿涉及版权等问题,请作者见稿后在两周内速来电与我们联系, 详见版权声明