>

tl;dr 텐서의 일부 항목을 동적으로 선택하는 가장 효율적인 방법은 무엇입니까?

구현 구문 GCN . 기본적으로 모든 레이블마다 다른 가중치 행렬이 있어야하며 (이 질문에 대한 편견을 무시하십시오) 사용할 각 항목을 선택할 때 희소 행렬로 선택됩니다 (각 항목마다 최대 하나의 레이블이 있습니다) 한 방향으로 대부분 가장자리가 없으므로 그조차도 아닙니다.

더 구체적으로, 레이블이 지정된 가장자리의 희소 행렬 (제로 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])

  • 답변 # 1

    tl;dr 질문에 대답하려면 다음 중 하나를 사용하십시오.

    tf.nn.embedding_lookup  : 일반적인 사용법은 tf.nn.embedding_lookup(params, ids) 입니다 . 그것은 Tensor 를 반환 0 축 항목은 Tensor 의 하위 집합입니다.  매개 변수. 보관 된 항목의 지수는 Tensor 에 의해 정의됩니다.  ID입니다.

    tf.nn.embedding_lookup_sparse  : tf.nn.embedding_lookup 와 동일  하지만 ids 걸립니다   SparseTensor 로 .

  • 이전 azure devops - 서비스는 이미 존재합니다 vstsagentdevmycomputername
  • 다음 sapui5 - 수액 테이블 - 고정 헤더가있는 세로 스크롤