pytorch 把MNIST数据集转换成图片和txt的方法


Posted in Python onMay 20, 2018

本文介绍了pytorch 把MNIST数据集转换成图片和txt的方法,分享给大家,具体如下:

1.下载Mnist 数据集

import os
# third-party library
import torch
import torch.nn as nn
from torch.autograd import Variable
import torch.utils.data as Data
import torchvision
import matplotlib.pyplot as plt 
# torch.manual_seed(1)  # reproducible
DOWNLOAD_MNIST = False
 
# Mnist digits dataset
if not(os.path.exists('./mnist/')) or not os.listdir('./mnist/'):
  # not mnist dir or mnist is empyt dir
  DOWNLOAD_MNIST = True
 
train_data = torchvision.datasets.MNIST(
  root='./mnist/',
  train=True,                   # this is training data
  transform=torchvision.transforms.ToTensor(),  # Converts a PIL.Image or numpy.ndarray to
                          # torch.FloatTensor of shape (C x H x W) and normalize in the range [0.0, 1.0]
  download=DOWNLOAD_MNIST,
)

下载下来的其实可以直接用了,但是我们这边想把它们转换成图片和txt,这样好看些,为后面用自己的图片和txt作为准备

2. 保存为图片和txt

import os
from skimage import io
import torchvision.datasets.mnist as mnist
import numpy 
root = "./mnist/raw/"
train_set = (
  mnist.read_image_file(os.path.join(root, 'train-images-idx3-ubyte')),
  mnist.read_label_file(os.path.join(root, 'train-labels-idx1-ubyte'))
)
 
test_set = (
  mnist.read_image_file(os.path.join(root,'t10k-images-idx3-ubyte')),
  mnist.read_label_file(os.path.join(root,'t10k-labels-idx1-ubyte'))
)
 
print("train set:", train_set[0].size())
print("test set:", test_set[0].size())
 
def convert_to_img(train=True):
  if(train):
    f = open(root + 'train.txt', 'w')
    data_path = root + '/train/'
    if(not os.path.exists(data_path)):
      os.makedirs(data_path)
    for i, (img, label) in enumerate(zip(train_set[0], train_set[1])):
      img_path = data_path + str(i) + '.jpg'
      io.imsave(img_path, img.numpy())
      int_label = str(label).replace('tensor(', '')
      int_label = int_label.replace(')', '')
      f.write(img_path + ' ' + str(int_label) + '\n')
    f.close()
  else:
    f = open(root + 'test.txt', 'w')
    data_path = root + '/test/'
    if (not os.path.exists(data_path)):
      os.makedirs(data_path)
    for i, (img, label) in enumerate(zip(test_set[0], test_set[1])):
      img_path = data_path + str(i) + '.jpg'
      io.imsave(img_path, img.numpy())
      int_label = str(label).replace('tensor(', '')
      int_label = int_label.replace(')', '')
      f.write(img_path + ' ' + str(int_label) + '\n')
    f.close()
 
convert_to_img(True)
convert_to_img(False)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
深入浅析python继承问题
May 29 Python
Python解析excel文件存入sqlite数据库的方法
Nov 15 Python
Python基于贪心算法解决背包问题示例
Nov 27 Python
python方法生成txt标签文件的实例代码
May 10 Python
Django框架模板注入操作示例【变量传递到模板】
Dec 19 Python
对python xlrd读取datetime类型数据的方法详解
Dec 26 Python
详解python之heapq模块及排序操作
Apr 04 Python
在Python中表示一个对象的方法
Jun 25 Python
基于python二叉树的构造和打印例子
Aug 09 Python
Python threading.local代码实例及原理解析
Mar 16 Python
python中字典增加和删除使用方法
Sep 30 Python
Python 多进程原理及实现
Dec 21 Python
Python安装lz4-0.10.1遇到的坑
May 20 #Python
Python requests发送post请求的一些疑点
May 20 #Python
python中virtualenvwrapper安装与使用
May 20 #Python
django静态文件加载的方法
May 20 #Python
django中静态文件配置static的方法
May 20 #Python
Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法
May 19 #Python
Python利用公共键如何对字典列表进行排序详解
May 19 #Python
You might like
php 正确解码javascript中通过escape编码后的字符
2010/01/28 PHP
PHP数字和字符串ID互转函数(类似优酷ID)
2014/06/30 PHP
yii框架redis结合php实现秒杀效果(实例代码)
2017/10/26 PHP
深入理解JavaScript系列(4) 立即调用的函数表达式
2012/01/15 Javascript
根据身份证号自动输出相关信息(籍贯,出身日期,性别)
2013/11/15 Javascript
javaScript的函数对象的声明详解
2015/02/06 Javascript
JavaScript检测鼠标移动方向的方法
2015/05/22 Javascript
详解参数传递四种形式
2015/07/21 Javascript
2016年最热门的15 款代码语法高亮工具,美化你的代码
2016/01/06 Javascript
js+css实现select的美化效果
2016/03/24 Javascript
js匿名函数作为函数参数详解
2016/06/01 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
D3.js实现饼状图的方法详解
2016/09/21 Javascript
JS基于面向对象实现的多个倒计时器功能示例
2017/02/28 Javascript
微信小程序 使用腾讯地图SDK详解及实现步骤
2017/02/28 Javascript
jQuery 添加样式属性的优先级别方法(推荐)
2017/06/08 jQuery
vue组件name的作用小结
2018/05/23 Javascript
浅谈PDF.js使用心得
2018/06/07 Javascript
深入解析ES6中的promise
2018/11/08 Javascript
微信小程序如何刷新当前界面的实现方法
2019/06/07 Javascript
关于layui表单中按钮自动提交的解决方法
2019/09/09 Javascript
vue使用swiper实现左右滑动切换图片
2020/10/16 Javascript
python的socket编程入门
2018/01/29 Python
解决Pycharm的项目目录突然消失的问题
2020/01/20 Python
python小技巧——将变量保存在本地及读取
2020/11/13 Python
python的dict判断key是否存在的方法
2020/12/09 Python
网上常见的一份Linux面试题(多项选择部分)
2015/02/07 面试题
介绍一下Ruby的多线程处理
2013/02/01 面试题
网上卖盒饭创业计划书范文
2014/02/07 职场文书
蓝颜请假条
2014/04/11 职场文书
期末学生评语大全
2014/04/24 职场文书
2014年爱国卫生工作总结
2014/11/22 职场文书
大学团日活动总结书
2015/05/11 职场文书
企业党支部工作总结2015
2015/05/21 职场文书
MySQL创建索引需要了解的
2021/04/08 MySQL
python中的class_static的@classmethod的巧妙用法
2021/06/22 Python