当前位置: 首页 > news >正文

深度学习工程模板

使用方式

下载工程

git clone https://github.com/SpikeKing/DL-Project-Template

创建和激活虚拟环境

 
 
virtualenv venv
source venv/bin/activate

安装Python依赖库

pip install -r requirements.txt

开发流程

 ●  定义自己的数据加载类,继承DataLoaderBase;
 ●  定义自己的网络结构类,继承ModelBase;
 ●  定义自己的模型训练类,继承TrainerBase;
 ●  定义自己的样本预测类,继承InferBase;
 ●  定义自己的配置文件,写入实验的相关参数;

执行训练模型和预测样本操作。

示例工程

识别MNIST库中手写数字,工程simple_mnist

训练:

python main_train.py -c configs/simple_mnist_config.json

预测:

 
 
python main_test.py -c configs/simple_mnist_config.json -m simple_m
nist.weights.10-0.24.hdf5
32682a479b70136475412d763cd098fb689ca2bf

TensorBoard

3bfa22c484a6c6d00c2d8da9dd642d59210ceb6a

工程架构

e0032d645ac4a8a3dc56abfb58def0b4530056f9

主要组件

DataLoader

操作步骤:

 ●  创建自己的加载数据类,继承DataLoaderBase基类;
 ●  覆写 get_train_data() get_test_data() ,返回训练和测试数据;

Model

操作步骤:

 ●  创建自己的网络结构类,继承ModelBase基类;
 ●  覆写 build_model() ,创建网络结构;
 ●  在构造器中,调用 build_model()

注意:plot_model()支持绘制网络结构;

Trainer

操作步骤:

 ●  创建自己的训练类,继承TrainerBase基类;
 ●  参数:网络结构model、训练数据data;
 ●  覆写 train() ,fit数据,训练网络结构;

注意:支持在训练中调用callbacks,额外添加模型存储、TensorBoard、FPR度量等。

Infer

操作步骤:

 ●  创建自己的预测类,继承InferBase基类;
 ●  覆写 load_model() ,提供模型加载功能;

 ●  覆写predict(),提供样本预测功能;

Config

定义在模型训练过程中所需的参数,JSON格式,支持:学习率、Epoch、Batch等参数。

Main

训练:

 ●  创建配置文件config;
 ●  创建数据加载类dataloader;
 ●  创建网络结构类model;
 ●  创建训练类trainer,参数是训练和测试数据、模型;
 ●  执行训练类trainer的train();

预测:

 ●  创建配置文件config;
 ●  处理预测样本test;
 ●  创建预测类infer;

 ●  执行预测类infer的predict();


原文发布时间为:2018-10-24

本文来自云栖社区合作伙伴“大数据挖掘DT机器学习”,了解相关信息可以关注“大数据挖掘DT机器学习”。

相关文章:

  • Spring Framework 4.2 中的新功能和增强功能
  • vue build后。静态资源的404问题探究,解决
  • nginx启动失败问题集锦
  • 第2章 变量和基本类型 附2 --声明和定义的区别
  • MySQL,binlog2sql回滚操作测试
  • 2015年9月30日的作业
  • 201771010126 王燕《面向对象程序设计(Java)》第九周学习总结
  • icomoon用法
  • [BZOJ] 2044: 三维导弹拦截
  • this class is not key value coding-compliant for the key XXX错误的解决方法
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • LeetCode——Implement Trie (Prefix Tree)
  • 从普通程序员到身价过百亿:追求长期价值的耐心,决定了你能走多远
  • Android图形显示系统——概述
  • WPF中查看PDF文件
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 2017 前端面试准备 - 收藏集 - 掘金
  • Hibernate【inverse和cascade属性】知识要点
  • Linux gpio口使用方法
  • php ci框架整合银盛支付
  • vue的全局变量和全局拦截请求器
  • 安装python包到指定虚拟环境
  • 测试如何在敏捷团队中工作?
  • 从tcpdump抓包看TCP/IP协议
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 欢迎参加第二届中国游戏开发者大会
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 日剧·日综资源集合(建议收藏)
  • 我是如何设计 Upload 上传组件的
  • 一个JAVA程序员成长之路分享
  • #QT项目实战(天气预报)
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (52)只出现一次的数字III
  • (9)STL算法之逆转旋转
  • (LeetCode) T14. Longest Common Prefix
  • (顺序)容器的好伴侣 --- 容器适配器
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (一)Java算法:二分查找
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • ***利用Ms05002溢出找“肉鸡
  • .dwp和.webpart的区别
  • .NET Core WebAPI中封装Swagger配置
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET多线程执行函数
  • .NET设计模式(11):组合模式(Composite Pattern)
  • @FeignClient注解,fallback和fallbackFactory
  • @Pointcut 使用
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell
  • [] 与 [[]], -gt 与 > 的比较
  • [100天算法】-x 的平方根(day 61)
  • [20190113]四校联考
  • [Android 13]Input系列--获取触摸窗口