Browse Source

Debug for datasets.utils.graph_get_split to support Cross Validation

tags/v0.3.1
CoreLeader 4 years ago
parent
commit
59a59682c4
1 changed files with 24 additions and 8 deletions
  1. +24
    -8
      autogl/datasets/utils/_general.py

+ 24
- 8
autogl/datasets/utils/_general.py View File

@@ -333,30 +333,46 @@ def graph_get_split(
raise ValueError
elif mask.lower() == "train":
optional_dataset_split = dataset.train_split
if optional_dataset_split is None:
raise ValueError(f"Provided dataset do NOT have {mask} split")
else:
sub_dataset = InMemoryDataset(
optional_dataset_split, train_index=list(range(len(optional_dataset_split)))
)
elif mask.lower() == "val":
optional_dataset_split = dataset.val_split
if optional_dataset_split is None:
raise ValueError(f"Provided dataset do NOT have {mask} split")
else:
sub_dataset = InMemoryDataset(
optional_dataset_split, val_index=list(range(len(optional_dataset_split)))
)
elif mask.lower() == "test":
optional_dataset_split = dataset.test_split
if optional_dataset_split is None:
raise ValueError(f"Provided dataset do NOT have {mask} split")
else:
sub_dataset = InMemoryDataset(
optional_dataset_split, test_index=list(range(len(optional_dataset_split)))
)
else:
raise ValueError(
f"The provided mask parameter must be a str in ['train', 'val', 'test'], "
f"illegal provided value is [{mask}]"
)
if optional_dataset_split is None:
raise ValueError(
f"Provided dataset do NOT have {mask} split"
)
if not is_loader:
return sub_dataset
if is_loader:
if not (_backend.DependentBackend.is_dgl() or _backend.DependentBackend.is_pyg()):
raise RuntimeError("Unsupported backend")
elif _backend.DependentBackend.is_dgl():
from dgl.dataloading.pytorch import GraphDataLoader
return GraphDataLoader(
optional_dataset_split,
sub_dataset,
**{"batch_size": batch_size, "num_workers": num_workers}
)
elif _backend.DependentBackend.is_pyg():
dataset_split: _typing.Any = optional_dataset_split
_sub_dataset: _typing.Any = optional_dataset_split
import torch_geometric
if int(torch_geometric.__version__.split('.')[0]) >= 2:
# version 2.x
@@ -364,7 +380,7 @@ def graph_get_split(
else:
from torch_geometric.data import DataLoader
return DataLoader(
dataset_split, batch_size=batch_size, num_workers=num_workers
_sub_dataset, batch_size=batch_size, num_workers=num_workers
)
else:
return optional_dataset_split
return sub_dataset

Loading…
Cancel
Save