def __save2database(self, imgIDs, cnn_feas): """ save data to database(pickle files) save style: [(id_1, fea_1), .... , (id_batch_size, fea_batch_size)] """ data_folder = self.data_path batch_size = self.batch_size def save(count, imgIDs, cnn_feas): fn = data_folder + count.__str__() + '.pkl' if os.path.isfile(fn): with open(fn, 'r') as f: orgnl_data = pickle.load(f) left_space = batch_size - len(orgnl_data) with open(fn, 'w') as f: if left_space >= len(imgIDs): pickle.dump(orgnl_data + zip(imgIDs, cnn_feas), f) else: pickle.dump(orgnl_data + zip(imgIDs[0:left_space], cnn_feas[0:left_space]), f) save(count + 1, imgIDs[left_space::], cnn_feas[left_space::]) else: with open(fn, 'w') as f: if batch_size >= len(imgIDs): pickle.dump(zip(imgIDs, cnn_feas), f) else: pickle.dump(zip(imgIDs[0:batch_size], cnn_feas[0:batch_size]), f) save(count + 1, imgIDs[batch_size::], cnn_feas[batch_size::]) file_names = get_files(data_folder) n_files = len(file_names) count = n_files if n_files != 0 else 1 save(count, imgIDs, cnn_feas)
def loadData(self): file_names = get_files(self.data_path) data = [] for fn in file_names: with open(fn, 'r') as f: data += pickle.load(f) self.data = data