在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画图