生成非图像类型的LMDB数据
2018-03-15 18:14
211 查看
最近在训练网络中会用到非图像类型的数据,我这里是将这种数据转换成LMDB类型作为一个数据层,加载进网络。主要用到caffe的Python接口。
1、在网络的中间层中,其接受一个1x6维的bottom数据作为输入;
2、每个训练样本对应的1x6维的数据存储到data.txt,同时记录其类别标签;
3、写入LMDB 。
1、在网络的中间层中,其接受一个1x6维的bottom数据作为输入;
2、每个训练样本对应的1x6维的数据存储到data.txt,同时记录其类别标签;
3、写入LMDB 。
#-*- coding: UTF-8 -*- import numpy as np import caffe import lmdb from caffe.proto import caffe_pb2 import sys,os # 读入数据和对应的类别标签 theta_file=open('./data.txt','r') label=open('./label.txt','r') theta_list=[] theta_label=[] for line in theta_file: content=line.strip().split(',') theta=[] for i in range(len(content)): theta.append(float(content[i])) theta_list.append(theta) del content,theta theta_file.close() for line in label: content=line.strip().split('\n') theta_label.append(int(content[0])) # 写入lmdb,需要将list转换为array db = lmdb.open('data_lmdb', map_size=int(1e12)) with db.begin(write=True) as in_txn: for i in range(len(theta_list)): datum = caffe.proto.caffe_pb2.Datum() datum.channels = 1 datum.height = 1 datum.width = 6 tmp_=theta_list[i] tmp=np.array(range(6), dtype=np.float) for j in range(6): tmp[j]=tmp_[j] label=int(theta_label[i]) datum.data = tmp.tobytes() # datum.data = tmp.tostring() datum.label=label in_txn.put('{:0>10d}'.format(i), datum.SerializeToString()) db.close()
相关文章推荐
- 【caffe】caffe中通过图像生成lmdb格式的数据
- Caffe学习笔记10:图像数据生成caffe需要的(laveldb和lmdb)数据文件
- (原)caffe中通过图像生成lmdb格式的数据
- ubuntu14.04+caffe 图像数据转换成db(leveldb/lmdb)
- Sql Server函数全解(三)数据类型转换函数和文本图像函数
- STATA 批量重命名,数据查重,行列转换,类型转换,变量截取和生成,数据库合并等命令
- 图像数据类型及转换函数
- Caffe使用:如何将一维数据或其他非图像数据转换成lmdb
- Caffe学习:图像数据转换成db(leveldb/lmdb)文件
- Caffe1——Mnist数据集创建lmdb或leveldb类型的数据
- 从数据到代码——通过代码生成机制实现强类型编程[下篇]
- 图像数据转换为levedb或者lmdb+caffe上跑自己的数据
- Kettle 生成的XML格式数据保存到Oracle 数据库的BLOB类型字段中
- Hibernate根据实体类生成数据表时字段类型是tinyblob
- Sql Server函数全解<三>数据类型转换函数和文本图像函数
- 基于MATLAB中fft2函数的二维图像数据的频谱生成代码
- OpenCV图像数据类型Mat不再陌生
- 从数据到代码—通过代码生成机制实现强类型编程
- (12)caffe总结之图像数据转换成db(leveldb/lmdb)文件
- ORACLE数据库number类型使用hibernate反向生成JavaBean的数据类型