深度学习(18)神经网络与全连接层一: 数据加载
深度学习(18)神经网络与全连接层一: 数据加载
- 1. 常用数据集
- 2. MNIST数据集
- (1) MNIST样本
- (2) MNIST加载案例
- 3. CIFAR10/100
- (1) CIFAR10/100样本
- (2) CIFAR10/100加载案例
- (3) tf.data.Dataset
- (4) .shuffle(打散功能)
- (5) .map(数据预处理功能)
- (6) .batch
- (7) StpIteration
- (8) .repeat()
- (9) For example
Outline
- keras.datasets
- tf.data.Dataset.from_tensor_slices
- shuffle
- map
- batch
- repeat
- we will talk Input Pipeline later
1. 常用数据集
keras.datasets
- boston housing
- Boston housing price regression dataset.
- mnist/fashion mnist
- MNIST/Fashion-MNIST dataset.
- cifar10/100
- small images classification dataset.
- imdb
- sentiment clssification dataset.
2. MNIST数据集
(1) MNIST样本
- 图片的shape=[28, 28, 1],共有70k张图片,其中60k张作为训练集,10k张作为测试集。
(2) MNIST加载案例
(a)(x, y), (x_test, y_test) = kares.datasets.mnist.load_data()
: 自动下载,管理,解析,读取,转换这一系列的工作,最终拿到的是一个Numpy的格式,其中(x, y)为train,即训练集,x.shape=[60000, 28, 28],y.shape=[60000,]; (x_test, y_test)为test,即测试集,x_test.shape=[10000, 28, 28],y_test.shape=[10000,];
(b)x.min()=0; x.max()=255
; 注意这里的min和max都是Numpy里的API,这俩值代表了一张图片里每个像素点的灰度值在[0~255]之间; 为了方便计算,需要归一化操作,在后边的操作中需要将其除以255,来达到将其值控制在[01](或者[-11]、[-0.5~0.5],具体怎么处理要看具体应用目的)之间的目的;
(c)y[:4]
: 取前4张图片的y值,即标签值,为[5, 0, 4, 1],即代表第一章图片的label值为5; 即代表第二章图片的label值为0; 即代表第三章图片的label值为4; 即代表第四章图片的label值为1; 数据类型为unit8;
(d)y_onehot = tf.one_hot(y, depth=10)
: 将y进行onehot编码,因为共有10个数字类别,所以设置depth=10;
(e)y_onehot[:2]
: 查看前两个元素,即第一个元素的标签值为“5”,所以其onehot编码为[0., 0., 0., 0., 1., 0., 0., 0., 0., 0.,]; 第一个元素的标签值为“0”,所以其onehot编码为[1., 0., 0., 0., 0., 0., 0., 0., 0., 0.,];
3. CIFAR10/100
(1) CIFAR10/100样本
- CIFAR10表示共有10种类型(大类,例如车、狗、鸟等等)的图片; CIFAR100表示共有100种类型(小类,例如狗分为边牧、田园犬等等)的图片; CIFAR10和CIFAR100是同一个数据集;
- 每张彩色图片的shape=[32, 32, 3];
(2) CIFAR10/100加载案例
(a)(x, y), (x_test, y_test) = kares.datasets.cifar10.load_data()
: 加载与解析CIFAR10数据集;
(x, y), (x_test, y_test) = kares.datasets.cifar100.load_data(): 加载与解析CIFAR100数据集;
(b) 输入输出
训练集输入x.shape=[50000, 32, 32, 3];
训练集输出y.shape=[50000, 1];
测试集输入x_test.shape=[10000, 32, 32, 3];
测试集输出y_test.shape=[10000, 1];
(3) tf.data.Dataset
- from_tensor_slices()
(a)db = tf.data.Dataset.from_tensor_slices(x_test)
: 利用from_tensor_slices()函数将Numpy类型的x_test转换为Dataset的实例,db就可以很方便地进行迭代操作;
(b)next(iter(db)).shape: iter(db)
为迭代器,即it = iter(db) →\to→ next(it);
(c) from_tensor_slice()比“先将数据转换为Tensor类型再一个个读取的方法”要好很多;
(d)db = tf.data.Dataset.from_tensor_slices((x_test, y_test))
: 这里可以看出,Dataset可以传入两个参数,x_test即images,y_test即label;
(4) .shuffle(打散功能)
(a)db = db.shuffle(10000)
: 将[0~10000]区域内的样本随机打散,注意打散的时候x_test对应的y_test必须保持一致;
(5) .map(数据预处理功能)
(a)preprocess(x, y)
: 定义一个数据预处理的函数;
(b)db2 = db.map(preprocess)
: 定义预处理函数后,就可以使用map()函数直接调用预处理函数对数据集进行预处理;
(6) .batch
(a)db3 = db2.batch(32)
: 将数据集划分为1个batch32张图片;
(7) StpIteration
(8) .repeat()
(9) For example
参考文献:
[1] 龙良曲:《深度学习与TensorFlow2入门实战》
深度学习(18)神经网络与全连接层一: 数据加载相关推荐
- 深度学习之浅谈全连接层
参考:https://www.zhihu.com/question/41037974 全连接层 全连接层(fully connected layers,FC)在整个卷积神经网络中起到"分类器 ...
- 深度学习(21)神经网络与全连接层四: 输出方式
深度学习(21)神经网络与全连接层四: 输出方式 1. y∈Rdy∈R^dy∈Rd 2. yi∈[0,1]y_i∈[0,1]yi∈[0,1] 3. sigmoid函数 (1) 目的 (2) tf.s ...
- 深度学习(22)神经网络与全连接层五: 误差计算
深度学习(22)神经网络与全连接层五: 误差计算 1. MSE 2. Entropy(熵) 3. Cross Entropy 4. Binary Classification 5. Single ou ...
- 深度学习(19)神经网络与全连接层二: 测试(张量)实战
深度学习(19)神经网络与全连接层二: 测试(张量)实战 1. 传入测试集数据 2. 数据类型转换 3. 创建test_db 4. test/evluation 5. 创建神经网络 6. 输出 7. ...
- MINIST深度学习识别:python全连接神经网络和pytorch LeNet CNN网络训练实现及比较(三)...
版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com 在前两篇文章MINIST深度学习识别:python全连接神经网络和pytorch LeNet CNN网 ...
- 卷积层和全连接层的区别_卷积神经网络中全连接层作用理解总结
前言 一般来说,卷积神经网络会有三种类型的隐藏层--卷积层.池化层.全连接层.卷积层和池化层比较好理解,主要很多教程也会解释. • 卷积层(Convolutional layer)主要是用一个采样器 ...
- 神经网络学习(二)Tensorflow-简单神经网络(全连接层神经网络)实现手写字体识别
神经网络学习(二)神经网络-手写字体识别 框架:Tensorflow 1.10.0 数据集:mnist数据集 策略:交叉熵损失 优化:梯度下降 五个模块:拿数据.搭网络.求损失.优化损失.算准确率 一 ...
- Python学习笔记--pytorch--随机梯度下降、神经网络与全连接层
随机梯度下降 是一个向量,代表函数在某一个点增长的方向,模代表了在该点增长的速率 影响搜索过程的因素: 初始状态,学习率,动量 激活函数 1.torch.sigmoid (0,1) a=torch.l ...
- 神经网络的全连接层_深度神经网络全连接层
一.概念 全连接层一般在网络的最后部分做分类输出,全连接层的有m个输入和n个输出,每一个输出都和所有的输入相连,相连的权重w都是不一样的,同时每一个输出还有一个bias. 二.前向全连接 假设输入是4 ...
最新文章
- SQL SERVER中什么情况会导致索引查找变成索引扫描
- C#将DataTable转换成list的方法
- php中mysql自增_MySQL的自增字段
- React简单表单最佳实践
- ubuntu下安装配置hadoop
- Android总结 之 AsyncTask(二)
- 用chkconfig配置linux自启动服务,用chkconfig配置linux自启动服务
- java 强制转换 效率_Java 性能优化:35 个小细节,让你提升 Java 代码的运行效率...
- session 拦截器中获取不到session值_拦截器实现登陆验证
- Ubuntu12.04中如何让命令行路径变短
- vb连接oracle 工程,VB 连接Oracle数据库
- 5个微信隐藏功能大揭秘(七夕表白代码)
- HTML5代码雨程序
- 01背包问题——大背包:
- 1块钱30分钟利用华为云服务器配置一台云电脑并搭建一个简易网站(步步截图较详细)
- 上海区域赛Unlock the Cell Phone
- amdr7-4700linux,Yoga14s 2021 ARH R7 4800H 安装Arch Linux
- 深度学习:Q-learning收敛证明
- mac 两种视频转音频方法
- WRF替换静态地理数据中的土地利用数据(WRF替换下垫面数据)
热门文章
- Scrapped or attached views may not be recycled. isScrap:false isAttached:true错误
- opencv 阈值分割_CVPR2019实例分割Mask Scoring RCNN
- web flash rtmp_基于RTMP和WebRTC开发大规模低延迟(1000毫秒内)直播系统
- Android开发之自定义view预览不显示的问题
- 人工智能应用上的九大障碍
- Citrix Provisioning Services:Windows 10 VDA计算机的登录性
- centos7环境下ELK部署之elasticsearch
- Nhibernate+SQLite 入门实例指南二 类的继承、多态关系
- Error:Unable to capture view hierarchy
- 使用 rem 实现 适配各种屏幕布局