使用Google的Quickdraw创建MNIST样式数据集!
对于那些运行深度学习模型的人来说,MNIST是无处不在的。手写数字的数据集有许多用途,从基准测试的算法(在数千篇论文中引用)到可视化,比拿破仑的1812年进军更为普遍。数字如下所示:
它经久不衰的主要原因是缺乏替代品。在这篇文章中,我想介绍另一种方法,就是Google的QuickDraw数据集。2017年QuickDraw数据集应用于Google的绘图游戏Quick,Draw。该数据集由5000万幅图形组成。图纸如下所示:
构建您自己的QuickDraw数据集
我想了解您如何使用这些图纸并创建自己的MNIST数据集。Google使每个图纸变为可用的28x28灰度位图文件,这些可以作为MNIST 28x28灰度位图图像的替代品。并且Google已经将数据集公开。所有数据都位于Google的云端控制台中,但是对于这些图像,您需要使用numpy_bitmaps的这个链接。
您应该到达一个允许您下载任何类别图像的页面。然后选择类别,我选择眼镜,脸,铅笔和电视机。通过脸这个类别可以知道精细的绘画可能更难学习,您应该选择其他有趣的类别。
接下来的挑战是获得这些.npy文件并使用它们。这是一个简短的python gist ,我用来阅读.npy文件并将它们组合起来创建一个可以用来替代MNIST的含有80,000个图像的数据集。它们以hdf5格式保存,这种格式是跨平台的,经常用于深度学习。
用QuickDraw代替MNIST
我使用这个数据集代替MNIST。在Keras 教程中,使用Python中的自动编码器进行一些工作。下图显示了顶部的原始图像,并使用自动编码器在底部显示重建的图像。
接下来我使用了一个R语言的变分自编码器的数据集。以下是导入数据的代码片段:
library(rhdf5)
x_test <- t(h5read('x_test.h5', 'name-of-dataset'))
x_train <- t(h5read('x_train.h5', 'name-of-dataset'))
y_test <- (h5read('y_test.h5', 'name-of-dataset'))
y_train <- (h5read('y_train.h5', 'name-of-dataset'))
这是使用自定义的quickdraw数据集的可视化的潜在空间。
本文为编译文章,作者Rajiv Shah,原网址为 http://projects.rajivshah.com/blog/2017/07/14/QuickDraw/
- XmlWriter/XmlReader示例代码
- Silverlight Telerik控件学习:RadComboBox之自动完成(AutoComplete)
- Silverlight Telerik控件学习:数据录入、数据验证
- AI与自动驾驶
- python多线程学习笔记(超详细)
- Silverlight Telerik控件学习:RadTransitionControl
- Silverlight Telerik控件学习:弹出窗口RadWindow
- Andrew Ng机器学习课程笔记--week6(精度&召回率)
- Andrew Ng机器学习课程笔记--week5(下)
- silverlight: "[HtmlPage_NotEnabled] 调试资料字符串不可用"的解决
- Andrew Ng机器学习课程笔记--week5(上)
- Silverlight Telerik控件学习:带CheckBox复选框的树形TreeView控件
- Andrew Ng机器学习课程笔记--week4(神经网络)
- javascript:FF/Chrome 与 IE 动态加载元素的区别
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 深入浅出hiredis -- C++操作redis
- redis学习(十五)
- nginx反向代理’/’的问题记录
- 简说中台
- JVM进阶
- MapperReduce常见错误及解决方案
- MapReduce案例之寻找共同好友
- JavaScript或ES6如何实现多继承总结【Mixin混合继承模式】
- Hadoop之MapReduce开发总结
- python之文件操作
- 血的教训!千万别在生产使用这些 redis 指令
- Python selenium chrome parses blob url
- 实战|仅用18行JavaScript构建一个倒数计时器
- 译|通过Node和Redis进行API速率限制
- EasySwoole实现Execl导入导出