通过迭代器获取数据

简介: %pylab inlinefrom keras.datasets import mnistimport mxnet as mxfrom mxnet import ndfrom mxnet import autograd import randomfrom mxnet import gluon(x_train, y_train), (x_test, y_test) = mnist.
%pylab inline
from keras.datasets import mnist
import mxnet as mx
from mxnet import nd
from mxnet import autograd 
import random
from mxnet import gluon

(x_train, y_train), (x_test, y_test) = mnist.load_data()
num_examples = x_train.shape[0]
num_inputs = x_train.shape[1] * x_train.shape[2]
batch_size = 64

1. 自定义数据迭代器

def data_iter1(X, Y, batch_size):
    num_samples = X.shape[0]
    idx = list(range(num_samples))
    random.shuffle(idx)
    
    X = nd.array(X)
    Y = nd.array(Y)
    for i in range(0, num_examples, batch_size):
        j = nd.array(idx[i: min(i + batch_size, num_examples)])
        yield nd.take(X, j), nd.take(Y, j)

2. Gluon 迭代器

dataset = gluon.data.ArrayDataset(x_train, y_train)
data_iter = gluon.data.DataLoader(dataset, batch_size, shuffle=True)

3. 从迭代器中获取数据

for data, label in data_iter:
    print(data.shape, label.shape)
    break
(64, 28, 28) (64,)
for data, label in data_iter1(x_train, y_train, batch_size):
    print(data.shape, label.shape)
    break
(64, 28, 28) (64,)
探寻有趣之事!
目录
相关文章
|
27天前
|
并行计算 算法 安全
【C++ 迭代器 】C++ 迭代器标签的使用场景
【C++ 迭代器 】C++ 迭代器标签的使用场景
41 0
|
存储 算法 程序员
深入理解 C++ 自定义链表中实现迭代器
深入理解 C++ 自定义链表中实现迭代器
54 0
|
7月前
|
存储 Python
Python字典和集合操作指南:创建、获取值、修改和删除键值对,复制和遍历方法全解析
Python字典和集合操作指南:创建、获取值、修改和删除键值对,复制和遍历方法全解析
326 0
|
10月前
|
XML 前端开发 数据格式
当返回前端的数据中存在List对象集合,如何优雅操作?
当返回前端的数据中存在List对象集合,如何优雅操作?一对多结构简单不冗余,便于前端取数据,是一个好的解决方案。
122 0
|
11月前
jdbctemplate封装自定义对象,查询返回集合
jdbctemplate封装自定义对象,查询返回集合
181 0
|
编译器 C++ 容器
【C++要笑着学】迭代器适配器 | 内嵌类型实现反向迭代器 | 迭代器萃取
上一章讲解 list 模拟实现时,我们简单的提到了反向迭代器,我们说反向迭代器其实就是对正向迭代器的一种封装 —— 适配器模式(配接器模式)。当时我们做的是简单的了解,本章我们就来探讨这一部分的知识。
119 1
【C++要笑着学】迭代器适配器 | 内嵌类型实现反向迭代器 | 迭代器萃取
|
开发者
可迭代对象和迭代器 | 学习笔记
快速学习可迭代对象和迭代器,介绍了可迭代对象和迭代器系统机制, 以及在实际应用过程中如何使用。
63 0
可迭代对象和迭代器 | 学习笔记
|
开发者 Python
从字典里获取数据 | 学习笔记
快速学习从字典里获取数据
66 0
从字典里获取数据 | 学习笔记
|
存储
集合 案例:存储学生对象并遍历
集合 案例:存储学生对象并遍历
117 0
|
设计模式 JavaScript 前端开发
我学会了,前端迭代器
设计思路: 要有一个待迭代的数据对象,存放原始数据。 要有一个对迭代器行为进行封装的class,在这个class中可以定义遍历对象的一些行为。 要有一个获取指定数据对象迭代器操作类,在这个操作类中就直接拿到指定的迭代器。当然你在初始化的时候你可以传入待迭代的数据对象,也可以在操作类中追加待迭代的数据对象的子项。
175 0
我学会了,前端迭代器

热门文章

最新文章