在Tensorflow

时间:2016-10-14 17:18:47

标签: tensorflow

例如,Tensorflow图像字幕示例模型状态的comments

NOTE: This script will consume around 100GB of disk space because each image
in the MSCOCO dataset is replicated ~5 times (once per caption) in the output.

This is done for two reasons:

1. In order to better shuffle the training data.
2. It makes it easier to perform asynchronous preprocessing of each image in
TensorFlow.

这个问题的主要目标是看看是否有替代这种类型的重复。在我的用例中,以这种方式存储数据将要求每个图像在TFRecord文件中复制多次,大约20-50次。

我首先要注意的是,我已经通过VGGnet提供图像以提取4096个暗淡的特征,并且我将这些存储为文件名和矢量之间的映射。

在切换到Tensorflow之前,我一直在提供包含文件名字符串的批次,然后按批次查找相应的向量。这允许我将所有图像数据存储在~15GB中,而无需复制磁盘上的数据。

我在Tensorflow中首次尝试这样做涉及将索引存储在TFExample缓冲区中,然后执行"预处理"步骤切入相应的矩阵:

img_feat = pd.read_pickle("img_feats.pkl")
img_matrix = np.stack(img_feat)
preloaded_images = tf.Variable(img_matrix)
first_image = tf.slice(preloaded_images, [0,0], [1,4096])

但是,在这种情况下,Tensorflow不允许大于2GB的变量。所以我的下一个想法是将它分成几个变量:

img_tensors = []
for i in range(NUM_SPLITS):
    with tf.Graph().as_default():
        img_tensors.append(tf.Variable(img_matrices[i], name="preloaded_images_%i"%i))

first_image = tf.concat(1, [tf.slice(t, [0,0], [1,4096//NUM_SPLITS]) for t in img_tensors])

在这种情况下,我被迫将每个分区存储在一个单独的图形上,因为似乎任何一个图形都不能这么大。但是,现在concat失败了,因为我连接的每个张量都在一个单独的图上。

关于在Tensorflow图表中加入大量(~15GB)预装的任何建议。

潜在相关的是this question;但是在这种情况下,我想用张量操作中的预处理值覆盖实际JPEG文件的解码。

0 个答案:

没有答案