生产 tensorflow 训练使用的 .pkl 文件

原文地址:https://blog.csdn.net/ls20121006/article/details/78951805

import PIL.Image as Image
from scipy.misc import imsave
import numpy as np
import random
import pickle
import os

#函数调用:生成数据集
def initPKL(imgSet_shuffle, train_or_test):
    imgSet = []
    labels = []
    label_names = []

    if train_or_test == 'train':
        set_name = 'trainSet.pkl'
    else:
        set_name = 'testSet.pkl'

    for i in imgSet_shuffle:
        imgSet.append(i[0])
        labels.append(i[1])
        label_names.append(i[2])

    imgSet = np.array(imgSet)
    labels = np.array(labels)
    label_names = np.array(label_names)
    arr = (imgSet,labels,label_names)

    #写入文件
    data = (arr[0],arr[1],arr[2])
    output = open(set_name, 'wb')
    pickle.dump(data, output)
    output.close()

def initArr(folders_path):

    i = 0
    imgSet = []
    folders = os.listdir(folders_path)

    for folder in folders:
        #类别个数,几个0代表几类
        label = [0,0]
        files = os.listdir(folders_path + folder)
        label[i] = 1
        for file in files:
            #读取图片
            img_arr = np.array(Image.open(folders_path + folder + '/' + file)) / 255

            imgSet.append((img_arr, label, folder))
        i += 1
    return imgSet

#将图片转换成数组
train_folders_path = 'E:/workFolder/data/cifar/cifar_10/train/'
test_folders_path = 'E:/workFolder/data/cifar/cifar_10/test/'

train_imgSet = initArr(train_folders_path)
test_imgSet = initArr(test_folders_path)


#打乱顺序
random.shuffle(train_imgSet)
random.shuffle(test_imgSet)

train_set_shuffle = np.array(train_imgSet)
test_set_shuffle = np.array(test_imgSet)

# 分别生成训练集和测试集
initPKL(train_set_shuffle, 'train')
initPKL(test_set_shuffle, 'test')

#测试生成的数据集
f = open('./trainSet.pkl', 'rb')
x, y, z = pickle.load(f)
f.close()

print(np.shape(x[3]), y[3], z[3])

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值