import tensorflow as tf
import collections
# Represent the following array of sets as a sparse tensor:
# a = np.array([[{1, 2}, {3}], [{4}, {5, 6}]])
a = collections.OrderedDict([
((0, 0, 0), 1),
((0, 0, 1), 2),
((0, 1, 0), 3),
((1, 0, 0), 4),
((1, 1, 0), 5),
((1, 1, 1), 6),
])
a = tf.SparseTensor(list(a.keys()), list(a.values()), dense_shape=[2,2,2])
# b = np.array([[{1}, {}], [{4}, {5, 6, 7, 8}]])
b = collections.OrderedDict([
((0, 0, 0), 1),
((1, 0, 0), 4),
((1, 1, 0), 5),
((1, 1, 1), 6),
((1, 1, 2), 7),
((1, 1, 3), 8),
])
b = tf.SparseTensor(list(b.keys()), list(b.values()), dense_shape=[2, 2, 4])
# `tf.sets.set_intersection` is applied to each aligned pair of sets.
c = tf.sets.set_intersection(a, b)
sess = tf.Session()
print(sess.run(c))
结果为
SparseTensorValue(indices=array([[0, 0, 0],
[1, 0, 0],
[1, 1, 0],
[1, 1, 1]], dtype=int64), values=array([1, 4, 5, 6]), dense_shape=array([2, 2, 2], dtype=int64))