(adj_output)
return adj_full
recover to adj from adj_output
        note: here adj_output have shape (n-1)*m
recover to adj from adj_output
        note: here adj_output have shape (n-1)*m
recover to adj from adj_output note : here adj_output have shape ( n - 1 ) * m
def decode_adj_new(adj_output):
    '''
        recover to adj from adj_output
        note: here adj_output have shape (n-1)*m
    '''
    num_nodes = adj_output.shape[0] + 1
    adj_full = np.zeros((num_nodes, num_nodes), dtype=adj_output.dtype)

    for i, d in enumerate(adj_output.T):
        a = np.diag(d, k=i + 1)[i:, i:]
        adj_full = adj_full + a + a.T

    return adj_full
def decode_adj_new ( adj_output ) : num_nodes = adj_output . shape [ 0 ] + 1 adj_full = np . zeros ( ( num_nodes , num_nodes ) , dtype = adj_output . dtype ) for i , d in enumerate ( adj_output . T ) : a = np . diag ( d , k = i + 1 ) [ i : , i : ] adj_full = adj_full + a + a . T return adj_full