『MXNet』第六弹_数据处理API(待续)

一、Gluon数据加载

图片数据(含标签)加载函数:gluon.data.vision.ImageFolderDataset

给出ImageFolderDataset类的描述,

Init signature: mxnet.gluon.data.vision.datasets.ImageFolderDataset(root, flag=1, transform=None)
Source:
class ImageFolderDataset(dataset.Dataset):
    """A dataset for loading image files stored in a folder structure like::

        root/car/0001.jpg
        root/car/xxxa.jpg
        root/car/yyyb.jpg
        root/bus/123.jpg
        root/bus/023.jpg
        root/bus/wwww.jpg

    Parameters
    ----------
    root : str
        Path to root directory.
    flag : {0, 1}, default 1  # 控制彩色or灰度
        If 0, always convert loaded images to greyscale (1 channel).
        If 1, always convert loaded images to colored (3 channels).
    transform : callable, default None
        A function that takes data and label and transforms them:
    ::

        transform = lambda data, label: (data.astype(np.float32)/255, label)

    Attributes
    ----------
    synsets : list  # 查看类别,实际就是文件名
        List of class names. `synsets[i]` is the name for the integer label `i`
    items : list of tuples  # 生成的数据
        List of all images in (filename, label) pairs.
    """

实例:

train_imgs = gluon.data.vision.ImageFolderDataset(
    data_dir+‘/hotdog/train‘,
    transform=lambda X, y: transform(X, y, train_augs))
test_imgs = gluon.data.vision.ImageFolderDataset(
    data_dir+‘/hotdog/test‘,
    transform=lambda X, y: transform(X, y, test_augs))

print(train_imgs)
print(train_imgs.synsets)
data = gluon.data.DataLoader(train_imgs, 32, shuffle=True)
<mxnet.gluon.data.vision.datasets.ImageFolderDataset object at 0x7fbed5641c18>
[‘hotdog‘, ‘not-hotdog‘]

batch迭代器:gluon.data.DataLoader

具有特殊方法,def __iter__(self),其实例可以被迭代,也就是每次返回一个batch的数据,在第一维度上切割。

首个定位参数文档如下:

dataset : Dataset
        Source dataset. Note that numpy and mxnet arrays can be directly used
        as a Dataset.

最后生成的X_batch送入net(X_batch)向前传播,y_batch送入loss(output,y_batch)计算loss后反向传播。

二、MXNet数据加载

https://blog.csdn.net/qq_36165459/article/details/78394322

https://blog.csdn.net/u012759136/article/details/50208733#%E4%BA%8C%E4%BB%8E%E5%8E%9F%E7%94%9F%E6%95%B0%E6%8D%AE%E7%94%9F%E6%88%90lst%E6%96%87%E4%BB%B6

原文地址:https://www.cnblogs.com/hellcat/p/9094806.html

时间: 2024-11-01 22:44:32

『MXNet』第六弹_数据处理API(待续)的相关文章

『MXNet』第七弹_分类器demo示意

解压文件命令: with zipfile.ZipFile('../data/kaggle_cifar10/' + fin, 'r') as zin: zin.extractall('../data/kaggle_cifar10/') 拷贝文件命令: shutil.copy(原文件, 目标文件) 整理数据 我们有两个文件夹'../data/kaggle_cifar10/train'和'../data/kaggle_cifar10/test',一个记录了文件名和类别的索引文件 我们的目的是在新的文件

『MXNet』第八弹_物体检测之SSD

预.API介绍 mxnet.metric from mxnet import metric cls_metric = metric.Accuracy() box_metric = metric.MAE() cls_metric.update([cls_target], [class_preds.transpose((0,2,1))]) box_metric.update([box_target], [box_preds * box_mask]) cls_metric.get() box_metr

『MXNet』第十一弹_符号式编程专题

一.符号分类 符号对我们想要进行的计算进行了描述, 下图展示了符号如何对计算进行描述. 我们定义了符号变量A, 符号变量B, 生成了符号变量C, 其中, A, B为参数节点, C为内部节点! mxnet.symbol.Variable可以生成参数节点, 用于表示计算时的输入. 二.常用符号方法 一个Symbol具有的属性和方法如下图所示: 关联节点查看 list_argument()用来检查计算图的输入参数; list_output()返回此Symbol的所有输出,输出的自动命名遵循一定的规则

『PyTorch』第六弹_最小二乘法的不同实现手段(待续)

PyTorch的Variable import torch as t from torch.autograd import Variable as V import matplotlib.pyplot as plt from IPython import display # 指定随机数种子 t.manual_seed(1000) def get_fake_data(batch_size=8): x = t.rand(batch_size,1)*20 y = x * 2 + 3 + 3*t.ran

『MXNet』第五弹_多GPU并行程序设计

资料原文 一.概述思路 假设一台机器上有k个GPU.给定需要训练的模型,每个GPU将分别独立维护一份完整的模型参数. 在模型训练的任意一次迭代中,给定一个小批量,我们将该批量中的样本划分成k份并分给每个GPU一份. 然后,每个GPU将分别根据自己分到的训练数据样本和自己维护的模型参数计算模型参数的梯度. 接下来,我们把k个GPU上分别计算得到的梯度相加,从而得到当前的小批量梯度. 之后,每个GPU都使用这个小批量梯度分别更新自己维护的那一份完整的模型参数. 二.网络以及辅助函数 使用“卷积神经网

『PyTorch』第四弹_通过LeNet初识pytorch神经网络_下

『PyTorch』第四弹_通过LeNet初识pytorch神经网络_上 # Author : Hellcat # Time : 2018/2/11 import torch as t import torch.nn as nn import torch.nn.functional as F class LeNet(nn.Module): def __init__(self): super(LeNet,self).__init__() self.conv1 = nn.Conv2d(3, 6, 5)

『PyTorch』第十弹_循环神经网络

『cs231n』作业3问题1选讲_通过代码理解RNN&图像标注训练 对于torch中的RNN相关类,有原始和原始Cell之分,其中RNN和RNNCell层的区别在于前者一次能够处理整个序列,而后者一次只处理序列中一个时间点的数据,前者封装更完备更易于使用,后者更具灵活性.实际上RNN层的一种后端实现方式就是调用RNNCell来实现的. 一.nn.RNN import torch as t from torch import nn from torch.autograd import Variab

『PyTorch』第三弹_自动求导

torch.autograd 包提供Tensor所有操作的自动求导方法. 数据结构介绍 autograd.Variable 这是这个包中最核心的类. 它包装了一个Tensor,并且几乎支持所有的定义在其上的操作.一旦完成了你的运算,你可以调用 .backward()来自动计算出所有的梯度,Variable有三个属性: 访问原始的tensor使用属性.data: 关于这一Variable的梯度则集中于 .grad: .creator反映了创建者,标识了是否由用户使用.Variable直接创建(No

『PyTorch』第五弹_深入理解Tensor对象_中上:索引

一.普通索引 示例 a = t.Tensor(4,5) print(a) print(a[0:1,:2]) print(a[0,:2]) # 注意和前一种索引出来的值相同,shape不同 print(a[[1,2]]) # 容器索引 3.3845e+15 0.0000e+00 3.3846e+15 0.0000e+00 3.3845e+15 0.0000e+00 3.3845e+15 0.0000e+00 3.3418e+15 0.0000e+00 3.3845e+15 0.0000e+00 3