我正在尝试在Tensorflow中implementsyntactic GCN。基本上,我需要为每个标签有一个不同的权重矩阵(让我们忽略这个问题的偏差),并在每次运行时选择要使用的相关条目,这些条目将由一个稀疏矩阵来选择(对于每个条目,在一个方向上最多有一个标签,而且大多数情况下没有边,所以即使这样也不行)。在
更具体地说,当我有一个标记边的稀疏矩阵(0 1),是在掩码中使用它更好,还是在稀疏稠密张量乘法中使用它,或者仅仅使用正规乘法(我想不是后者,而是为了简单起见,在示例中使用它)
示例:
units = 6 # output size
x = ops.convert_to_tensor(inputs[0], dtype=self.dtype)
labeled_edges = ops.convert_to_tensor(inputs[1], dtype=self.dtype)
edges_shape = labeled_edges.get_shape().as_list()
labeled_edges = expand_dims(labeled_edges, -2)
labeled_edges = tile(
labeled_edges, [1] * (len(edges_shape) - 1) + [units, 1])
graph_kernel = math_ops.multiply(self.kernel, labeled_edges) # here is the question basically
outputs = standard_ops.tensordot(x, graph_kernel, [[1], [0]])
outputs = math_ops.reduce_sum(outputs, [-1])
^{} :典型用法是
tf.nn.embedding_lookup(params, ids)
。它返回一个Tensor
,该0轴条目是Tensor
参数的子集。保留项的索引由Tensor
id定义。^{} :与}作为
tf.nn.embedding_lookup
相同,但取{SparseTensor
。相关问题 更多 >
编程相关推荐