使用稀疏张量为TensorFlow中的softmax图层提供占位符

时间:2015-11-25 12:50:24

标签: python tensorflow sparse-matrix softmax

有没有人尝试过使用稀疏张量进行文本分析并成功使用TensorFlow?一切准备就绪,我设法在.wrapper { height: 100%; right: 0%; overflow: hidden; position: absolute; top: 0; width: 100%; } 中为{0}提供numpy数组的Softmax图层,但是我无法使用SparseTensorValues提供字典。

我没有找到关于使用稀疏矩阵来训练模型(例如softmax)和Tensor Flow的文档,这很奇怪,因为类feed_dicttf.SessionSparseTensor方法已准备就绪,但没有关于如何在SparseTensorValues方法中提供TensorFlow.sparse_to_dense值词典的文档。

非常感谢,

1 个答案:

答案 0 :(得分:2)

我找到了一种将稀疏图像放入tensorflow的方法,包括批处理,如果有任何帮助的话。

我在字典中创建一个4维稀疏矩阵,其中维度为batchSize,xLen,ylen,zLen(例如,zLen为3时为颜色)。以下伪代码用于批量为50个32x96像素的3色图像。值是每个像素的强度。在下面的代码段中,我展示了第一批初始化的前2个像素......

shape = [50, 32, 96, 3]
indices = [[0, 20, 31, 0],[0, 22, 33, 1], etc...]
values = [12, 24, etc...]
batch = {"indices": indices, "values": values, "shape": shape}

在设置计算图时,我创建了一个正确维度的稀疏占位符

images = tf.sparse_placeholder(tf.float32, shape=[None, 32, 96, 3])

'无'用于改变批量大小。

当我第一次想要使用图像时,例如为了进入批量卷积,我将它们转换回密集张量:

images = tf.sparse_tensor_to_dense(batch) 

然后,当我准备好运行会话时,例如为了进行培训,我将批处理的3个组件传递到字典中,以便sparse_placeholder选择它们:

train_dict = {images: (batch['indices'], batch['values'], batch['shape']), etc...}
sess.run(train_step, feed_dict=train_dict)                

如果您不需要进行批处理,只需省略第一个维度并从占位符形状中删除“无”。

我找不到任何方法将图像作为稀疏矩阵数组批量传递。它只有在我创建第四维时才有效。我很想知道其他选择。

虽然这并没有给出你问题的确切答案,但我希望它有用,因为我一直在努力解决类似的问题。