TensorFlow的tfrecord形式输入 及 mat文件转化为tfrecord文件

在TensorFlow中还有个很关键的问题是如何将数据输入。官方所给的mnist和cifar10的文件压缩成二进制,其实和我们平常所需的要求不一致,所以我这里使用的是TensorFlow的tfrecord形式输入。在我平时的实验中,使用自己的图片数据集输入的方式是队列输入方式,如果数据量不大的话也会使用feed_dict方式。

所以这里的又一个问题是如何将mat文件转化为tfrecord文件。下面贴上关键代码
def convert_to_tfrecord(images, labels):

filename =  ('/public/multiview/tfrecord5/data.tfrecords')  
n_samples = len(labels)  

if np.shape(images)[0] != n_samples:  
	raise ValueError('Images size %d does not match label size %d.' %(images.shape[0], n_samples))  

writer = tf.python_io.TFRecordWriter(filename)  
print('\nTransform start......')  
for i in np.arange(0, n_samples):  
	try:  
		Data = sio.loadmat(images[i])
		# print "data shape ", Data['image']
		data = np.array(Data['image'],dtype=np.float32)
		# print "data ", type(Data)
		# print "xohah "
		# print data.shape
		# sys.exit(0)
		image_raw =  np.reshape(data,[128,128,64]).tostring()
		# print image_raw  
		label = int(labels[i])  
		example = tf.train.Example(features=tf.train.Features(feature={  
						'label':int64_feature(label),  
						'image_raw': bytes_feature(image_raw)}))  
		writer.write(example.SerializeToString())  
	except IOError as e:  
		print('Could not read:', images[i])  
		print('error: %s' %e)  
		print('Skip it!\n')  
writer.close()  
print('Transform done!')  

在转换中关于数据的形式问题卡住了很久。关于转化为tfrecord的问题这里不详细讲了,之后的博客中会专门详细讲解。
在这里将中层特征提取出来之后,转化为tfrecord格式,我的目标是将提取出来的12812864维特征输入到VGG16中,在这之前提前训练过一个VGG16的网络,在上面贴出了的网络中,我将数据直接输入到conv2_1中,(因为我所用的图片尺寸的原因,这层实际的尺寸也是12812864)特征尺寸一定要和网络尺寸相匹配,然后其它层的网络参数都是载入之前训练好的ckpt文件,然后就可以得到想要的输出了。
————————————————
版权声明:本文为CSDN博主「猪猪侠夏尔」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ciel_monkingjay/article/details/78807055

该博主的以下内容应加深研究:
使用matlab对数据集进行归一化处理
使用matlab对信号进行经典谱估计
通信之道 通信链路思考收获
基带与载波调制的有关思考+部分matlab画图

你可能感兴趣的:(TensorFlow的tfrecord形式输入 及 mat文件转化为tfrecord文件)