qwe 简易深度框架
qwe
github地址
简介
简单的深度框架,参考Ng的深度学习课程作业,使用了keras的API设计。
方便了解网络具体实现,避免深陷于成熟框架的细节和一些晦涩的优化代码。
网络层实现了Dense, Flatten, Convolution2D, Activation, Dropout等。
优化算法实现了带有动量的梯度下降,同时还有一个带正则的优化算法备选。
权重初始化有多维高斯分布和Xavier initialization两种。
目标函数有MSE,CategoricalCrossEntropy。
在测试中有全连接网络与CNN手写字体识别示例。
环境与安装
python 3.x
依赖
- numpy
- sklearn
- matplotlib
- numba
安装
无需安装,使用前请先设置PYTHONPATH路径
为qwe工程根目录
eg.qwe位于/home/test/qwe, 执行 export PYTHONPATH=$PYTHONPATH:/home/test/qwe
在config/basic.py中通过SWITCH_EXT选择是否开启扩展,默认关闭。
若选择开启,在qwe/src/ext目录下执行 python setup.py build_ext -i 即可
测试
在test目录下执行 python testfile.py 即可
目录结构
- src/
- ext/
- src/
- convUtil.pyx Cython的扩展,加速CNN
- src/
- layers/
1.activation.py 激活函数,sigmoid, ReLU, tanh
1.convolution2D.py 卷积层
1.simple_convolution2D.py 简单卷积未优化
1.dense.py 全连接层
1.dropout.py 丢弃层?
1.flatten.py 拉伸层
1.pool.py 池化层,max average - container.py 模型容器,equential
- initialization.py 参数初始化方法
- objective.py 目标函数
- optimizer.py 优化方法
- py_util.py py 实现的方法
- unit.py 计算单元
- util.py 一些方法
- ext/
- test/
- parse_mnist.py 解析mnist图片
- test_col2img.py 测试
- test_mnist_cnn.py 使用CNN训练 mnist
- test_mnist_nn.py 使用全连接训练 mnist
- test_nn.py 使用全连接训练sklearn一个数据集
- test_objective.py 测试
- test_unit.py 测试
qwe 简易深度框架的更多相关文章
- DirectX11 With Windows SDK--13 动手实现一个简易Effects框架、阴影效果绘制
前言 到现在为止,所有的教程项目都没有使用Effects11框架类来管理资源.因为在D3DCompile API (#47)版本中,如果你尝试编译fx_5_0的效果文件,会收到这样的警告: X4717 ...
- 使用Node.js实现简易MVC框架
在使用Node.js搭建静态资源服务器一文中我们完成了服务器对静态资源请求的处理,但并未涉及动态请求,目前还无法根据客户端发出的不同请求而返回个性化的内容.单靠静态资源岂能撑得起这些复杂的网站应用,本 ...
- 简易RPC框架-心跳与重连机制
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- 简易RPC框架-客户端限流配置
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- [转] 使用Node.js实现简易MVC框架
在使用Node.js搭建静态资源服务器一文中我们完成了服务器对静态资源请求的处理,但并未涉及动态请求,目前还无法根据客户端发出的不同请求而返回个性化的内容.单靠静态资源岂能撑得起这些复杂的网站应用,本 ...
- 【转】TCP/UDP简易通信框架源码,支持轻松管理多个TCP服务端(客户端)、UDP客户端
[转]TCP/UDP简易通信框架源码,支持轻松管理多个TCP服务端(客户端).UDP客户端 目录 说明 TCP/UDP通信主要结构 管理多个Socket的解决方案 框架中TCP部分的使用 框架中UDP ...
- 简易RPC框架-SPI
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- 自行实现一个简易RPC框架
10分钟写一个RPC框架 1.RpcFramework package com.alibaba.study.rpc.framework; import java.io.ObjectInputStrea ...
- 手动搭建简易web框架与django框架简介
目录 纯手写简易web框架 基于wsgiref模块 动静态网页 简单了解jinja2模块 框架请求流程 python主流web框架 django框架 简介 应用app 命令操作django pycha ...
随机推荐
- awk完全手册
awk简介 2. awk命令格式和选项 2.1. awk的语法有两种形式 2.2. 命令选项3. 模式和操作 3.1. 模式 3.2. 操作4. awk的环境变量 5. awk运算符 6. 记录和域 ...
- ng机器学习视频笔记(一)——线性回归、代价函数、梯度下降基础
ng机器学习视频笔记(一) --线性回归.代价函数.梯度下降基础 (转载请附上本文链接--linhxx) 一.线性回归 线性回归是监督学习中的重要算法,其主要目的在于用一个函数表示一组数据,其中横轴是 ...
- Mysql高可用架构(主从同步)
做高可用的优势 1.成本低 2.解决单点故障 3.不容易遇到性能瓶颈 一 .Mysql主从同步架构搭建案例 优点如下:·在业务繁忙阶段,在从服务器上可以执行查询工作(即我们常说的读写分离),降低主服务 ...
- 服务器开发之CGI后门
1.html代码 <form id = "form" name="form" method="post" action=". ...
- PHP定义字符串的四种方式
1.简介 在PHP中这门语言中,因为是弱类型语言,因此使用变量时不需提前定义即可使用. 我们在使用php进行开发的时候,大多数使用双引号.单引号进行定义字符串.既然有这两种方式,那么他们之间肯定是有区 ...
- JAVA并发编程学习笔记------锁顺序死锁
一.需求描述: 将资金从一个账户转移到另一个账户. 二.程序实现: (1)账户类: public class Account { private long account; public Accoun ...
- Django REST framework中的版本控制
1.REST framework版本控制的流程分析 1.1 determine_version方法的执行流程 首先,请求到达REST framework的CBV,执行CBV中的dispatch方法再次 ...
- “茴”字有四种写法,this也是一样
说到这个地方又想起以前高中还是初中学的<孔乙己>这个梗,但是这里的this显然实用性比那个要大很多,哈哈. 简单来说,this有四种应用场景,分别是在构造函数上.对象属性中.普通函数中.c ...
- IOS开发之记录用户登陆状态,ios开发用户登陆
IOS开发之记录用户登陆状态,ios开发用户登陆 上一篇博客中提到了用CoreData来进行数据的持久化,CoreData的配置和使用步骤还是挺复杂的.但熟悉CoreData的使用流程后,CoreDa ...
- mac给文件批量添加后缀名
for i in *;do mv "$i" "$i.mp4";done