基于python为Torch创建hdf5训练文件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/littlle_yan/article/details/79313802

    我们知道Torch框架需要符合其自身规格的输入数据的格式,在图像识别中用到的是以.t7扩展名的文件类型,本来我一直也想找如何将.T7文件转换的方法,查了很多资料,有通过mat转.t7的方法,但是无意间发现了h5格式类型,这种类型的和t7差不多,均可被torch框架使用,感觉通过这种方法更方便一些。下面将介绍如何将自己的数据转换成torch可以使用的h5文件类型(我的数据集存与txt文档中)。

1.介绍我的数据集txt文件内容是这样的,准确来说是在excle表格中复制粘贴到txt文档中的(这里的一列介绍excle中的一列,一行就是excle中的一行),如图所示(18行6列):


label数据txt如图所示:


2.完整代码如下:
#-*-coding:UTF-8 -*-
import h5py,os
import numpy as np
def loadDatadet(infile,k):
    f=open(infile,'r')
    sourceInLine=f.readlines()
    dataset=[]
    for line in sourceInLine:
        temp1=line.strip('\n')
        temp2=temp1.split('\t')
        dataset.append(temp2)
    for i in range(0,len(dataset)):
        for j in range(k):
            dataset[i].append(float(dataset[i][j]))
        del(dataset[i][0:k])
    return dataset
f=h5py.File('F:\\pycharm\\h5py_torch\\hdf5_format\\test.h5','w') #以'w'模式创建一个名为'test.h5'的HDF5对象
f.create_dataset('data',(18,1,1,6),dtype='f8') #有18个样本,每个样本有一个channel,每个channel的尺寸为1*6
f.create_dataset('label',(18,1),dtype='i')#创建存放label的dataset,尺寸为18*1
for i in range(18):
    infile = 'F:\pycharm\h5py_torch\hdf5_format\\test.txt'
    k = 6
    temp = np.array(loadDatadet(infile, k))
    f['data'][i]=temp[i] #写入data
    infile1 = 'F:\pycharm\h5py_torch\hdf5_format\\test32_check_label.txt'
    k1 = 1
    temp1 = np.array(loadDatadet(infile1, k1))
    f['label'][i]=temp1[i] #写入label
f.close()
3.输出的结果如图:


注意:python的编程环境需要安装h5py模块,安装方式很简单,自己百度一下就出来了。

4.在torch中使用h5格式文件方法:

require 'hdf5';
myFile=hdf5.open('path_to_hdf5_file','r') -- 读入HDF5文件
trainset={data=myFile:read('data'):all(),label=myFile:read('label'):all():byte()}

5.输出结果为:

 ----------------执行输出的信息-------------------------------------------------
{
data : DoubleTensor - size: 18×1×1×6
label : ByteTensor -size: 18×1
}

猜你喜欢

转载自blog.csdn.net/littlle_yan/article/details/79313802
今日推荐