tfg.geometry.convolution.graph_convolution.feature_steered_convolution
bookmark_borderbookmark
Stay organized with collections
Save and categorize content based on your preferences.
Implements the Feature Steered graph convolution.
tfg.geometry.convolution.graph_convolution.feature_steered_convolution(
data: type_alias.TensorLike,
neighbors: tf.sparse.SparseTensor,
sizes: type_alias.TensorLike,
var_u: type_alias.TensorLike,
var_v: type_alias.TensorLike,
var_c: type_alias.TensorLike,
var_w: type_alias.TensorLike,
var_b: type_alias.TensorLike,
name='graph_convolution_feature_steered_convolution'
) -> tf.Tensor
FeaStNet: Feature-Steered Graph Convolutions for 3D Shape Analysis
Nitika Verma, Edmond Boyer, Jakob Verbeek
CVPR 2018
https://arxiv.org/abs/1706.05206
The shorthands used below are
V
: The number of vertices.
C
: The number of channels in the input data.
D
: The number of channels in the output after convolution.
W
: The number of weight matrices used in the convolution.
The input variables (var_u
, var_v
, var_c
, var_w
, var_b
) correspond
to the variables with the same names in the paper cited above.
Note |
In the following, A1 to An are optional batch dimensions.
|
Args |
data
|
A float tensor with shape [A1, ..., An, V, C] .
|
neighbors
|
A SparseTensor with the same type as data and with shape
[A1, ..., An, V, V] representing vertex neighborhoods. The neighborhood
of a vertex defines the support region for convolution. For a mesh, a
common choice for the neighborhood of vertex i would be the vertices in
the K-ring of i (including i itself). Each vertex must have at least one
neighbor. For a faithful implementation of the FeaStNet convolution,
neighbors should be a row-normalized weight matrix corresponding to the
graph adjacency matrix with self-edges: neighbors[A1, ..., An, i, j] > 0
if vertex j is a neighbor of i, and neighbors[A1, ..., An, i, i] > 0 for
all i, and sum(neighbors, axis=-1)[A1, ..., An, i] == 1.0 for all i .
These requirements are relaxed in this implementation.
|
sizes
|
An int tensor of shape [A1, ..., An] indicating the true input
sizes in case of padding (sizes=None indicates no padding).Note that
sizes[A1, ..., An] <= V . If data and neighbors are 2-D, sizes will
be ignored. An example usage of sizes : consider an input consisting of
three graphs G0, G1, and G2 with V0, V1, and V2 vertices respectively. The
padded input would have the following shapes: data.shape = [3, V, C] and
neighbors.shape = [3, V, V] , where V = max([V0, V1, V2]) . The true
sizes of each graph will be specified by sizes=[V0, V1, V2] ,
data[i, :Vi, :] and neighbors[i, :Vi, :Vi] will be the vertex and
neighborhood data of graph Gi. The SparseTensor neighbors should have
no nonzero entries in the padded regions.
|
var_u
|
A 2-D tensor with shape [C, W] .
|
var_v
|
A 2-D tensor with shape [C, W] .
|
var_c
|
A 1-D tensor with shape [W] .
|
var_w
|
A 3-D tensor with shape [W, C, D] .
|
var_b
|
A 1-D tensor with shape [D] .
|
name
|
A name for this op. Defaults to
graph_convolution_feature_steered_convolution .
|
Returns |
Tensor with shape [A1, ..., An, V, D] .
|
Raises |
TypeError
|
if the input types are invalid.
|
ValueError
|
if the input dimensions are invalid.
|
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2022-10-28 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2022-10-28 UTC."],[],[]]