data_folder = '../../data/' set_list = ['train','testA','testB'] size_list = [10000,2000,2000] time1= time.time() for set_name,set_size in zip(set_list,size_list): output_file = data_folder + set_name + '_ubyte.txt' f = open(output_file, "w") f.close() Img_ind = 0 input_file = data_folder + set_name +'.txt' with open(input_file) as f: for content in f: Img_ind = Img_ind +1 print('transforming ' + set_name + ': ' + str(Img_ind).zfill(5)) line = content.split(',') title = line[0] + ' '+line[1] data_write = np.asarray(line[2].strip().split(' ')).astype(np.ubyte) data_write = (data_write + 1).astype(np.ubyte) if data_write.max()>255: print('too large') if data_write.min()<0: print('too small') f = open(output_file, "a") f.write(data_write.tobytes()) f.close()
时间: 2024-02-14 18:22:23 浏览: 79
这段代码的功能是将给定的数据集(train、testA、testB)转换为ubyte格式的文件,并将其保存在指定的文件夹中。
代码中,`data_folder` 变量指定了数据所在的文件夹。 `set_list` 是数据集名称的列表, `size_list` 是每个数据集的大小。
代码首先遍历 `set_list` 和 `size_list` 中的每个元素,然后打开一个输出文件来写入转换后的数据。
接着,代码读取输入文件(文本文件),并将每一行数据拆分为标题、标签和数据。然后将数据转换为 `np.ubyte` 格式,并在需要时进行范围检查,确保数据合法。
最后,代码将转换后的数据写入输出文件中。循环结束后,所有数据集都将转换并保存在指定的文件夹中。
相关问题
# -*- coding: utf-8 -*- """ Transform the data type from ascii to ubyte format (8 bits unsigned binary) and save to new files, which would reduce the data size to 1/3, and would save the data transforming time when read by the python @author: Marmot """ import numpy as np import time from itertools import islice import pandas as pd # data_folder = '../../data/' set_list = ['train','testA','testB'] size_list = [10000,2000,2000] time1= time.time() for set_name,set_size in zip(set_list,size_list): output_file = data_folder + set_name + '_ubyte.txt' f = open(output_file, "w") f.close() Img_ind = 0 input_file = data_folder + set_name +'.txt' with open(input_file) as f: for content in f: Img_ind = Img_ind +1 print('transforming ' + set_name + ': ' + str(Img_ind).zfill(5)) line = content.split(',') title = line[0] + ' '+line[1] data_write = np.asarray(line[2].strip().split(' ')).astype(np.ubyte) data_write = (data_write + 1).astype(np.ubyte) if data_write.max()>255: print('too large') if data_write.min()<0: print('too small') f = open(output_file, "a") f.write(data_write.tobytes()) f.close() time2 = time.time() print('total elapse time:'+ str(time2- time1)) #%% generate train label list value_list =[] set_name = 'train' input_file = data_folder + set_name +'.txt' with open(input_file) as f: for content in f: line = content.split(',') value_list.append(float(line[1])) value_list = pd.DataFrame(value_list, columns=['value']) value_list.to_csv(data_folder + 'train_label.csv',index = False,header = False)
这段代码的主要功能是将数据集中的图像像素值从 ASCII 码转换为无符号 8 位二进制格式,并保存到新文件中,同时生成训练集标签列表。
代码首先定义了一个数据路径列表 `set_list` 和一个数据子集大小列表 `size_list`。然后通过循环遍历每个数据子集,对每个子集执行以下操作:
1. 定义了一个输出文件路径 `output_file`,并创建一个空文件;
2. 读取输入文件 `input_file`,遍历每个图像像素值,并将其转换为无符号 8 位二进制格式;
3. 将转换后的图像像素值写入输出文件中;
4. 遍历完成后,输出文件中将包含整个数据子集的所有图像像素值。
注意,代码中的 `data_folder` 变量指定了数据集所在的文件夹路径。
另外,代码的最后还生成了训练集标签列表。具体来说,代码读取训练集文件 `train.txt`,提取其中的标签信息,并将标签保存到一个 CSV 文件 `train_label.csv` 中,以供后续的模型训练使用。
解释如下代码:import sys sys.path.append('../TOOLS')#导入Python 系统模块 sys,并将 '../TOOLS' 目录添加到 sys.path 中,使得 Python 解释器能够找到该目录下的模块和包。 from CIKM_TOOLS import *#导入名为 CIKM_TOOLS 的模块,并使用 * 通配符将该模块中的所有函数和变量导入到当前命名空间中。 L_img = 101 # size of image N_pad = 3 # Pad size of matching template N_block = 5 # number of blocks along each side of image N_cor = N_block**2 time1 = time.time() data_folder = '../../data/' set_list = ['train','testA','testB'] size_list = [10000,2000,2000] time1= time.time() for set_name,N_pic in zip(set_list,size_list): input_file = data_folder + set_name + '_ubyte.txt' block_ele = np.asarray([N_pad,(L_img-N_pad)/4,(L_img-N_pad)/2,(L_img-N_pad)*3/4,(L_img - N_pad - 1)]) cor_row_center = np.tile(block_ele,[N_block,1]).reshape([1,N_cor], order='F')[0] cor_col_center = np.tile(block_ele,N_block) print (cor_row_center) print (cor_col_center) sys.exit(2) match_all = []
这段代码首先导入了sys模块,并将'../TOOLS'目录添加到sys.path中,以便Python解释器能够找到该目录下的模块和包。接着,从CIKM_TOOLS模块中导入了所有的函数和变量。接下来定义了三个变量:L_img表示图像的大小,N_pad表示匹配模板的填充大小,N_block表示图像中的块的数量,N_cor表示一个块中的像素数。接着定义了data_folder变量,表示数据文件所在的文件夹。然后使用zip函数遍历了set_list和size_list两个列表,并将它们的元素分别赋值给了set_name和N_pic变量。接下来的代码拼接了数据文件的路径,并将其存储在了input_file变量中。然后使用numpy库创建了一个名为block_ele的数组,该数组包含了5个元素,分别为N_pad,(L_img-N_pad)/4,(L_img-N_pad)/2,(L_img-N_pad)*3/4,(L_img - N_pad - 1)。接下来的两行代码分别使用numpy的tile函数将block_ele数组复制了多次,并使用reshape函数将其转换为一个1行N_cor列的数组和一个N_block行的数组,分别赋值给了cor_row_center和cor_col_center变量。接下来的两行代码打印了cor_row_center和cor_col_center的值,最后一行代码使用了空列表match_all存储一些值。最后一行代码中的sys.exit(2)是一条退出程序的语句,会使程序退出并返回状态码2。
阅读全文