Pytorch加载并可视化FashionMNIST指定层(Udacity)
加载并可视化FashionMNIST
在这个notebook中,我们要加载并查看 Fashion-MNIST 数据库中的图像。
任何分类问题的第一步,都是查看你正在使用的数据集。这样你可以了解有关图像和标签格式的一些详细信息,以及对如何定义网络以识别此类图像集中的模式的一些见解。
PyTorch有一些你可以使用的内置数据集,而FashionMNIST就是其中之一,它已经下载到了这个notebook中的data/目录中,所以我们要做的就是使用FashionMNIST数据集类加载这些图像,并使用DataLoader批量加载数据。
加载数据
数据集类和张量
torch.utils.data.Dataset是一个表示数据集的抽象类,而 FashionMNIST类是这个数据集类的扩展,它可以让我们加载批量的图像/标签数据,并且统一地将变换应用于我们的数据,例如将所有图像转换为用于训练神经网络的张量。张量类似于numpy数组,但也可以在GPU上使用,用来加速计算 。
下面,让我们看一看如何构建训练数据集。
# our basic libraries
import torch
import torchvision # data loading and transforming
from torchvision.datasets import FashionMNIST
from torch.utils.data import DataLoader
from torchvision import transforms # The output of torchvision datasets are PILImage images of range [0, 1].
# We transform them to Tensors for input into a CNN ## Define a transform to read the data in as a tensor
data_transform = transforms.ToTensor() # choose the training and test datasets
train_data = FashionMNIST(root='./data', train=True,
download=False, transform=data_transform) # Print out some stats about the training data
print('Train data, number of images: ', len(train_data))
Train data, number of images: 60000
数据迭代与批处理
接下来,我们将要使用的是torch.utils.data.DataLoader,它是一个可以批量处理数据并置乱数据的迭代器。
在下一个单元格中,我们将数据置乱,并以大小为20的批量加载图像/标签数据。
# prepare data loaders, set the batch_size
## TODO: you can try changing the batch_size to be larger or smaller
## when you get to training your network, see how batch_size affects the loss
batch_size = 20 train_loader = DataLoader(train_data, batch_size=batch_size, shuffle=True) # specify the image classes
classes = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',
'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
将一些训练数据可视化
这个单元格会遍历该训练数据集,并使用dataiter.next()加载一个随机批次的图像/标签数据。然后,它会在2 x batch_size/2网格中将这批图像和标签可视化。
import numpy as np
import matplotlib.pyplot as plt %matplotlib inline # obtain one batch of training images
dataiter = iter(train_loader)
images, labels = dataiter.next()
images = images.numpy() # plot the images in the batch, along with the corresponding labels
fig = plt.figure(figsize=(25, 4))
for idx in np.arange(batch_size):
ax = fig.add_subplot(2, batch_size/2, idx+1, xticks=[], yticks=[])
ax.imshow(np.squeeze(images[idx]), cmap='gray')
ax.set_title(classes[labels[idx]])

更详细地查看图像
该数据集中的每个图像都是28x28像素且已归一化的灰度图像。
关于归一化的说明
归一化可以确保在训练CNN的过程中,先后经历前馈与反向传播步骤时,每个图像特征都将落入类似的值范围内,而不是过度激活该网络中的特定层。在前馈步骤期间,该神经网络会接收输入图像并将每个输入像素乘以一些卷积滤波器权重并加上偏差,然后应用一些激活和池化函数。如果没有归一化,反向传播步骤中的计算梯度将会非常大,并且会导致我们的损失增加而不是收敛。
# select an image by index
idx = 2
img = np.squeeze(images[idx]) # display the pixel values in that image
fig = plt.figure(figsize = (12,12))
ax = fig.add_subplot(111)
ax.imshow(img, cmap='gray')
width, height = img.shape
thresh = img.max()/2.5
for x in range(width):
for y in range(height):
val = round(img[x][y],2) if img[x][y] !=0 else 0
ax.annotate(str(val), xy=(y,x),
horizontalalignment='center',
verticalalignment='center',
color='white' if img[x][y]<thresh else 'black')

Pytorch加载并可视化FashionMNIST指定层(Udacity)的更多相关文章
- pytorch 加载mnist数据集报错not gzip file
利用pytorch加载mnist数据集的代码如下 import torchvision import torchvision.transforms as transforms from torch.u ...
- 加载的DAL数据访问层的类型
using System; using System.Collections; using System.Reflection; using CSFrameworkV4_5.Core; using C ...
- [Pytorch]Pytorch加载预训练模型(转)
转自:https://blog.csdn.net/Vivianyzw/article/details/81061765 东风的地方 1. 直接加载预训练模型 在训练的时候可能需要中断一下,然后继续训练 ...
- pytorch加载语音类自定义数据集
pytorch对一下常用的公开数据集有很方便的API接口,但是当我们需要使用自己的数据集训练神经网络时,就需要自定义数据集,在pytorch中,提供了一些类,方便我们定义自己的数据集合 torch.u ...
- 使用jQuery加载html页面到指定的div
一.jQuery加载一个html页面到指定的div里 把a.html里面的某一部份的内容加载到b.html的一个div里.比如:加载a.html里面的<div id=“row"> ...
- [ActionScript 3.0] 加载子swf需要指定应用程序域
var ldr:Loader = new Loader(); ldr.load(new URLRequest("assets/test.swf")); 如上,如果在flash帧上写 ...
- Tensorflow学习第1课——从本地加载MNIST以及FashionMNIST数据
很多Tensorflow第一课的教程都是使用MNIST或者FashionMNIST数据集作为示例数据集,但是其给的例程基本都是从网络上用load_data函数直接加载,该函数封装程度比较高,如果网络出 ...
- 基于layer封装的异步加载分部视图弹出层
背景:之前一直用的artdialog,但是样式不是很好看,后来偶然看到layer,觉得不错,但是对于.net mvc来说,不能像artdialog一样弹出分部视图是很难受的.所以下面的方法就解决了. ...
- pytorch 加载数据集
pytorch初学者,想加载自己的数据,了解了一下数据类型.维度等信息,方便以后加载其他数据. 1 torchvision.transforms实现数据预处理 transforms.Totensor( ...
随机推荐
- NX导入DWG失败
给客户开发的NX导入DWG图纸功能,部分电脑偶尔出现导入失败的情况,且几乎没有规律可言.客户无法理解,坚持认为是代码的问题,毕竟使用的是我们二次开发的功能.我本机没有问题,在某些出问题的电脑上也尝试多 ...
- 多NX如何共存
在安装NX时,本机已经装了NX其他版本,只能修改当前程序,无法安装,那么多NX如何共存? 如图:先安装了32位NX8.5,后安装64位NX 8.5时弹的框. 解决办法有两种: 1)将已经安装的NX目录 ...
- 基于docker部署jenkins
1. 拉镜像 和其他的部署的镜像的方式一样,通常是直接使用docker search jenkins 然后直接docker pull jenkins 此时,在安装插件的时候发现插件都安装失败,提示je ...
- python中不需要函数重载的原因
函数重载主要是为了解决两个问题: 1.可变参数类型 2.可变参数个数 并且函数重载一个基本的设计原则是,仅仅当两个函数除了参数类型和参数个数不同以外,其功能是完全相同的,此时才使用函数重载,如果两个函 ...
- burp suite之Target(目标)
Target : 将攻击的目标,全部展现到Target下. Site map:站点地图 Scope: 范围 目录爬行: 复制所有子目录的链接 Spidor this host: 发送至Spidor选项 ...
- Kafka消费与心跳机制
1.概述 最近有同学咨询Kafka的消费和心跳机制,今天笔者将通过这篇博客来逐一介绍这些内容. 2.内容 2.1 Kafka消费 首先,我们来看看消费.Kafka提供了非常简单的消费API,使用者只需 ...
- (一)jenkins+git+docker
目录 一.发布流程设计 1.工作流程 2.环境规划如下 二.部署Git仓库 1.创建Git用户并设置密码 2.创建仓库 3.免密访问 4.在jenkins那台机上做ssh认证 三.准备Jenkins环 ...
- C# lock 死锁问题排查方法
多线程程序发生死锁,某些重要线程卡住,不正常工作.排查起来非常麻烦.以下内容记录排查方法 1.确定死锁的位置,一般死锁会lock到某一行具体的代码,比如我就死锁在类似如下代码中 public void ...
- css引入本地字体
1.首先创建一个字体 @font-face { font-family: 'number_font'; //创建一个number_font字体名称 src: url('../../../style/F ...
- JVM垃圾回收的基础知识
什么是垃圾? 没有任何引用指向的对象,就是垃圾 如何找到垃圾?(2 种方法) 过程:先找到正在使用的对象,然后把没有正在使用的对象进行回收 1.引用数-Reference-Count 被引用数为 0 ...