1.  最近做实验,用到迁移的数据,无奈数据量太少,于是使用公共数据集Mnist和Usps数据集进行对比实验。

数据介绍:

Mnist数据集:每张图是28 * 28的大小,同时一共70000万张图片,一共是10类手写数字

Usps数据集:每张图是16 *16 的大小,一共20000万张图片,一共是10类手写数字

2. 原版的mnist数据集很好找到,我就不赘述了,直接上传文件,可以使用

读取使用方式:

import scipy.io
from sklearn import preprocessing

# 读取所给的mnist数据集
minst_data = scipy.io.loadmat('../../../PUCode/datasets/mldata/mnist-original.mat')
feature = minst_data['data'].T
label = minst_data['label'].T
print(minst_data.shape, minst_label.shape) # (70000, 784) (70000, 1)

# 进行归一化处理
min_max_scaler = preprocessing.MinMaxScaler()
x_minmax = min_max_scaler.fit_transform(minst_data)

# 保存成mat文件
data = {'feas':x_minmax, 'label':minst_label}
with open('../Mnist.mat', 'wb') as file:
scipy.io.savemat(file, data)

输出的数据大小为  (70000, 784), 标签大小为: (70000, 1)

3. 对Usps数据进行处理

下载对应的文件,并注意存放的目录结构即可,另外还需要opencv的包进行每张图的处理,并将数据与Mnist数据进行shape保持。

    3.1 对图大小进行处理

def resize_and_scale(img, size, scale):
img = cv2.resize(img, size)
return 1 - np.array(img, "float32")/scale

    3.2 设置路径并将处理后的数据进行记录

import os
import cv2


path_to_data = "./USPSdata/Numerals/"

img_list = os.listdir(path_to_data)

sz = (28,28)
validation_usps = []
validation_usps_label = []
for i in range(10):
label_data = path_to_data + str(i) + '/'
img_list = os.listdir(label_data)
for name in img_list:
if '.png' in name:
img = cv2.imread(label_data+name)
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
resized_img = resize_and_scale(img, sz, 255)
validation_usps.append(resized_img.flatten())
validation_usps_label.append(i)

    3.3 保存数据

data = np.array(validation_usps)
label = np.array(validation_usps_label).reshape(-1, 1)
with open('../Usps.mat', 'wb') as file:
scipy.io.savemat(file, {'feas':data, 'label':label})

4. 如果懒得处理,可以直接用处理过的,附带连接

Mnist_and_usps.rar_MNIST_USPS-其它文档类资源