# data dist --mode=each
# data-setting static-node-random-split
#     --train-ratio=0.6 --valid-ratio=0.2 --no-stratify
# data-setting ga-mpca --max-size={anchor_size}
# data-setting a-position-aware-labels-each --depth=4

data-setting cache --cache-root=./cache/{cache_name} --cache-name=data-{{data_version}}

data-setting to --device=cuda:0
data-setting anchor-id-as-feature
data-setting add-self-loop

tasker static-graph-dl

tasker node-cls
tasker model-metrics

module sage --as=encoder
    --in-size={in_size_a} --hidden-size={hidden_size}
    --num-layers={num_layers} --dropout={dropout} {bn}
    --aggregator-type=pool {weighted}
    --return-hiddens

module mlp --as=cls1
    --in-size={hidden_size} --hidden-size=16 --out-size={anchor_size}
    --num-hidden-layers=0 --dropout={dropout}
module mlp --as=cls2
    --in-size={hidden_size} --hidden-size=16 --out-size={anchor_size}
    --num-hidden-layers=0 --dropout={dropout}
module mlp --as=cls3
    --in-size={hidden_size} --hidden-size=16 --out-size={anchor_size}
    --num-hidden-layers=0 --dropout={dropout}
module mlp --as=cls4
    --in-size={hidden_size} --hidden-size=16 --out-size={anchor_size}
    --num-hidden-layers=0 --dropout={dropout}
module multi-classifiers --as=classifier
    --classifiers cls1 cls2 cls3 cls4

module dist-loss --as=loss --mode=dist
module node-cls-decoder --as=decoder
    --classifier=classifier
    --loss-func=loss

module encoder-decoder --as=model
    --encoder=encoder --decoder=decoder

module {optimizer} --as=optimizer --lr={lr} --weight-decay={l2}
trainer pytorch-plain --n-epoches={n_epoches} --eval-every=10
#trainer pytorch-plain --n-epoches=1 --eval-every=1
