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中装饰器的用法
Jun 28 Python
python 文件操作api(文件操作函数)
Aug 28 Python
Python基础练习之用户登录实现代码分享
Nov 08 Python
Python向MySQL批量插数据的实例讲解
Mar 31 Python
matlab中实现矩阵删除一行或一列的方法
Apr 04 Python
利用python实现在微信群刷屏的方法
Feb 21 Python
python 爬虫百度地图的信息界面的实现方法
Oct 27 Python
TensorFlow实现checkpoint文件转换为pb文件
Feb 10 Python
django rest framework serializer返回时间自动格式化方法
Mar 31 Python
python 判断一组数据是否符合正态分布
Sep 23 Python
python 逐步回归算法
Apr 06 Python
使用Python通过企业微信应用给企业成员发消息
Apr 18 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生成静态页
2006/11/25 PHP
为PHP初学者的8点有效建议
2010/11/20 PHP
国外十大最流行的PHP框架排名
2013/07/04 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
获取页面高度,窗口高度,滚动条高度等参数值getPageSize,getPageScroll
2006/09/22 Javascript
关于jQuery参考实例2.0 用jQuery选择元素
2013/04/07 Javascript
jQuery 全选/反选以及单击行改变背景色实例
2013/07/02 Javascript
cookie.js 加载顺序问题怎么才有效
2013/07/31 Javascript
Jquery的hide及toggle方法让超链接慢慢消失
2013/09/06 Javascript
简单常用的幻灯片播放实现代码
2013/09/25 Javascript
javascript 判断整数方法分享
2014/12/16 Javascript
非常实用的12个jquery代码片段
2015/11/02 Javascript
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
JavaScript实现多种排序算法
2016/02/24 Javascript
JS中使用DOM来控制HTML元素
2016/07/31 Javascript
jQuery内容过滤选择器用法示例
2016/09/09 Javascript
ES6教程之for循环和Map,Set用法分析
2017/04/10 Javascript
Javascript中this关键字指向问题的测试与详解
2017/08/11 Javascript
webstrom Debug 调试vue项目的方法步骤
2018/07/17 Javascript
layui table单元格事件修改值的方法
2019/09/24 Javascript
vue动画—通过钩子函数实现半场动画操作
2020/08/09 Javascript
如何使用JS console.log()技巧提高工作效率
2020/10/14 Javascript
用Python编程实现语音控制电脑
2014/04/01 Python
python简单程序读取串口信息的方法
2015/03/13 Python
Python中的anydbm模版和shelve模版使用指南
2015/07/09 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
2019/10/24 Python
Pytorch模型转onnx模型实例
2020/01/15 Python
python中pathlib模块的基本用法与总结
2020/08/17 Python
如何安装ruby on rails
2014/02/09 面试题
三项教育活动实施方案
2014/03/30 职场文书
安全标语大全
2014/06/10 职场文书
2014入党积极分子破除“四风”思想汇报
2014/09/14 职场文书
八年级作文之感恩
2019/11/22 职场文书
解决golang结构体tag编译错误的问题
2021/05/02 Golang
Mysql中常用的join连接方式
2022/05/11 MySQL
mysql数据库隔离级别详解
2022/06/16 MySQL