You*_* Oh 6 sparse-matrix neural-network tensorflow
我正在尝试使用SparseTensor来表示全连接层中的权重变量。
但是,TensorFlow 0.8 似乎不允许将 SparseTensor 用作 tf.Variable。
有什么办法可以解决这个问题吗?
我试过了
import tensorflow as tf
a = tf.constant(1)
b = tf.SparseTensor([[0,0]],[1],[1,1])
print a.__class__ # shows <class 'tensorflow.python.framework.ops.Tensor'>
print b.__class__ # shows <class 'tensorflow.python.framework.ops.SparseTensor'>
tf.Variable(a) # Variable is declared correctly
tf.Variable(b) # Fail
Run Code Online (Sandbox Code Playgroud)
顺便说一下,我使用 SparseTensor 的最终目标是永久屏蔽一些密集形式的连接。因此,在计算和应用梯度时会忽略这些修剪后的连接。
在我当前的 MLP 实现中,SparseTensor 及其稀疏形式的matmul ops 成功地报告了推理输出。但是,使用 SparseTensor 声明的权重不会随着训练步骤的进行而训练。
TensorFlow 目前不支持稀疏张量变量。然而,它确实支持密集变量的稀疏查找(tf.embedding_lookup
)和稀疏梯度更新(tf.sparse_add
)。我怀疑这两个足以满足您的用例。
归档时间: |
|
查看次数: |
4609 次 |
最近记录: |