16.3.4 パーティション化されたグラフへのEdgeWiseの適用
EdgeWiseは、様々なプロバイダおよび様々な機能があるパーティション化されたグラフに適用できます。
opg4j> var model = analyst.supervisedEdgeWiseModelBuilder().
setVertexInputPropertyNames("vertex_provider_features").
setEdgeInputPropertyNames("edge_provider1_features", "edge_provider2_features").
setEdgeTargetPropertyName("target_property").
build()
SupervisedEdgeWiseModel model = analyst.supervisedEdgeWiseModelBuilder()
.setVertexInputPropertyNames("vertex_provider_features")
.setEdgeInputPropertyNames("edge_provider1_features", "edge_provider2_features")
.setEdgeTargetPropertyName("target_property")
.build();
params = dict(edge_target_property_name="target_property",
vertex_input_property_names=["vertex_provider_features"],
edge_input_property_names=["edge_provider1_features", "edge_provider2_features"])
model = analyst.supervised_edgewise_builder(**params)
トレーニングまたは推測の対象とするプロバイダを選択できます:
opg4j> var model = analyst.supervisedEdgeWiseModelBuilder().
setVertexInputPropertyNames("vertex_provider_features").
setEdgeInputPropertyNames("edge_provider1_features", "edge_provider2_features").
setEdgeTargetPropertyName("target_property").
setTargetEdgeLabels("provider1").
build()
SupervisedEdgeWiseModel model = analyst.supervisedEdgeWiseModelBuilder()
.setVertexInputPropertyNames("vertex_provider_features")
.setEdgeInputPropertyNames("edge_provider1_features", "edge_provider2_features")
.setEdgeTargetPropertyName("target_property")
.setTargetEdgeLabels("provider1")
.build();
params = dict(edge_target_property_name="target_property",
vertex_input_property_names=["vertex_provider_features"],
edge_input_property_names=["edge_provider1_features", "edge_provider2_features"],
target_edge_labels=["provider1"])
model = analyst.supervised_edgewise_builder(**params)
基礎となるGraphwiseモデルの各グラフ畳込み層での埋込みのフローを制御する場合は、対象となる接続を有効または無効にできます。デフォルトでは、すべての接続が有効です。
opg4j> var convLayerConfig = analyst.graphWiseConvLayerConfigBuilder().
setNumSampledNeighbors(25).
useVertexToVertexConnection(true).
useEdgeToVertexConnection(true).
useEdgeToEdgeConnection(false).
useVertexToEdgeConnection(false).
build()
opg4j> var model = analyst.supervisedEdgeWiseModelBuilder().
setVertexInputPropertyNames("vertex_provider1_features", "vertex_provider2_features").
setEdgeInputPropertyNames("edge_provider_features").
setEdgeTargetPropertyName("target_property").
setTargetEdgeLabels("provider1").
build()
GraphWiseConvLayerConfig convLayerConfig = analyst.graphWiseConvLayerConfigBuilder()
.setNumSampledNeighbors(10)
.useVertexToVertexConnection(true)
.useEdgeToVertexConnection(true)
.useEdgeToEdgeConnection(false)
.useVertexToEdgeConnection(false)
.build();
SupervisedEdgeWiseModel model = analyst.supervisedEdgeWiseModelBuilder()
.setVertexInputPropertyNames("vertex_provider1_features", "vertex_provider2_features")
.setEdgeInputPropertyNames("edge_provider_features")
.setEdgeTargetPropertyName("target_property")
.setTargetEdgeLabels("provider1")
.setConvLayerConfigs(convLayerConfig)
.build();
conv_layer_config = dict(num_sampled_neighbors=25,
activation_fn='tanh',
weight_init_scheme='xavier',
neighbor_weight_property_name=weightProperty,
vertex_to_vertex_connection=True,
edge_to_vertex_connection=True,
vertex_to_edge_connection=False,
edge_to_edge_connection=False)
conv_layer = analyst.graphwise_conv_layer_config(**conv_layer_config)
params = dict(edge_target_property_name="target_property",
vertex_input_property_names=["vertex_provider1_features", "vertex_provider2_features"],
edge_input_property_names=["edge_provider_features"],
target_edge_labels=["provider1"],
conv_layer_config=[conv_layer])
model = analyst.supervised_edgewise_builder(**params)