说明:MNIST直接离线加载二进制文件到pytorch

'''
直接以下4个文件读入数据到pytorch中t10k-images-idx3-ubyte.gzt10k-labels-idx1-ubyte.gztrain-images-idx3-ubyte.gztrain-labels-idx1-ubyte.gz'''
import os
import numpy as np
import gzipimport torch.utils.data as Data
from torchvision import transformsimport timedataPath = 'E:/MNIST/binary_file'def load_data(data_folder, data_name, label_name):"""data_folder: 文件目录data_name: 数据文件名label_name:标签数据文件名"""with gzip.open(os.path.join(data_folder,label_name), 'rb') as lbpath: # rb表示的是读取二进制数据y_train = np.frombuffer(lbpath.read(), np.uint8, offset=8)with gzip.open(os.path.join(data_folder,data_name), 'rb') as imgpath:x_train = np.frombuffer(imgpath.read(), np.uint8, offset=16).reshape(len(y_train), 28, 28)return (x_train, y_train)class DealDataset(Data.Dataset):"""读取数据、初始化数据"""def __init__(self, folder, data_name, label_name,transform=None):(train_set, train_labels) = load_data(folder, data_name, label_name) # 其实也可以直接使用torch.load(),读取之后的结果为torch.Tensor形式self.train_set = train_setself.train_labels = train_labelsself.transform = transformdef __getitem__(self, index):img, target = self.train_set[index], int(self.train_labels[index])if self.transform is not None:img = self.transform(img)return img, targetdef __len__(self):return len(self.train_set)# 实例化这个类,然后我们就得到了Dataset类型的数据,记下来就将这个类传给DataLoader,就可以了。
trainDataset = DealDataset(dataPath, "train-images-idx3-ubyte.gz","train-labels-idx1-ubyte.gz",transform=transforms.ToTensor())
testDataset = DealDataset(dataPath, "t10k-images-idx3-ubyte.gz","t10k-labels-idx1-ubyte.gz",transform=transforms.ToTensor())# 训练数据和测试数据的装载
train_loader = Data.DataLoader(dataset=trainDataset,batch_size=100, # 一个批次可以认为是一个包,每个包中含有100张图片shuffle=False,
)test_loader = Data.DataLoader(dataset=testDataset,batch_size=100,shuffle=False,
)if __name__ == '__main__':# 这里trainDataset包含:train_labels, train_set等属性;  数据类型均为ndarrayprint(f'trainDataset.train_labels.shape:{trainDataset.train_labels.shape}\n')print(f'trainDataset.train_set.shape:{trainDataset.train_set.shape}\n')# 这里train_loader包含:batch_size、dataset等属性,数据类型分别为int,DealDataset# dataset中又包含train_labels, train_set等属性;  数据类型均为ndarrayprint(f'train_loader.batch_size: {train_loader.batch_size}\n')print(f'train_loader.dataset.train_labels.shape: {train_loader.dataset.train_labels.shape}\n')print(f'train_loader.dataset.train_set.shape: {train_loader.dataset.train_set.shape}\n')

运行结果

Pytorch MNIST直接离线加载二进制文件到pytorch相关推荐

  1. Pytorch Fashion_MNIST直接离线加载二进制文件到pytorch

    说明:Fashion_MNIST直接离线加载二进制文件到pytorch ''' 将4个gz直接加载到pytoch用来训练t10k-images-idx3-ubyte.gzt10k-labels-idx ...

  2. Pytorch cifar10离线加载二进制文件

    说明直接离线加载cifar10到Pytorch ''' 直接加载6个文件到pytorchdata_batch_1data_batch_2data_batch_3data_batch_4data_bat ...

  3. Pytorch cifar100离线加载二进制文件

    说明:直接加载cifar100二进制文件到Pytorch ''' 直接加载文件到pytorchmetatesttrain '''import os import cv2 import pickle i ...

  4. Pytorch中的数据加载

    Pytorch中的数据加载 1. 模型中使用数据加载器的目的 在前面的线性回归模型中,使用的数据很少,所以直接把全部数据放到模型中去使用. 但是在深度学习中,数据量通常是都非常多,非常大的,如此大量的 ...

  5. pytorch中的数据加载(dataset基类,以及pytorch自带数据集)

    目录 pytorch中的数据加载 模型中使用数据加载器的目的 数据集类 Dataset基类介绍 数据加载案例 数据加载器类 pytorch自带的数据集 torchvision.datasets MIN ...

  6. 【学习系列7】Pytorch中的数据加载

    目录 1. 模型中使用数据加载器的目的 2. 数据集类 3. 迭代数据集 1. 模型中使用数据加载器的目的 在前面的线性回归横型中,我们使用的数据很少,所以直接把全部数据放到锁型中去使用. 但是在深度 ...

  7. Python 加载二进制文件到 CkByteArray 对象

    Python 加载二进制文件到 CkByteArray 对象 import chilkat zipData = chilkat.CkByteData() success = zipData.loadF ...

  8. pytorch model.to(device) 加载模型特别慢

    问题:pytorch model.to(device) 加载模型特别慢 解决方案:卸载掉conda安装的pytorch 采用pytorch官网的pip指令下载方式.

  9. pytorch模型保存与加载总结

    pytorch模型保存与加载总结 模型保存与加载方式 模型保存 方式一 只存储模型中的参数,该方法速度快,占用空间少(官方推荐使用) model = VGGNet() torch.save(model ...

最新文章

  1. 获取运行中的TeamViewer的账号和密码--中文版
  2. Linux 多版本python3、python2共存安装
  3. 【Flutter】Flutter 项目中使用 Flutter 插件 ( Flutter 插件管理平台 | 搜索 Flutter 插件 | 安装 Flutter 插件 | 使用 Flutter 插件 )
  4. Java中JRE、JDK和JVM的区别
  5. 第十八节20181216
  6. C语言 满分代码:L1-044 稳赢 (15分)(解题报告)
  7. 蓝桥杯 每周一练 第一周(3n+1问题)
  8. CAN 屏蔽器与滤波器(过滤器)
  9. java反射机制+继承设计技巧
  10. C/C++课程设计 之职工管理系统
  11. 【ES6(2015)】Function函数
  12. Windows域控 批量设置用户下次登录 修改密码【全域策略生效】
  13. CUDA 多GPU调用实现
  14. 凸优化第八章几何问题 8.4 极值体积椭圆
  15. 使用wordPress搭建个人博客
  16. 能耗监控 | FCU1101物联数采网关在电力能效管理系统中的应用
  17. 上海亚商投顾 早餐FM/0822新能源汽车免征购置税政策延期
  18. 自己搭建虚拟服务器,如何自己搭建虚拟主机
  19. 六度分割理论和SNS
  20. Matlab中的正态分布概率函数

热门文章

  1. 计算机语言 angela,Angela
  2. 配置中文_星球大战:战机中队配置需求公布 支持中文
  3. C++ Qt全局异常处理器_QT教程
  4. java 框架 例子_如何设计Java框架? –一个简单的例子
  5. onenote创建快速笔记--此分区尚不可用,它是从其他设备添加的,该设备同步后才将可用
  6. [渝粤教育] 西南民族大学 数据结构 参考 资料
  7. 【渝粤题库】陕西师范大学200651线性代数 作业(高起专、高起本)
  8. Linux下读取smBIOS源码,Linux下读取SMBIOS信息
  9. python将html存为pdf_用Python将HTML转为PDF。
  10. Matlab查看数组大小的命令——size、length、numel和ndims