LazyNet-一款为理解深度学习而生的学习框架

前言

很多小伙伴还在为弄不懂深度学习整个流程而烦恼,比如图像数据如何读入?数据在网络之间如何传递?如何前向计算?如何反向计算?如何更新权重?如何预测输出?博主利用每天晚上的时间,历经两个星期,为大家带来这款为理解深度学习而生的学习框架,命名为LazyNet,为什么呢?因为此框架真的很简单,动动手指头就能明白整个深度学习流程了!

LazyNet优势

  • 不依赖GPU,任何CPU均可
  • 除OpenBLAS、OpenCV外,不依赖任何第三方
  • 纯C++代码
  • 代码简介明了,数据流简单易懂
  • 相关原理在代码里面做了详细说明

LazyNet传送门

  • 传送门(若对您有帮助,欢迎star和fork)

LazyNet简介

一、支持系统

  • Windows7/10(强烈推荐,因为可以直观调试)
  • Linux(可自己写简易makefile)
  • Mac(暂未尝试)

二、环境搭建

  • CPU
  • VS2015(Windows强烈推荐)

三、示例数据

  • mnist400(train200-0,train200-1,test20-0,test20-1)

四、示例网络

LayerschannelKernel_sizestridepadInput_sizeOutput_size
Conv11631028x2826x26
Relu116---26x2626x26
Maxpool11622026x2613x13
Conv23231013x1311x11
Relu232---11x1111x11
Maxpool23222011x116x6
Conv3643106x64x4
Relu364---4x44x4
Ip1128---4x41x1
Relu4128---1x11x1
Ip22---1x11x1
softmax----1x11x1

五、示例代码

#include "lazy_net.h"

int main()
{
	//data information
	string data_path = "data/";
	int data_batch = 20;
	int data_channel = 3;
	int data_size = 28;

	//hyperparameter
	int max_iter = 1000;
	int disp_iter = 10;
	float weight_decay = 0.0005;
	float base_lr = 0.01;
	float momentum = 0.9;
	string lr_policy = "inv";
	float power = 0.75;
	float gamma = 0.0001;
	int test_iter = 50;

	LazyNet lazy_net(data_path, data_batch, data_channel, 
		data_size, max_iter, disp_iter,
		weight_decay, base_lr, momentum,
		lr_policy, power, gamma, test_iter);

	lazy_net.TrainNet();

	return 0;
}

六、示例结果

尾注

虽然这款学习框架很好理解,有利于梳理整个深度学习流程,但是也有几点不足之处,后面有时间会做相应调整

  • 网络重塑性不好,网络已嵌入代码,后面考虑用文本的形式写入
  • 训练数据灵活性不好,数据形式已嵌入代码,后面考虑利用random复写
  • 主要layers基于caffe修改而成,后面考虑去除OpenBLAS

 

任何问题请加唯一QQ2258205918(名称samylee)!

唯一VX:samylee_csdn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值