[英]Tensorflow: How to access sparse tensor value by index
我想在恆定的訪問時間內通過索引訪問稀疏張量的值。 例如,如果我的稀疏張量表示為:
sparse = tf.SparseTensor(indices=[[0, 0], [1, 2]], values=[1, 3], dense_shape=[3, 4])
我想要類似的操作:
assert sparse[0,0] == 1
assert sparse[1,2] == 3
有沒有簡單的方法可以做到這一點? 我已經看到過類似的示例,其中tf.where與tf.gather結合使用。 但是,這似乎是訪問這些值的一種非常低效的方式,因為我現在(在最壞的情況下)必須搜索整個索引張量才能找到匹配項(隨張量中值的數量線性增長) ,而不是固定的訪問時間。
Tensorflow中的稀疏張量以COOrdinate格式存儲,這在O(1)時間內無法通過索引或切片進行有效訪問,因此在恆定的訪問時間內無法獲得價值。 順便說一句,您可以使用tf.sparse_slice
通過索引訪問,這比將tf.where
與tf.gather
一起使用更簡單。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.