之前写过一篇文章,是将FER2013数据集还原成灰度图像的Python代码,便于我们查看。
现在我想把它转换成pickle进行存储,这样便于读取和传输。
直接上代码就好了:
def process_to_pickle(self):
"""
将csv文件加工成pickle文件,方便存储和读取
:return: None
"""
# 创建文件夹
if not os.path.exists(self.pickle_data_path): os.makedirs(self.pickle_data_path)
# 读取csv数据
with open(self.data_source) as f:
train_x_data = []
train_y_data = []
test_x_data = []
test_y_data = []
validate_x_data = []
validate_y_data = []
# 打开文件夹
data_csv = csv.reader(f)
for (label, pixcels, usage) in data_csv:
if usage == 'Training':
temp_list = []
for pixel in pixcels.split():
temp_list.append(pixel)
I = np.asarray(temp_list)
train_x_data.append(I.tolist())
train_y_data.append(label)
elif usage == 'PrivateTest':
temp_list = []
for pixel in pixcels.split():
temp_list.append(pixel)
I = np.asarray(temp_list)
test_x_data.append(I.tolist())
test_y_data.append(label)
elif usage == 'PublicTest':
temp_list = []
for pixel in pixcels.split():
temp_list.append(pixel)
I = np.asarray(temp_list)
validate_x_data.append(I.tolist())
validate_y_data.append(label)
# 定义三个pickle文件
train_pickle_file = open(os.path.join(self.pickle_data_path, 'train.txt'), 'wb')
test_pickle_file = open(os.path.join(self.pickle_data_path, 'test.txt'), 'wb')
validate_pickle_file = open(os.path.join(self.pickle_data_path, 'validate.txt'), 'wb')
# 写入Pickle
pickle.dump(train_x_data, train_pickle_file)
pickle.dump(train_y_data, train_pickle_file)
pickle.dump(test_x_data, test_pickle_file)
pickle.dump(test_y_data, test_pickle_file)
pickle.dump(validate_x_data, validate_pickle_file)
pickle.dump(validate_y_data, validate_pickle_file)
# 关闭文件
train_pickle_file.close()
test_pickle_file.close()
validate_pickle_file.close()
logging.info(msg='Save data finish!')
这段代码可以直接放到我的之前的文章:点这里 。里面写了一个类,直接放到里面就能够使用。
如果代码里有错误,欢迎大家指正!!