├── README-zh_CN.md ├── README.md ├── data ├── ah │ ├── test.txt │ ├── train.txt │ └── val.txt └── fj │ ├── test.txt │ ├── train.txt │ └── val.txt ├── docs ├── ah_dataset.png ├── fj_dataset.png ├── inner.PNG ├── obic-procedure.PNG ├── outer.PNG └── tSVD-dimension.PNG ├── gcn ├── __pycache__ │ ├── inits.cpython-37.pyc │ ├── layers.cpython-37.pyc │ ├── metrics.cpython-37.pyc │ ├── models.cpython-37.pyc │ └── utils.cpython-37.pyc ├── data │ ├── ind.citeseer.allx │ ├── ind.citeseer.ally │ ├── ind.citeseer.graph │ ├── ind.citeseer.test.index │ ├── ind.citeseer.tx │ ├── ind.citeseer.ty │ ├── ind.citeseer.x │ ├── ind.citeseer.y │ ├── ind.cora.allx │ ├── ind.cora.ally │ ├── ind.cora.graph │ ├── ind.cora.test.index │ ├── ind.cora.tx │ ├── ind.cora.ty │ ├── ind.cora.x │ ├── ind.cora.y │ ├── ind.pubmed.allx │ ├── ind.pubmed.ally │ ├── ind.pubmed.graph │ ├── ind.pubmed.test.index │ ├── ind.pubmed.tx │ ├── ind.pubmed.ty │ ├── ind.pubmed.x │ └── ind.pubmed.y ├── inits.py ├── layers.py ├── metrics.py ├── models.py ├── train.py └── utils.py ├── obic.py ├── svm.py └── utils.py /README-zh_CN.md: -------------------------------------------------------------------------------- 1 | # OBIC-GCN 2 | 3 | [English](./README.md) | 简体中文 4 | 5 | 本开源项目建立在《基于图卷积神经网络的遥感影像面向对象分类方法[(Object-based Classification Framework of Remote Sensing Images with Graph Convolutional Networks)](https://ieeexplore.ieee.org/document/9411513)》的研究基础上,可为研究人员提供实验源代码、包含遥感影像与多类别面向对象样本标签的数据集。研究成果目前已公开发表在[IEEE Geoscience and Remote Sensing Letters](https://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=8859)期刊上。 6 | 7 | ## 摘要 8 | 基于高分辨率遥感影像的**面向对象分类**(OBIC)有着广泛的应用。目前,许多OBIC方法仅关注各对象自身特征,忽略了相邻对象之间的上下文信息,分类精度较低。受光谱图理论的启发,我们从高分辨率遥感影像生成的对象中构造了图结构,并提出了一种基于截断稀疏奇异值分解与**图卷积网络**模型的OBIC框架,目的在于充分利用对象之间的相对性,提供分类精度。通过在两个经标注的遥感影像数据集上开展实验,我们所提出的OBIC框架在自动和手动对象分割情况下分别获得了97.2%和66.9%的总体精度,训练时间仅占基于卷积神经网络方法时间的1/100。 9 | 10 | ## OBIC-GCN框架 11 | 基于GCN的OBIC框架包括以下基本流程。首先,利用自动或手动分割方法将遥感影像分割为多个对象,提取每个对象的特征生成特征矩阵**F**并经过tSVD降维处理,利用分割对象构建图结构生成邻接矩阵**A**,将矩阵**F**与矩阵**A**输入至OBIC-GCN模型进行训练,利用训练后的模型对输入的对象及其特征进行预测,输出分类结果。 12 | ![](docs/obic-procedure.PNG) 13 | 14 | ## 数据集 15 | 我们在安徽数据集和福建数据集两个遥感图像面向对象分类数据集上进行了内部超参数实验,并与其他OBIC方法进行了外部的对比。 16 | ### 安徽数据集 17 | ![](docs/ah_dataset.png) 18 | 安徽数据集包含了正射遥感影像,基于GBS分割算法的分割对象与五类别标注的部分对象。 19 | ### 福建数据集 20 | ![](docs/fj_dataset.png) 21 | 福建数据集包含了正射遥感影像,人工分割对象与八类别标注对象。 22 | ### 数据集下载 23 | 研究人员可通过[百度网盘](https://pan.baidu.com/s/1BdwPzNLYh2kg9I-iPwG-ww) (提取码:cveo) 下载**CVEO-OBIC-GCN数据集**,数据集包含以下内容: 24 | 25 | - 安徽/福建数据集 26 | - extracted_features/: 各对象的所提取的特征信息。 27 | - image/: 包含RGB三波段的正射影像。 28 | - npz/ : 由对象分割图、对象特征信息与类别标注信息生成的npz文件。 29 | - segmentation_mask/: 由GBS分割算法与人工分割等方法生成的分割对象图。 30 | 31 | ## 实验 32 | ### 不同tSVD降维数对模型精度与训练时间的影响 33 | ![](docs/tSVD-dimension.PNG) 34 | ### GCN模型内部超参数实验 35 | ![](docs/inner.PNG) 36 | ### 与其他OBIC方法的外部对比 37 | ![](docs/outer.PNG) 38 | 39 | 40 | ## 环境配置 41 | #### 环境需求 42 | python = 3.7.1 43 | gdal = 2.3.2 44 | numpy = 1.19.1 45 | tensorflow = 1.13.1 46 | scikit-image = 0.18.2 47 | scikit-learn = 0.24.2 48 | pillow = 8.3.1 49 | scipy = 1.7.1 50 | xgboost = 1.4.0 51 | #### 利用Conda-forge配置 52 | 推荐创建测试所需的conda虚拟环境(Windows 10)。在conda命令行中执行如下命令: 53 | `conda create -n gcn python=3.7 gdal tensorflow=1.13.1 tqdm scikit-image pillow scipy xgboost -c conda-forge 54 | ` 55 | 56 | ## 源代码目录详情 57 | - /data: 包含安徽与福建数据集。 58 | - ah/: 遥感影像数据、分割掩膜栅格数据、提取的特征数据(.txt与.npz格式) 59 | - fj/: 与安徽数据集相同 60 | - /docs 61 | - /gcn: 基于TensorFlow框架实现的GCN模型方法,[出自这里](https://github.com/tkipf/gcn)。 62 | - obic.py: 利用不同参数设置训练、验证GCN模型。 63 | - svm.py: 利用不同参数设置训练、验证包含LSVM, RBFSVM, MLP, NaiveBayes, XGBoost, RandomForest等机器学习算法。 64 | - utils.py: 利用分割掩膜图、各对象特征生成可用于训练与验证的.npz文件,并将数据划分为训练、验证与测试集. 65 | 66 | 67 | ## 源代码文件测试命令及参数 68 | ### obic.py (用于测试GCN模型) 69 | | 参数 | 参数信息 | 70 | | ------------ | ------------ | 71 | | --model | 从'gcn', 'gcn_cheby', 'dense'中选择训练模型。 **默认**: gcn | 72 | | --npz | 输入npz文件路径。**必填**。 | 73 | | --logfile | 训练日志文件。**必填** | 74 | | --resfile | 输出测试结果文件。**必填** | 75 | | --learning_rate | 初始学习率。**默认**: 0.01 | 76 | | --epochs | 训练迭代次数。 **默认**: 200 | 77 | | --nodes | 隐藏层节点数。 **默认**: 32 | 78 | | --layers | 隐藏层层数。 **默认**: 1 | 79 | | --dropout | Dropout比率。 **默认**: 0.3 | 80 | | --weight_decay | L2损失的权重。 **默认**: 5e-4 | 81 | | --early_stopping | 提前停止训练的迭代次数限制。 **默认**: 1000| 82 | | --max_degree | Chebyshev多项式最大阶数。 **默认**: 1 | 83 | | --svd | tSVD降维数(0指不进行降维)。 **默认**: 0 | 84 | | --seed | 随机种子数。 **默认**: 123 | 85 | #### 测试命令: 86 | `python obic.py --model gcn_cheby --npz data/ah/ah.npz --logfile details_ah_opSVD.log --resfile results_ah_opSVD.log --nodes 64 --layers 3 --dropout 0.3 --max_degree 1 --svd 0` 87 | 88 | ### svm.py (用于测试LSVM, RBFSVM, MLP, NaiveBayes, XGBoost, RandomForest等模型) 89 | | 参数 | 参数信息 | 90 | | ------------ | ------------ | 91 | | --model | 从'lsvm', 'rbfsvm', 'mlp', 'nb', 'xgboost', 'randomforest'中选择训练模型。 **默认**: lsvm | 92 | | --npz | 输入npz文件路径。 **必填** | 93 | | --resfile | 输出测试结果文件。 **必填** | 94 | | --pca | PCA降维数(0指不进行降维)。 **默认**: 0| 95 | | --svd | tSVD降维数(0指不进行降维)。 **默认**: 0| 96 | | --seed | 随机种子数。 **默认**: 12| 97 | #### 测试命令: 98 | `python svm.py --model randomforest --npz data/ah/ah.npz --resfile test.log --mode eval --pca 0` 99 | 100 | 101 | 102 | ## 快速开始 103 | 1. 通过[百度网盘](https://pan.baidu.com/s/1BdwPzNLYh2kg9I-iPwG-ww) (提取码:cveo)下载**CVEO-OBIC-GCN-dataset**数据集,将数据集文件按文件夹存放在目录:**/data**下。 104 | 2. 打开anaconda/cmd命令行窗口, 利用`conda activate gcn`命令激活虚拟环境,切换当前运行目录。 105 | 3. 通过指定参数并运行代码`python utils.py`,生成用于模型训练与验证的.npz文件。 106 | 4. 根据上表设置相应的参数信息,分别运行`python obic.py`或`python svm.py`,开始模型训练与验证。 107 | 108 | 109 | ## 引用本文 110 | 如果您在研究中使用了该项目,请引用以下文章。 111 | 112 | @ARTICLE{9411513, 113 | author={Zhang, Xiaodong and Tan, Xiaoliang and Chen, Guanzhou and Zhu, Kun and Liao, Puyun and Wang, Tong}, 114 | journal={IEEE Geoscience and Remote Sensing Letters}, 115 | title={Object-Based Classification Framework of Remote Sensing Images With Graph Convolutional Networks}, 116 | year={2022}, 117 | volume={19}, 118 | number={}, 119 | pages={1-5}, 120 | doi={10.1109/LGRS.2021.3072627}} 121 | 122 | ## 参考项目 123 | [https://github.com/tkipf/gcn](https://github.com/tkipf/gcn) 124 | 125 | [sklearn.decomposition.TruncatedSVD](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html) 126 | 127 | 128 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # OBIC-GCN 2 | 3 | English | [简体中文](./README-zh_CN.md) 4 | 5 | Open-source codes and annotated datasets in our recent work ["Object-based Classification Framework of Remote Sensing Images with Graph Convolutional Networks"](https://ieeexplore.ieee.org/document/9411513) on [IEEE Geoscience and Remote Sensing Letters](https://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=8859). 6 | 7 | ## Abstract 8 | Object-based image classification (OBIC) on very-high-resolution remote sensing images is utilized in a wide range of applications. Nowadays, many existing OBIC methods only focus on features of each object itself, neglecting the contextual information among adjacent objects and resulting in low classification accuracy. Inspired by spectral graph theory, we construct a graph structure from objects generated from very-high-resolution remote sensing images, and propose an OBIC framework based on truncated sparse singular value decomposition and graph convolutional network (GCN) model, aiming to make full use of relativities among objects and produce accurate classification. Through conducting experiments on two annotated RS image datasets, our framework obtained 97.2% and 66.9% overall accuracy respectively in automatic and manual object segmentation circumstances, within a processing time of about 1/100 of convolutional neural network (CNN) based methods' training time. 9 | 10 | ## Proposed OBIC-GCN framework 11 | Firstly, the RS raster is automatically or manually segmented into multiple elements, which are then used for feature extraction and graph structure construction process. The generated feature matrix F is processed by tSVD dimension reduction and utilized as the input of OBIC-GCN model combining with the adjacency matrix A. The trained model makes predictions on the input graph and object features, and finally outputs the classification results. 12 | ![](docs/obic-procedure.PNG) 13 | 14 | ## Datasets 15 | We conducted internal hyper-parameter tuning and external comparison with other OBIC methods on two VHR RS image datasets named Anhui dataset and Fujian dataset. 16 | ### Anhui dataset 17 | ![](docs/ah_dataset.png) 18 | Containing DOM, GBS segmentation results and selected labeled objects in Anhui dataset. 19 | ### Fujian dataset 20 | ![](docs/fj_dataset.png) 21 | Containing DOM, manual segmentation results and labeled objects in Fujian dataset. 22 | ### Download dataset 23 | You can download the **CVEO-OBIC-GCN-dataset** at [Baidu Netdisk](https://pan.baidu.com/s/1BdwPzNLYh2kg9I-iPwG-ww) (cveo), which contain the following contents: 24 | 25 | - Anhui&Fujian 26 | - extracted_features/: features extracted from each segmented objects. 27 | - image/: RGB raster image. 28 | - npz/ : generated npz file from segmentation map, features and ground truth labels. 29 | - segmentation_mask/: segmentation mask generated by segmentation algorithm or manual segmentaion. 30 | 31 | 32 | ## Experiments 33 | ### Performances of different tSVD reduction dimension 34 | ![](docs/tSVD-dimension.PNG) 35 | ### Model hyper-parameter tuning 36 | ![](docs/inner.PNG) 37 | ### Comparison with other OBIC methods 38 | ![](docs/outer.PNG) 39 | 40 | 41 | ## Installation 42 | #### Requirement 43 | python = 3.7.1 44 | gdal = 2.3.2 45 | numpy = 1.19.1 46 | tensorflow = 1.13.1 47 | scikit-image = 0.18.2 48 | scikit-learn = 0.24.2 49 | pillow = 8.3.1 50 | scipy = 1.7.1 51 | xgboost = 1.4.0 52 | #### Install with Conda-forge 53 | Creating a new conda environment is recommended (tested on Windows 10). Run this script like: 54 | `conda create -n gcn python=3.7 gdal tensorflow=1.13.1 tqdm scikit-image pillow scipy xgboost -c conda-forge 55 | ` 56 | 57 | ## Contents of Directory 58 | - /data: containing Anhui and Fujian dataset. 59 | - ah/: Raster image, segmentation vector and mask, extracted features in .txt and .npz format. 60 | - fj/: Same with Anhui dataset. 61 | - /docs 62 | - /gcn: A TensorFlow implementation of GCN derived from [HERE.](https://github.com/tkipf/gcn "HERE.") 63 | - obic.py: Train and evaluate GCN models with different settings. 64 | - svm.py: Train and evaluate LSVM, RBFSVM, MLP, NaiveBayes, XGBoost, RandomForest models with different settings. 65 | - utils.py: Generate .npz data with segmentation mask, extracted features. And split data into train/val/test sets. 66 | 67 | 68 | ## List of Arguments 69 | ### obic.py (for GCN models) 70 | | Argument | Details | 71 | | ------------ | ------------ | 72 | | --model | Select training model from 'gcn', 'gcn_cheby', 'dense'. **Default**: gcn | 73 | | --npz | Input npz data. **Required**. | 74 | | --logfile | Training log file. **Required**. | 75 | | --resfile | Output evaluation result file. **Required**. | 76 | | --learning_rate | Initial learning rate. **Default**: 0.01. | 77 | | --epochs | Number of epochs to train. **Default**: 200. | 78 | | --nodes | Number of units in hidden layer. **Default**: 32. | 79 | | --layers | Number of hidden layers. **Default**: 1. | 80 | | --dropout | Dropout rate. **Default**: 0.3 | 81 | | --weight_decay | Weight for L2 loss on embedding matrix. **Default**: 5e-4. | 82 | | --early_stopping | Tolerance for early stopping (# of epochs). **Default**: 1000.| 83 | | --max_degree | Maximum Chebyshev polynomial degree. **Default**: 1. | 84 | | --svd | Reduce dimensions (0 means no svd). **Default**: 0. | 85 | | --seed | Random seed. **Default**: 123. | 86 | #### Run like: 87 | `python obic.py --model gcn_cheby --npz data/ah/ah.npz --logfile details_ah_opSVD.log --resfile results_ah_opSVD.log --nodes 64 --layers 3 --dropout 0.3 --max_degree 1 --svd 0` 88 | 89 | ### svm.py (for LSVM, RBFSVM, MLP, NaiveBayes, XGBoost, RandomForest models) 90 | | Argument | Details | 91 | | ------------ | ------------ | 92 | | --model | Select training model from 'lsvm', 'rbfsvm', 'mlp', 'nb', 'xgboost', 'randomforest'. **Default**: lsvm | 93 | | --npz | Input npz data. **Required**. | 94 | | --resfile | Output evaluation result file. **Required**. | 95 | | --pca | Reduce dimensions (0 means no pca). **Default**: 0. | 96 | | --svd | Reduce dimensions (0 means no svd). **Default**: 0. | 97 | | --seed | Random seed. **Default**: 12. | 98 | #### Run like: 99 | `python svm.py --model randomforest --npz data/ah/ah.npz --resfile test.log --mode eval --pca 0` 100 | 101 | 102 | 103 | ## Quick Start 104 | 1. Download the **CVEO-OBIC-GCN-dataset** at [Baidu Netdisk](https://pan.baidu.com/s/1BdwPzNLYh2kg9I-iPwG-ww) (cveo). Arrange the above files in **/data/dataset_by_name**. 105 | 2. Open anaconda/cmd prompt, **activate** the installed environment by `conda activate gcn`, and change the **working directory** to the current project. 106 | 3. Generate .npz files for training and validation by running `python utils.py` after specifying file paths. 107 | 4. Run `python obic.py` or `python svm.py` with the above arguments to start training and conduct validation. 108 | 109 | 110 | ## Cite this work 111 | Please consider citing the following article if you used this project in your research. 112 | 113 | @ARTICLE{9411513, 114 | author={Zhang, Xiaodong and Tan, Xiaoliang and Chen, Guanzhou and Zhu, Kun and Liao, Puyun and Wang, Tong}, 115 | journal={IEEE Geoscience and Remote Sensing Letters}, 116 | title={Object-Based Classification Framework of Remote Sensing Images With Graph Convolutional Networks}, 117 | year={2022}, 118 | volume={19}, 119 | number={}, 120 | pages={1-5}, 121 | doi={10.1109/LGRS.2021.3072627}} 122 | 123 | ## Reference 124 | [https://github.com/tkipf/gcn](https://github.com/tkipf/gcn) 125 | 126 | [sklearn.decomposition.TruncatedSVD](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html) 127 | 128 | ## License 129 | Licensed under an MIT license. 130 | 131 | -------------------------------------------------------------------------------- /data/ah/test.txt: -------------------------------------------------------------------------------- 1 | 27935 bare 2 | 20653 vegetation 3 | 16121 road 4 | 2098 building 5 | 26606 vegetation 6 | 21556 vegetation 7 | 13757 vegetation 8 | 2995 vegetation 9 | 20315 road 10 | 14527 water 11 | 1186 building 12 | 5253 vegetation 13 | 520 vegetation 14 | 23331 vegetation 15 | 28133 vegetation 16 | 14897 bare 17 | 18812 bare 18 | 21908 bare 19 | 9358 vegetation 20 | 24497 vegetation 21 | 13785 water 22 | 19925 road 23 | 9741 bare 24 | 15502 water 25 | 27792 road 26 | 4194 vegetation 27 | 21888 vegetation 28 | 1357 vegetation 29 | 1991 vegetation 30 | 2393 building 31 | 5734 vegetation 32 | 28429 vegetation 33 | 24566 vegetation 34 | 1889 vegetation 35 | 6369 vegetation 36 | 10195 vegetation 37 | 4689 vegetation 38 | 8251 bare 39 | 4253 vegetation 40 | 19923 water 41 | 8662 vegetation 42 | 24103 vegetation 43 | 28261 vegetation 44 | 9642 vegetation 45 | 2459 road 46 | 483 water 47 | 3728 vegetation 48 | 8446 vegetation 49 | 5750 vegetation 50 | 15326 vegetation 51 | 3598 vegetation 52 | 16547 road 53 | 18603 vegetation 54 | 6114 water 55 | 206 building 56 | 5889 vegetation 57 | 27196 vegetation 58 | 27473 vegetation 59 | 17448 road 60 | 18380 water 61 | 23345 bare 62 | 4773 vegetation 63 | 8768 building 64 | 21408 vegetation 65 | 12771 vegetation 66 | 14963 vegetation 67 | 16800 water 68 | 22128 bare 69 | 20410 vegetation 70 | 26357 water 71 | 13026 water 72 | 6501 vegetation 73 | 23145 bare 74 | 16326 road 75 | 12224 vegetation 76 | 27040 road 77 | 4115 bare 78 | 4133 water 79 | 19069 bare 80 | 9117 vegetation 81 | 5822 vegetation 82 | 4772 vegetation 83 | 17652 road 84 | 19613 vegetation 85 | 10702 vegetation 86 | 20485 bare 87 | 1594 vegetation 88 | 14992 water 89 | 21174 vegetation 90 | 2446 vegetation 91 | 8269 vegetation 92 | 22485 vegetation 93 | 16307 bare 94 | 1709 vegetation 95 | 26507 vegetation 96 | 15405 vegetation 97 | 15168 vegetation 98 | 20026 vegetation 99 | 4743 vegetation 100 | 3631 vegetation 101 | 17841 road 102 | 17851 vegetation 103 | 8747 vegetation 104 | 27168 vegetation 105 | 23511 vegetation 106 | 5185 bare 107 | 6141 vegetation 108 | 21522 water 109 | 11450 bare 110 | 23357 bare 111 | 6050 vegetation 112 | 6740 bare 113 | 23025 bare 114 | 15738 bare 115 | 7480 road 116 | 3026 bare 117 | 1792 building 118 | 7239 vegetation 119 | 4181 vegetation 120 | 1865 vegetation 121 | 3592 vegetation 122 | 21627 vegetation 123 | 15149 bare 124 | 4934 vegetation 125 | 23251 water 126 | 6198 vegetation 127 | 11228 vegetation 128 | 22684 vegetation 129 | 18747 road 130 | 293 building 131 | 4054 vegetation 132 | 8735 vegetation 133 | 9107 water 134 | 10117 vegetation 135 | 23525 water 136 | 4276 bare 137 | 6995 vegetation 138 | 19472 vegetation 139 | 15771 vegetation 140 | 14632 bare 141 | 7104 vegetation 142 | 11666 water 143 | 2462 vegetation 144 | 6693 vegetation 145 | 15191 water 146 | 9987 bare 147 | 22497 water 148 | 16334 vegetation 149 | 12819 water 150 | 6321 vegetation 151 | 7613 vegetation 152 | 14475 water 153 | 20734 vegetation 154 | 12277 vegetation 155 | 19186 water 156 | 10787 vegetation 157 | 6067 vegetation 158 | 22557 vegetation 159 | 15230 bare 160 | 26277 water 161 | 27587 vegetation 162 | 19199 road 163 | 3393 vegetation 164 | 11778 bare 165 | 5827 vegetation 166 | 23288 vegetation 167 | 8406 vegetation 168 | 20055 vegetation 169 | 12498 road 170 | 14914 road 171 | 24340 bare 172 | 24501 bare 173 | 13975 water 174 | 13733 water 175 | 8345 vegetation 176 | 28057 road 177 | 14793 bare 178 | 6360 vegetation 179 | 7141 vegetation 180 | 19271 road 181 | 14601 water 182 | 5998 vegetation 183 | 14643 vegetation 184 | 8098 bare 185 | 11190 bare 186 | 11799 water 187 | 1034 vegetation 188 | 26268 vegetation 189 | 19034 road 190 | 24684 water 191 | 20161 vegetation 192 | 25474 bare 193 | 4984 vegetation 194 | 25922 water 195 | 23589 bare 196 | 17158 water 197 | 7367 vegetation 198 | 12437 vegetation 199 | 23301 vegetation 200 | 10120 bare 201 | 17278 vegetation 202 | 15690 water 203 | 3492 vegetation 204 | 16931 water 205 | 17688 road 206 | 13418 water 207 | 18348 vegetation 208 | 9359 vegetation 209 | 20568 vegetation 210 | 3412 building 211 | 1051 vegetation 212 | 22190 water 213 | 11929 water 214 | 918 vegetation 215 | 22930 vegetation 216 | 2330 road 217 | 20626 vegetation 218 | 15084 bare 219 | 7274 vegetation 220 | 27965 vegetation 221 | 792 building 222 | 17281 vegetation 223 | 21893 bare 224 | 26914 vegetation 225 | 13635 vegetation 226 | 21037 road 227 | 23318 bare 228 | 8027 vegetation 229 | 8946 vegetation 230 | 5393 vegetation 231 | 23741 water 232 | 4469 bare 233 | 25598 bare 234 | 4887 vegetation 235 | 4164 building 236 | 22653 bare 237 | 22996 vegetation 238 | 4661 vegetation 239 | 10043 vegetation 240 | 1503 building 241 | 14789 vegetation 242 | 21002 vegetation 243 | 3416 vegetation 244 | 13182 water 245 | 9988 vegetation 246 | 27656 road 247 | 6807 vegetation 248 | 9369 bare 249 | 1601 vegetation 250 | 21792 vegetation 251 | 4218 vegetation 252 | 16327 road 253 | 20794 water 254 | 2900 vegetation 255 | 18462 bare 256 | 10936 vegetation 257 | 8813 bare 258 | 13866 road 259 | 26870 vegetation 260 | 16075 water 261 | 26242 bare 262 | 1363 road 263 | 5828 bare 264 | 25918 vegetation 265 | 18787 vegetation 266 | 17287 vegetation 267 | 16952 water 268 | 7333 vegetation 269 | 16440 bare 270 | 10600 bare 271 | 27293 vegetation 272 | 27711 vegetation 273 | 28398 vegetation 274 | 8143 vegetation 275 | 7371 vegetation 276 | 4757 vegetation 277 | 20766 vegetation 278 | 5965 vegetation 279 | 28358 bare 280 | 19241 vegetation 281 | 27509 bare 282 | 2610 road 283 | 16768 road 284 | 20463 vegetation 285 | 13796 water 286 | 18877 vegetation 287 | 23633 bare 288 | 23455 vegetation 289 | 21061 vegetation 290 | 7209 vegetation 291 | 23890 bare 292 | 19718 vegetation 293 | 28274 road 294 | 4962 vegetation 295 | 14723 water 296 | 27224 bare 297 | 4120 bare 298 | 19607 water 299 | 5275 building 300 | 18097 road 301 | 27636 vegetation 302 | 12037 road 303 | 22394 water 304 | 8685 water 305 | 7070 vegetation 306 | 13677 road 307 | 18137 bare 308 | 15674 vegetation 309 | 21432 vegetation 310 | 4359 vegetation 311 | 14440 vegetation 312 | 507 vegetation 313 | 5435 bare 314 | 20901 water 315 | 19100 road 316 | 880 water 317 | 19311 road 318 | 18017 vegetation 319 | 2083 vegetation 320 | 19349 vegetation 321 | 5737 vegetation 322 | 1049 building 323 | 21184 vegetation 324 | 18289 vegetation 325 | 11684 water 326 | 128 vegetation 327 | 17797 bare 328 | 11827 road 329 | 18346 road 330 | 15139 vegetation 331 | 10093 water 332 | 6057 vegetation 333 | 8037 road 334 | 26026 vegetation 335 | 7903 vegetation 336 | 24372 road 337 | 8663 vegetation 338 | 23072 vegetation 339 | 23788 vegetation 340 | 6637 road 341 | 577 building 342 | 12473 bare 343 | 7581 vegetation 344 | 866 vegetation 345 | 18658 road 346 | 23870 vegetation 347 | 13950 water 348 | 6204 vegetation 349 | 10931 water 350 | 1551 building 351 | 6770 road 352 | 5173 building 353 | 7852 bare 354 | 4809 vegetation 355 | 1893 building 356 | 27153 vegetation 357 | 5391 vegetation 358 | 18081 vegetation 359 | 21838 vegetation 360 | 16067 water 361 | 11134 road 362 | 17871 vegetation 363 | 17310 road 364 | 2859 vegetation 365 | 22115 vegetation 366 | 28102 vegetation 367 | 24186 vegetation 368 | 17355 water 369 | 23311 bare 370 | 19326 vegetation 371 | 1078 water 372 | 3955 vegetation 373 | 26013 vegetation 374 | 12609 vegetation 375 | 16341 vegetation 376 | 7967 vegetation 377 | 15945 vegetation 378 | 10033 road 379 | 612 building 380 | 196 building 381 | 24593 vegetation 382 | 2722 vegetation 383 | 2416 vegetation 384 | 13228 bare 385 | 17503 vegetation 386 | 20216 vegetation 387 | 6837 water 388 | 18120 vegetation 389 | 20977 vegetation 390 | 14513 vegetation 391 | 1053 building 392 | 27108 bare 393 | 4486 vegetation 394 | 16746 bare 395 | 7414 bare 396 | 3636 road 397 | 3639 vegetation 398 | 27856 vegetation 399 | 23749 vegetation 400 | 10964 vegetation 401 | 26506 bare 402 | 4009 vegetation 403 | 11871 water 404 | 19267 vegetation 405 | 27659 water 406 | 1942 bare 407 | 7340 vegetation 408 | 23881 road 409 | 11525 vegetation 410 | 9555 road 411 | 5070 vegetation 412 | 4227 vegetation 413 | 26871 road 414 | 19594 vegetation 415 | 4708 bare 416 | 359 road 417 | 13809 water 418 | 11856 bare 419 | 23950 vegetation 420 | 11807 water 421 | 3683 road 422 | 1258 vegetation 423 | 27067 vegetation 424 | 4833 vegetation 425 | 681 vegetation 426 | 19340 bare 427 | 9392 vegetation 428 | 5653 vegetation 429 | 10876 water 430 | 1243 building 431 | 8589 vegetation 432 | 13832 water 433 | 9046 vegetation 434 | 16574 bare 435 | 3897 bare 436 | 5416 vegetation 437 | 14253 water 438 | 5447 road 439 | 15996 water 440 | 11104 vegetation 441 | 3357 vegetation 442 | 26201 road 443 | 3758 vegetation 444 | 9212 vegetation 445 | 15 road 446 | 7720 vegetation 447 | 24793 vegetation 448 | 15270 road 449 | 22841 vegetation 450 | 12049 vegetation 451 | 26734 vegetation 452 | 6176 vegetation 453 | 10078 vegetation 454 | 8877 vegetation 455 | 20562 road 456 | 14667 bare 457 | 11695 vegetation 458 | 12330 bare 459 | 22096 water 460 | 24003 vegetation 461 | 19549 water 462 | 19040 vegetation 463 | 27014 water 464 | 4324 bare 465 | 24474 vegetation 466 | 15241 water 467 | 28327 water 468 | 8944 vegetation 469 | 54 building 470 | 234 vegetation 471 | 17695 vegetation 472 | 18292 vegetation 473 | 17242 road 474 | 9275 road 475 | 1924 bare 476 | 17977 bare 477 | 7438 vegetation 478 | 21 vegetation 479 | 10346 water 480 | 19539 vegetation 481 | 14128 vegetation 482 | 6749 vegetation 483 | 24291 vegetation 484 | 6081 vegetation 485 | 18548 vegetation 486 | 9088 vegetation 487 | 16163 vegetation 488 | 4756 vegetation 489 | 9303 vegetation 490 | 11903 vegetation 491 | 3781 vegetation 492 | 19592 vegetation 493 | 8321 vegetation 494 | 28099 vegetation 495 | 15927 water 496 | 18913 road 497 | 6413 bare 498 | 19037 road 499 | 9143 bare 500 | 6318 vegetation 501 | 16181 road 502 | 15376 water 503 | 15207 bare 504 | 25182 bare 505 | 20755 vegetation 506 | 26129 bare 507 | 15964 road 508 | 608 building 509 | 14550 water 510 | 13762 bare 511 | 14658 water 512 | 11774 vegetation 513 | 19741 water 514 | 7105 bare 515 | 14330 vegetation 516 | 16240 vegetation 517 | 13679 water 518 | 19580 vegetation 519 | 14556 water 520 | 3749 bare 521 | 15142 vegetation 522 | 5074 vegetation 523 | 475 road 524 | 3029 road 525 | 9245 vegetation 526 | 6954 bare 527 | 3342 vegetation 528 | 6895 bare 529 | 660 building 530 | 26664 vegetation 531 | 18102 vegetation 532 | 2814 vegetation 533 | 21382 water 534 | 26283 bare 535 | 26483 bare 536 | 25779 road 537 | 9250 road 538 | 17266 water 539 | 23361 vegetation 540 | 21968 vegetation 541 | 12078 road 542 | 18515 water 543 | 9716 vegetation 544 | 16593 road 545 | 11204 water 546 | 25618 vegetation 547 | 2223 vegetation 548 | 4828 vegetation 549 | 9781 vegetation 550 | 13700 bare 551 | 3940 bare 552 | 5511 road 553 | 18404 vegetation 554 | 23833 vegetation 555 | 9131 water 556 | 14106 water 557 | 3261 vegetation 558 | 6805 vegetation 559 | 17818 water 560 | 4275 vegetation 561 | 13989 water 562 | 6107 vegetation 563 | 6797 road 564 | 16675 road 565 | 6164 vegetation 566 | 14055 vegetation 567 | 27029 vegetation 568 | 22246 vegetation 569 | 2153 building 570 | 13434 vegetation 571 | 11443 water 572 | 22688 bare 573 | 2207 vegetation 574 | 23283 road 575 | 9858 vegetation 576 | 4239 vegetation 577 | 1882 building 578 | 5296 vegetation 579 | 7138 vegetation 580 | 20640 vegetation 581 | 18080 vegetation 582 | 14197 water 583 | 9656 vegetation 584 | 12715 vegetation 585 | 4038 vegetation 586 | 214 building 587 | 20623 vegetation 588 | 374 vegetation 589 | 27487 road 590 | 11255 water 591 | 23819 bare 592 | 7194 vegetation 593 | 11446 vegetation 594 | 7411 vegetation 595 | 13946 bare 596 | 11837 water 597 | 12713 bare 598 | 4957 road 599 | 12331 road 600 | 3044 vegetation 601 | 14015 water 602 | 11544 vegetation 603 | 8421 road 604 | 17136 water 605 | 13889 vegetation 606 | 1842 vegetation 607 | 11925 vegetation 608 | 24271 vegetation 609 | 3346 vegetation 610 | 24946 road 611 | 11920 water 612 | 22674 vegetation 613 | 23895 vegetation 614 | 9222 vegetation 615 | 27746 vegetation 616 | 713 bare 617 | 24359 vegetation 618 | 11090 water 619 | 14754 water 620 | 11549 bare 621 | 804 building 622 | 21398 vegetation 623 | 16091 road 624 | 16491 water 625 | 13711 water 626 | 24062 water 627 | 11874 building 628 | 2283 bare 629 | 21041 vegetation 630 | 15595 water 631 | 11484 bare 632 | 1017 building 633 | 7550 bare 634 | 24536 bare 635 | 22591 vegetation 636 | 2123 water 637 | 3799 bare 638 | 26763 vegetation 639 | 8653 vegetation 640 | 20127 bare 641 | 2736 vegetation 642 | 2709 building 643 | 14296 vegetation 644 | 8395 vegetation 645 | 15439 vegetation 646 | 9167 bare 647 | 5140 vegetation 648 | 19917 road 649 | 21515 vegetation 650 | 18715 water 651 | 10369 vegetation 652 | 12660 vegetation 653 | 6766 vegetation 654 | 7122 vegetation 655 | 4080 bare 656 | 5309 vegetation 657 | 27851 vegetation 658 | 7377 vegetation 659 | 16498 vegetation 660 | 11244 vegetation 661 | 15426 vegetation 662 | 25148 bare 663 | 14570 vegetation 664 | 6703 vegetation 665 | 21906 vegetation 666 | 6747 road 667 | 5688 vegetation 668 | 14274 road 669 | 6167 vegetation 670 | 8322 vegetation 671 | 19447 road 672 | 14515 bare 673 | 12761 vegetation 674 | 15939 vegetation 675 | 9189 road 676 | 12527 vegetation 677 | 27255 vegetation 678 | 15898 vegetation 679 | 17224 vegetation 680 | 24433 bare 681 | 13728 water 682 | 6963 vegetation 683 | 9638 bare 684 | 23177 vegetation 685 | 25266 vegetation 686 | 4318 vegetation 687 | 163 vegetation 688 | 2511 road 689 | 23672 road 690 | 17572 road 691 | 1937 water 692 | 20814 road 693 | 15048 water 694 | 18039 bare 695 | 17647 vegetation 696 | 8452 bare 697 | 28104 vegetation 698 | 6065 vegetation 699 | 26399 vegetation 700 | 7278 vegetation 701 | 334 vegetation 702 | 25446 road 703 | 406 vegetation 704 | 6992 vegetation 705 | 13863 water 706 | 16478 road 707 | 21253 bare 708 | 16742 road 709 | 16883 vegetation 710 | 13429 water 711 | 6812 vegetation 712 | 15159 building 713 | 6819 bare 714 | 3709 building 715 | 18061 vegetation 716 | 17161 vegetation 717 | 11235 bare 718 | 21822 vegetation 719 | 592 building 720 | 8186 bare 721 | 3405 building 722 | 20674 water 723 | 10845 water 724 | 20202 vegetation 725 | 2576 vegetation 726 | 26363 bare 727 | 10067 vegetation 728 | 22482 bare 729 | 28225 bare 730 | 22830 bare 731 | 6210 road 732 | 22538 bare 733 | 12246 vegetation 734 | 8978 bare 735 | 15353 water 736 | 4687 vegetation 737 | 21706 vegetation 738 | 6900 vegetation 739 | 3972 vegetation 740 | 21167 vegetation 741 | 1676 bare 742 | 16052 water 743 | 25455 building 744 | 6282 vegetation 745 | 16410 bare 746 | 10765 water 747 | 23087 water 748 | 355 building 749 | 3163 building 750 | 18341 water 751 | 14249 water 752 | 26084 vegetation 753 | 1581 water 754 | 19612 water 755 | 17793 road 756 | 28114 vegetation 757 | 17615 water 758 | 10017 vegetation 759 | 17761 water 760 | 18745 vegetation 761 | 14688 bare 762 | 20664 vegetation 763 | 1365 building 764 | 20115 road 765 | 3277 vegetation 766 | 2267 vegetation 767 | 9765 vegetation 768 | 23084 road 769 | 5121 building 770 | 3509 vegetation 771 | 17216 bare 772 | 12461 bare 773 | 14380 water 774 | 26839 bare 775 | 24239 vegetation 776 | 14195 road 777 | 27755 vegetation 778 | 9032 bare 779 | 13836 water 780 | 6981 bare 781 | 11492 vegetation 782 | 4081 vegetation 783 | 19691 vegetation 784 | 9958 vegetation 785 | 8995 vegetation 786 | 18216 vegetation 787 | 17749 water 788 | 5018 road 789 | 179 road 790 | 27840 vegetation 791 | 10732 vegetation 792 | 16694 water 793 | 4301 vegetation 794 | 1496 water 795 | 10260 bare 796 | 24656 vegetation 797 | 4175 road 798 | 17816 road 799 | 11500 bare 800 | 12109 water 801 | 14421 vegetation 802 | 2985 vegetation 803 | 27472 bare 804 | 3916 bare 805 | 17599 water 806 | 17506 water 807 | 4733 vegetation 808 | 5937 vegetation 809 | 3177 vegetation 810 | 7057 vegetation 811 | 19127 road 812 | 9706 water 813 | 4893 vegetation 814 | 19141 vegetation 815 | 4188 road 816 | 21921 water 817 | 7793 road 818 | 3227 vegetation 819 | 19520 road 820 | 1964 vegetation 821 | 27182 vegetation 822 | 9121 vegetation 823 | 7666 bare 824 | 1732 vegetation 825 | 12454 vegetation 826 | 14483 vegetation 827 | 22064 vegetation 828 | 25624 road 829 | 14829 vegetation 830 | 28150 road 831 | 27097 water 832 | 13540 vegetation 833 | 3383 vegetation 834 | 11534 road 835 | 20322 bare 836 | 19026 vegetation 837 | 16290 bare 838 | 19918 vegetation 839 | 12615 bare 840 | 688 vegetation 841 | 20935 road 842 | 16038 vegetation 843 | 5779 vegetation 844 | 12626 vegetation 845 | 15755 road 846 | 8910 bare 847 | 24362 vegetation 848 | 6896 bare 849 | 13166 road 850 | 26150 vegetation 851 | 11507 water 852 | 16778 water 853 | 3776 vegetation 854 | 1823 vegetation 855 | 14026 bare 856 | 19760 vegetation 857 | 5936 vegetation 858 | 20057 vegetation 859 | 15830 water 860 | 22986 road 861 | 5420 bare 862 | 8355 bare 863 | 14470 vegetation 864 | 22832 vegetation 865 | 23921 water 866 | 10849 water 867 | 17253 road 868 | 16650 vegetation 869 | 5566 vegetation 870 | 16584 vegetation 871 | 7375 road 872 | 7705 water 873 | 13616 bare 874 | 3439 vegetation 875 | 8382 bare 876 | 18284 vegetation 877 | 10118 vegetation 878 | 14383 water 879 | 2195 building 880 | 23174 vegetation 881 | 4498 vegetation 882 | 1794 bare 883 | 16842 water 884 | 14366 water 885 | 7064 road 886 | 16880 vegetation 887 | 7313 vegetation 888 | 18049 vegetation 889 | 19041 water 890 | 2186 vegetation 891 | 13564 water 892 | 11560 vegetation 893 | 15008 water 894 | 26131 vegetation 895 | 14795 water 896 | 24416 vegetation 897 | 15272 water 898 | 4693 vegetation 899 | 10343 vegetation 900 | 3491 vegetation 901 | 2792 vegetation 902 | 18189 vegetation 903 | 10510 vegetation 904 | 19642 vegetation 905 | 20856 vegetation 906 | 10915 bare 907 | 5360 vegetation 908 | 18139 vegetation 909 | 3133 vegetation 910 | 4043 vegetation 911 | 662 vegetation 912 | 25585 bare 913 | 14614 water 914 | 24221 vegetation 915 | 20074 vegetation 916 | 10189 road 917 | 7751 vegetation 918 | 17494 vegetation 919 | 13497 water 920 | 3712 vegetation 921 | 25587 vegetation 922 | 22104 vegetation 923 | 7421 water 924 | 432 road 925 | 26421 vegetation 926 | 11814 vegetation 927 | 16701 water 928 | 12791 water 929 | 24431 vegetation 930 | 7649 vegetation 931 | 4528 vegetation 932 | 741 vegetation 933 | 5489 vegetation 934 | 893 water 935 | 6402 vegetation 936 | 15086 water 937 | 26169 vegetation 938 | 23695 bare 939 | 10325 water 940 | 14427 bare 941 | 12564 bare 942 | 5538 road 943 | 13566 water 944 | 5884 vegetation 945 | 4185 vegetation 946 | 17249 water 947 | 2866 vegetation 948 | 145 vegetation 949 | 20448 vegetation 950 | 6353 road 951 | 17876 road 952 | 15727 vegetation 953 | 16193 water 954 | 17153 road 955 | 25196 road 956 | 18595 vegetation 957 | 24045 water 958 | 682 building 959 | 12777 vegetation 960 | 20215 vegetation 961 | 8688 bare 962 | 20496 vegetation 963 | 12135 vegetation 964 | 27679 vegetation 965 | 9223 water 966 | 18314 water 967 | 8523 road 968 | 15552 road 969 | 6839 road 970 | 15478 water 971 | 15130 water 972 | 23182 vegetation 973 | 6261 bare 974 | 9769 road 975 | 389 road 976 | 16770 vegetation 977 | 28095 vegetation 978 | 956 water 979 | 20272 vegetation 980 | 25358 road 981 | 22535 water 982 | 6846 vegetation 983 | 472 vegetation 984 | 22298 bare 985 | 16649 road 986 | 15317 vegetation 987 | 16430 vegetation 988 | 7986 bare 989 | 22660 bare 990 | 9982 vegetation 991 | 11987 bare 992 | 9193 vegetation 993 | 17764 bare 994 | 11236 water 995 | 23291 vegetation 996 | 24524 vegetation 997 | 4004 vegetation 998 | 25502 bare 999 | 9544 vegetation 1000 | 9439 vegetation 1001 | 1621 water 1002 | 24441 vegetation 1003 | 6586 vegetation 1004 | 2667 water 1005 | 353 road 1006 | 16156 vegetation 1007 | 22468 vegetation 1008 | 3577 vegetation 1009 | 23495 vegetation 1010 | 16870 water 1011 | 16451 water 1012 | 19727 vegetation 1013 | 23613 vegetation 1014 | 7789 vegetation 1015 | 154 building 1016 | 5789 vegetation 1017 | 647 building 1018 | 15796 water 1019 | 6119 vegetation 1020 | 18087 vegetation 1021 | 7046 vegetation 1022 | 11677 bare 1023 | 1563 road 1024 | 6965 vegetation 1025 | 3815 vegetation 1026 | 18136 vegetation 1027 | 15976 road 1028 | 15850 vegetation 1029 | 5847 vegetation 1030 | 28366 vegetation 1031 | 15636 vegetation 1032 | 19837 vegetation 1033 | 6231 vegetation 1034 | 718 vegetation 1035 | 9160 vegetation 1036 | 4174 bare 1037 | 16683 vegetation 1038 | 5997 vegetation 1039 | 13987 vegetation 1040 | 14889 water 1041 | 20099 vegetation 1042 | 20203 vegetation 1043 | 17561 bare 1044 | 5773 bare 1045 | 16414 water 1046 | 15380 vegetation 1047 | 15077 road 1048 | 14338 water 1049 | 10516 water 1050 | 17844 vegetation 1051 | 26521 bare 1052 | 10415 vegetation 1053 | 20773 water 1054 | 17112 road 1055 | 7350 road 1056 | 4985 bare 1057 | 16696 road 1058 | 20850 water 1059 | 24619 vegetation 1060 | 18382 vegetation 1061 | 16117 bare 1062 | 1844 vegetation 1063 | 7009 vegetation 1064 | 17820 water 1065 | 13846 bare 1066 | 16705 vegetation 1067 | 17200 road 1068 | 6948 vegetation 1069 | 26903 road 1070 | 5913 vegetation 1071 | 16618 water 1072 | 24189 vegetation 1073 | 14846 water 1074 | 16355 water 1075 | 28087 vegetation 1076 | 9708 road 1077 | 19419 vegetation 1078 | 5162 bare 1079 | 10215 bare 1080 | 15308 water 1081 | 4303 bare 1082 | 8427 bare 1083 | 6937 vegetation 1084 | 5799 vegetation 1085 | 12315 vegetation 1086 | 4702 bare 1087 | 43 water 1088 | 9448 vegetation 1089 | 21347 water 1090 | 6904 vegetation 1091 | 2124 building 1092 | 4794 vegetation 1093 | 20750 road 1094 | 22742 vegetation 1095 | 28431 road 1096 | 18773 vegetation 1097 | 22804 vegetation 1098 | 1094 vegetation 1099 | 17653 vegetation 1100 | 27030 road 1101 | 26595 bare 1102 | 1421 water 1103 | 23184 vegetation 1104 | 20455 vegetation 1105 | 19079 road 1106 | 9705 bare 1107 | 2612 vegetation 1108 | 20300 vegetation 1109 | 1675 bare 1110 | 5392 vegetation 1111 | 3174 vegetation 1112 | 21843 vegetation 1113 | 21238 vegetation 1114 | 19815 vegetation 1115 | 25191 bare 1116 | 7005 vegetation 1117 | 6769 vegetation 1118 | 23371 bare 1119 | 6848 vegetation 1120 | 15034 water 1121 | 10892 vegetation 1122 | 22785 vegetation 1123 | 5115 vegetation 1124 | 26802 vegetation 1125 | 1338 vegetation 1126 | 14823 water 1127 | 22834 bare 1128 | 14631 water 1129 | 5775 vegetation 1130 | 5650 bare 1131 | 13966 bare 1132 | 14726 water 1133 | 26672 road 1134 | 17006 vegetation 1135 | 7498 vegetation 1136 | 18535 vegetation 1137 | 16424 bare 1138 | 7506 vegetation 1139 | 3929 vegetation 1140 | 24720 vegetation 1141 | 2961 vegetation 1142 | 18015 road 1143 | 4878 vegetation 1144 | 15344 water 1145 | 20637 bare 1146 | 28296 water 1147 | 5201 vegetation 1148 | 3501 vegetation 1149 | 27978 vegetation 1150 | 20904 vegetation 1151 | 14567 water 1152 | 6365 vegetation 1153 | 26422 vegetation 1154 | 27869 vegetation 1155 | 25416 vegetation 1156 | 9355 vegetation 1157 | 9971 vegetation 1158 | 3800 road 1159 | 26790 vegetation 1160 | 25729 bare 1161 | 10673 water 1162 | 11408 bare 1163 | 3790 vegetation 1164 | 5579 vegetation 1165 | 14980 water 1166 | 9545 vegetation 1167 | 3142 bare 1168 | 21797 vegetation 1169 | 16322 vegetation 1170 | 5588 vegetation 1171 | 2113 road 1172 | 7750 vegetation 1173 | 23891 road 1174 | 19132 road 1175 | 19738 vegetation 1176 | 5697 bare 1177 | 26654 vegetation 1178 | 17924 bare 1179 | 21524 water 1180 | 6830 bare 1181 | 15627 water 1182 | 23634 bare 1183 | 13194 vegetation 1184 | 21490 water 1185 | 14251 bare 1186 | 14204 road 1187 | 26620 bare 1188 | 14617 vegetation 1189 | 9767 vegetation 1190 | 24069 vegetation 1191 | 7334 bare 1192 | 16135 vegetation 1193 | 14018 water 1194 | 11150 bare 1195 | 11456 bare 1196 | 2096 building 1197 | 4694 bare 1198 | 15743 vegetation 1199 | 3524 vegetation 1200 | 5146 vegetation 1201 | 23675 bare 1202 | 17708 vegetation 1203 | 20621 vegetation 1204 | 27265 vegetation 1205 | 20174 road 1206 | 14110 water 1207 | 11338 water 1208 | 4774 vegetation 1209 | 17585 vegetation 1210 | 17763 vegetation 1211 | 7631 bare 1212 | 4277 bare 1213 | 2647 vegetation 1214 | 17975 vegetation 1215 | 21864 water 1216 | 10338 vegetation 1217 | 3025 vegetation 1218 | 4601 vegetation 1219 | 4684 vegetation 1220 | 26980 vegetation 1221 | 20015 bare 1222 | 16380 bare 1223 | 25341 bare 1224 | 7166 bare 1225 | 13978 water 1226 | 8733 road 1227 | 10208 water 1228 | 3335 vegetation 1229 | 26557 vegetation 1230 | 16718 water 1231 | 13985 road 1232 | 15007 road 1233 | 1456 building 1234 | 16483 water 1235 | 17252 vegetation 1236 | 14771 water 1237 | 7197 road 1238 | 16843 bare 1239 | 7679 bare 1240 | 6100 vegetation 1241 | 7159 vegetation 1242 | 119 vegetation 1243 | 19985 water 1244 | 748 building 1245 | 6163 vegetation 1246 | 11358 vegetation 1247 | 21471 vegetation 1248 | 10211 vegetation 1249 | 174 building 1250 | 18939 vegetation 1251 | 11256 water 1252 | 7670 vegetation 1253 | 24043 bare 1254 | 6516 vegetation 1255 | 16688 water 1256 | 27972 building 1257 | 6217 vegetation 1258 | 3159 bare 1259 | 24844 water 1260 | 26402 vegetation 1261 | 15829 road 1262 | 27622 vegetation 1263 | 14591 water 1264 | 8603 vegetation 1265 | 17517 vegetation 1266 | 6731 vegetation 1267 | 20527 vegetation 1268 | 14672 bare 1269 | 15173 water 1270 | 15894 water 1271 | 5741 vegetation 1272 | 13495 water 1273 | 16481 road 1274 | 7191 water 1275 | 2345 vegetation 1276 | 10779 vegetation 1277 | 11080 water 1278 | 2018 bare 1279 | 2509 vegetation 1280 | 14681 vegetation 1281 | 23717 road 1282 | 22889 vegetation 1283 | 18862 vegetation 1284 | 2870 vegetation 1285 | 3021 vegetation 1286 | 24206 vegetation 1287 | 4095 bare 1288 | 14714 road 1289 | 4903 vegetation 1290 | 11759 water 1291 | 5656 road 1292 | 22199 vegetation 1293 | 20629 vegetation 1294 | 2724 vegetation 1295 | 5637 vegetation 1296 | 11893 water 1297 | 2427 building 1298 | 300 vegetation 1299 | 11481 vegetation 1300 | 5449 vegetation 1301 | 4134 vegetation 1302 | 12070 road 1303 | 13812 bare 1304 | 17635 road 1305 | 6437 vegetation 1306 | 20918 road 1307 | 26627 vegetation 1308 | 6660 vegetation 1309 | 740 building 1310 | 23676 vegetation 1311 | 6347 vegetation 1312 | 4940 vegetation 1313 | 24005 water 1314 | 11452 bare 1315 | 17877 bare 1316 | 9589 vegetation 1317 | 17041 vegetation 1318 | 23172 water 1319 | 23160 bare 1320 | 8871 road 1321 | 25527 bare 1322 | 3444 vegetation 1323 | 8539 road 1324 | 5550 bare 1325 | 3203 bare 1326 | 10760 bare 1327 | 13019 water 1328 | 15809 road 1329 | 7730 vegetation 1330 | 23187 road 1331 | 4930 vegetation 1332 | 21156 bare 1333 | 12731 bare 1334 | 24668 vegetation 1335 | 7473 water 1336 | 21954 bare 1337 | 18798 vegetation 1338 | 27987 vegetation 1339 | 28262 vegetation 1340 | 2102 vegetation 1341 | 11322 bare 1342 | 6616 vegetation 1343 | 9239 vegetation 1344 | 1418 bare 1345 | 28306 vegetation 1346 | 19622 bare 1347 | 25958 water 1348 | 461 bare 1349 | 3660 bare 1350 | 9382 vegetation 1351 | 1768 bare 1352 | 8274 vegetation 1353 | 14657 water 1354 | 15447 water 1355 | 14445 bare 1356 | 1213 building 1357 | 7448 vegetation 1358 | 16427 water 1359 | 22389 vegetation 1360 | 4047 vegetation 1361 | 25464 vegetation 1362 | 3747 vegetation 1363 | 20117 vegetation 1364 | 23189 vegetation 1365 | 6354 vegetation 1366 | 18815 vegetation 1367 | 6035 water 1368 | 20331 vegetation 1369 | 10705 building 1370 | 4379 water 1371 | 15216 water 1372 | 12483 water 1373 | 26948 vegetation 1374 | 15967 vegetation 1375 | 504 building 1376 | 25891 bare 1377 | 13830 water 1378 | 1350 vegetation 1379 | 3981 building 1380 | 14208 water 1381 | 3851 road 1382 | 1026 road 1383 | 23449 bare 1384 | 14447 water 1385 | 7761 vegetation 1386 | 23230 vegetation 1387 | 26814 water 1388 | 26095 water 1389 | 5222 vegetation 1390 | 21607 vegetation 1391 | 4228 vegetation 1392 | 26375 road 1393 | 25237 water 1394 | 6521 bare 1395 | 18112 vegetation 1396 | 3719 vegetation 1397 | 2046 road 1398 | 4317 vegetation 1399 | 13065 vegetation 1400 | 13290 road 1401 | 5534 vegetation 1402 | 16764 vegetation 1403 | 25888 vegetation 1404 | 16962 vegetation 1405 | 6272 vegetation 1406 | 26192 bare 1407 | 23343 vegetation 1408 | 25303 bare 1409 | 3231 building 1410 | 14163 vegetation 1411 | 19087 road 1412 | 27148 bare 1413 | 16684 vegetation 1414 | 5945 vegetation 1415 | 13864 vegetation 1416 | 8921 vegetation 1417 | 8804 bare 1418 | 808 vegetation 1419 | 2686 building 1420 | 16941 water 1421 | 1025 vegetation 1422 | 16225 water 1423 | 13397 vegetation 1424 | 18883 vegetation 1425 | 19518 road 1426 | 20292 road 1427 | 12642 bare 1428 | 123 vegetation 1429 | 22884 vegetation 1430 | 27095 road 1431 | 153 building 1432 | 17963 vegetation 1433 | 26550 road 1434 | 5477 vegetation 1435 | 7481 vegetation 1436 | 26793 bare 1437 | 15968 vegetation 1438 | 16467 water 1439 | 5364 vegetation 1440 | 373 building 1441 | 20407 road 1442 | 4677 vegetation 1443 | 10435 vegetation 1444 | 20633 road 1445 | 17677 road 1446 | 17731 bare 1447 | 25998 road 1448 | 3423 water 1449 | 21158 water 1450 | 3911 vegetation 1451 | 17232 vegetation 1452 | 9268 vegetation 1453 | 16837 vegetation 1454 | 8649 vegetation 1455 | 12350 bare 1456 | 18152 road 1457 | 22968 road 1458 | 18222 road 1459 | 21508 bare 1460 | 11652 water 1461 | 15199 vegetation 1462 | 5920 bare 1463 | 13303 road 1464 | 14037 water 1465 | 22218 vegetation 1466 | 1622 building 1467 | 17284 water 1468 | 4464 road 1469 | 11240 bare 1470 | 7856 vegetation 1471 | 26965 vegetation 1472 | 10073 vegetation 1473 | 15196 vegetation 1474 | 27038 vegetation 1475 | 6386 vegetation 1476 | 19116 vegetation 1477 | 1557 vegetation 1478 | 19402 road 1479 | 10961 water 1480 | 20378 vegetation 1481 | 2135 building 1482 | 22052 vegetation 1483 | 546 road 1484 | 22441 road 1485 | 3987 vegetation 1486 | 13801 water 1487 | 13038 road 1488 | 24673 bare 1489 | 10933 vegetation 1490 | 4944 vegetation 1491 | 1056 vegetation 1492 | 3281 road 1493 | 21289 water 1494 | 7374 vegetation 1495 | 5071 vegetation 1496 | 21385 vegetation 1497 | 2231 building 1498 | 9615 road 1499 | 1711 water 1500 | 14044 water 1501 | 26949 vegetation 1502 | 9584 vegetation 1503 | 801 building 1504 | 4685 vegetation 1505 | 22478 water 1506 | 20895 road 1507 | 14165 water 1508 | 26157 vegetation 1509 | 6957 road 1510 | 12670 vegetation 1511 | 5984 vegetation 1512 | 17034 vegetation 1513 | 25066 vegetation 1514 | 19474 water 1515 | 4236 vegetation 1516 | 26709 vegetation 1517 | 9735 vegetation 1518 | 4660 vegetation 1519 | 28198 vegetation 1520 | 11072 vegetation 1521 | 20624 vegetation -------------------------------------------------------------------------------- /data/ah/val.txt: -------------------------------------------------------------------------------- 1 | 4617 road 2 | 11828 vegetation 3 | 26966 road 4 | 10838 vegetation 5 | 5950 vegetation 6 | 3557 vegetation 7 | 2298 road 8 | 11169 bare 9 | 12767 water 10 | 26817 road 11 | 2649 vegetation 12 | 14819 road 13 | 21044 water 14 | 23760 bare 15 | 10923 vegetation 16 | 5038 vegetation 17 | 9989 vegetation 18 | 5013 vegetation 19 | 9572 bare 20 | 5631 vegetation 21 | 3943 vegetation 22 | 26029 bare 23 | 20306 bare 24 | 19046 road 25 | 17663 vegetation 26 | 7575 bare 27 | 22962 water 28 | 2618 road 29 | 8791 vegetation 30 | 2233 vegetation 31 | 4863 vegetation 32 | 13028 bare 33 | 11179 water 34 | 6435 vegetation 35 | 28443 vegetation 36 | 22167 vegetation 37 | 6430 road 38 | 25817 bare 39 | 25637 bare 40 | 17920 vegetation 41 | 3467 vegetation 42 | 4209 vegetation 43 | 26953 vegetation 44 | 3606 bare 45 | 2508 bare 46 | 21691 building 47 | 16418 road 48 | 3201 vegetation 49 | 10736 vegetation 50 | 1728 vegetation 51 | 10161 water 52 | 4350 bare 53 | 15933 vegetation 54 | 12519 vegetation 55 | 27035 vegetation 56 | 27810 road 57 | 15054 vegetation 58 | 22367 bare 59 | 11984 water 60 | 13790 bare 61 | 9906 road 62 | 9730 vegetation 63 | 8400 vegetation 64 | 23657 bare 65 | 27697 road 66 | 5325 road 67 | 5861 vegetation 68 | 11680 water 69 | 16472 vegetation 70 | 7871 vegetation 71 | 24211 vegetation 72 | 22192 vegetation 73 | 20655 road 74 | 5415 vegetation 75 | 23146 bare 76 | 20320 vegetation 77 | 7218 vegetation 78 | 26136 vegetation 79 | 15698 vegetation 80 | 1784 water 81 | 6196 bare 82 | 4792 bare 83 | 19063 vegetation 84 | 16937 water 85 | 2841 building 86 | 13536 bare 87 | 11409 vegetation 88 | 567 road 89 | 7724 building 90 | 13713 bare 91 | 5592 road 92 | 21173 vegetation 93 | 3630 vegetation 94 | 11963 bare 95 | 25942 vegetation 96 | 14252 vegetation 97 | 26881 road 98 | 11551 road 99 | 17957 vegetation 100 | 15741 water 101 | 16128 water 102 | 12425 vegetation 103 | 4750 bare 104 | 14048 vegetation 105 | 10242 road 106 | 11476 water 107 | 81 vegetation 108 | 20596 vegetation 109 | 13965 water 110 | 26121 vegetation 111 | 5292 vegetation 112 | 17698 road 113 | 16987 vegetation 114 | 13721 bare 115 | 3401 road 116 | 5428 vegetation 117 | 16972 road 118 | 21071 vegetation 119 | 564 building 120 | 23530 vegetation 121 | 1204 building 122 | 379 vegetation 123 | 9004 vegetation 124 | 16249 vegetation 125 | 12349 water 126 | 3893 bare 127 | 28183 vegetation 128 | 2171 building 129 | 17589 water 130 | 3729 vegetation 131 | 11021 water 132 | 16535 bare 133 | 9668 road 134 | 5289 vegetation 135 | 12248 water 136 | 6019 road 137 | 13524 bare 138 | 22938 water 139 | 4148 vegetation 140 | 14333 vegetation 141 | 11757 vegetation 142 | 3853 road 143 | 6410 vegetation 144 | 5129 vegetation 145 | 15246 water 146 | 16819 water 147 | 14584 bare 148 | 13644 water 149 | 8888 vegetation 150 | 6025 vegetation 151 | 15472 vegetation 152 | 15015 water 153 | 5037 vegetation 154 | 14755 water 155 | 4886 vegetation 156 | 9139 vegetation 157 | 21510 bare 158 | 27068 road 159 | 19519 road 160 | 22708 water 161 | 15506 road 162 | 13933 vegetation 163 | 12839 water 164 | 17813 vegetation 165 | 24741 vegetation 166 | 12015 vegetation 167 | 27912 vegetation 168 | 13949 road 169 | 15797 vegetation 170 | 11650 bare 171 | 1788 road 172 | 16323 vegetation 173 | 16598 vegetation 174 | 698 building 175 | 4176 vegetation 176 | 19064 road 177 | 23726 bare 178 | 6695 vegetation 179 | 409 water 180 | 21262 vegetation 181 | 971 vegetation 182 | 20388 vegetation 183 | 5667 vegetation 184 | 24249 bare 185 | 1139 building 186 | 14184 water 187 | 19109 bare 188 | 15769 bare 189 | 4993 vegetation 190 | 26890 bare 191 | 1930 road 192 | 5268 vegetation 193 | 14820 vegetation 194 | 755 building 195 | 2367 vegetation 196 | 7102 road 197 | 21242 vegetation 198 | 23680 bare 199 | 1385 vegetation 200 | 4103 vegetation 201 | 18124 water 202 | 24924 vegetation 203 | 16615 vegetation 204 | 14577 water 205 | 6662 vegetation 206 | 15603 water 207 | 7357 vegetation 208 | 12217 road 209 | 20349 bare 210 | 1586 vegetation 211 | 16112 water 212 | 1442 building 213 | 8561 road 214 | 15807 vegetation 215 | 9628 vegetation 216 | 17994 water 217 | 3735 vegetation 218 | 14436 vegetation 219 | 5351 vegetation 220 | 5213 vegetation 221 | 10010 bare 222 | 17409 bare 223 | 659 building 224 | 20284 vegetation 225 | 22232 bare 226 | 15061 water 227 | 11805 water 228 | 16357 water 229 | 23415 road 230 | 6047 vegetation 231 | 19535 road 232 | 24859 vegetation 233 | 20264 vegetation 234 | 3143 vegetation 235 | 12355 vegetation 236 | 12020 water 237 | 13941 vegetation 238 | 2238 building 239 | 8125 bare 240 | 24098 road 241 | 23832 bare 242 | 1653 water 243 | 21655 vegetation 244 | 10683 vegetation 245 | 16437 road 246 | 1057 vegetation 247 | 18036 vegetation 248 | 23778 vegetation 249 | 17642 vegetation 250 | 1825 vegetation 251 | 13494 water 252 | 19264 road 253 | 23643 vegetation 254 | 18025 water 255 | 1232 water 256 | 1235 building 257 | 20373 vegetation 258 | 11049 bare 259 | 27720 vegetation 260 | 23491 vegetation 261 | 27631 vegetation 262 | 2105 road 263 | 15955 vegetation 264 | 27414 vegetation 265 | 22666 bare 266 | 6724 vegetation 267 | 15485 water 268 | 879 vegetation 269 | 17747 bare 270 | 19972 bare 271 | 585 vegetation 272 | 3591 vegetation 273 | 15682 water 274 | 14986 vegetation 275 | 15865 vegetation 276 | 7935 vegetation 277 | 17018 water 278 | 18679 vegetation 279 | 4354 bare 280 | 3146 road 281 | 10224 water 282 | 17581 water 283 | 16150 vegetation 284 | 1614 road 285 | 23396 bare 286 | 17358 water 287 | 24551 vegetation 288 | 23226 bare 289 | 11504 water 290 | 14974 water 291 | 14064 water 292 | 2034 building 293 | 2589 vegetation 294 | 5774 bare 295 | 15824 water 296 | 16780 road 297 | 4319 vegetation 298 | 2400 vegetation 299 | 21916 road 300 | 28129 vegetation 301 | 19414 vegetation 302 | 23711 road 303 | 4894 bare 304 | 14849 road 305 | 1067 vegetation 306 | 19978 vegetation 307 | 22291 bare 308 | 19068 vegetation 309 | 210 building 310 | 3198 vegetation 311 | 6526 vegetation 312 | 5699 vegetation 313 | 23894 bare 314 | 15359 water 315 | 17438 water 316 | 4929 vegetation 317 | 12313 vegetation 318 | 9862 vegetation 319 | 20367 vegetation 320 | 17511 vegetation 321 | 17735 road 322 | 2342 vegetation 323 | 3107 road 324 | 23915 road 325 | 20713 water 326 | 11258 vegetation 327 | 21823 vegetation 328 | 3244 bare 329 | 9333 road 330 | 6993 bare 331 | 18610 water 332 | 14801 vegetation 333 | 5584 vegetation 334 | 23442 vegetation 335 | 8644 vegetation 336 | 1682 vegetation 337 | 20339 road 338 | 23207 vegetation 339 | 11962 bare 340 | 11440 bare 341 | 10767 vegetation 342 | 629 building 343 | 1864 vegetation 344 | 5781 vegetation 345 | 419 building 346 | 15970 vegetation 347 | 313 building 348 | 8475 vegetation 349 | 15885 road 350 | 15663 vegetation 351 | 26525 road 352 | 848 building 353 | 19281 road 354 | 23144 road 355 | 10229 vegetation 356 | 25863 vegetation 357 | 19856 bare 358 | 24163 vegetation 359 | 12899 water 360 | 23993 vegetation 361 | 18732 vegetation 362 | 3445 vegetation 363 | 10053 bare 364 | 23932 bare 365 | 5182 vegetation 366 | 24396 vegetation 367 | 28010 vegetation 368 | 2757 vegetation 369 | 22108 bare 370 | 15810 water 371 | 23325 bare 372 | 10220 vegetation 373 | 13396 water 374 | 11472 water 375 | 1020 vegetation 376 | 15966 vegetation 377 | 7933 road 378 | 1024 building 379 | 14408 water 380 | 474 bare 381 | 28059 vegetation 382 | 5598 vegetation 383 | 17295 vegetation 384 | 3276 vegetation 385 | 17019 vegetation 386 | 14146 water 387 | 25684 water 388 | 4555 vegetation 389 | 10638 vegetation 390 | 2514 building 391 | 21493 vegetation 392 | 9026 vegetation 393 | 19061 vegetation 394 | 22528 road 395 | 23022 vegetation 396 | 13928 water 397 | 17173 water 398 | 24513 vegetation 399 | 21552 vegetation 400 | 186 vegetation 401 | 4588 vegetation 402 | 17196 water 403 | 16435 water 404 | 10030 road 405 | 23605 water 406 | 3356 vegetation 407 | 2512 vegetation 408 | 7689 vegetation 409 | 16385 water 410 | 18266 bare 411 | 8702 bare 412 | 9154 road 413 | 591 vegetation 414 | 11749 vegetation 415 | 27137 vegetation 416 | 11825 vegetation 417 | 22053 vegetation 418 | 25761 vegetation 419 | 6570 vegetation 420 | 8851 water 421 | 9612 bare 422 | 18591 vegetation 423 | 25683 road 424 | 18363 vegetation 425 | 15481 road 426 | 5148 vegetation 427 | 18618 vegetation 428 | 4917 vegetation 429 | 2065 vegetation 430 | 19759 road 431 | 9437 bare 432 | 16933 water 433 | 1722 vegetation 434 | 7380 vegetation 435 | 15402 water 436 | 5065 vegetation 437 | 19748 vegetation 438 | 15530 water 439 | 7326 vegetation 440 | 20538 vegetation 441 | 3904 vegetation 442 | 21222 water 443 | 13820 road 444 | 1040 building 445 | 16648 water 446 | 27465 vegetation 447 | 17269 road 448 | 19542 road 449 | 26476 vegetation 450 | 3740 vegetation 451 | 11846 vegetation 452 | 2473 bare 453 | 15040 road 454 | 11844 vegetation 455 | 2771 vegetation 456 | 17809 vegetation 457 | 16293 vegetation 458 | 2334 bare 459 | 10974 water 460 | 22481 vegetation 461 | 17540 road 462 | 20502 bare 463 | 13692 vegetation 464 | 4226 vegetation 465 | 5090 vegetation 466 | 23150 water 467 | 19203 vegetation 468 | 14417 water 469 | 18103 water 470 | 10286 vegetation 471 | 18067 vegetation 472 | 20269 vegetation 473 | 26238 vegetation 474 | 4644 road 475 | 1897 bare 476 | 1193 building 477 | 922 building 478 | 5794 vegetation 479 | 6792 bare 480 | 20467 water 481 | 3255 building 482 | 1630 vegetation 483 | 14456 water 484 | 24095 road 485 | 2628 vegetation 486 | 14954 road 487 | 13579 bare 488 | 20001 bare 489 | 24486 vegetation 490 | 10143 bare 491 | 25071 vegetation 492 | 2654 road 493 | 27566 water 494 | 28098 vegetation 495 | 14913 water 496 | 20749 water 497 | 27013 vegetation 498 | 6677 vegetation 499 | 11994 vegetation 500 | 5294 road 501 | 23510 vegetation 502 | 10334 road 503 | 18227 road 504 | 1873 vegetation 505 | 4121 bare 506 | 5160 vegetation 507 | 8761 vegetation 508 | 26759 water 509 | 19881 vegetation 510 | 4900 building 511 | 4140 vegetation 512 | 18401 vegetation 513 | 20576 vegetation 514 | 26840 water 515 | 16376 road 516 | 15498 vegetation 517 | 3988 building 518 | 17931 bare 519 | 13835 vegetation 520 | 940 road 521 | 26240 vegetation 522 | 23682 road 523 | 20018 vegetation 524 | 1359 building 525 | 26511 vegetation 526 | 16655 road 527 | 6615 vegetation 528 | 20868 road 529 | 16325 bare 530 | 23119 water 531 | 23237 vegetation 532 | 16351 water 533 | 3578 vegetation 534 | 16506 bare 535 | 13201 water 536 | 4559 vegetation 537 | 18267 vegetation 538 | 23522 bare 539 | 857 water 540 | 18454 road 541 | 6929 vegetation 542 | 17045 vegetation 543 | 28290 vegetation 544 | 13884 road 545 | 21989 bare 546 | 22336 bare 547 | 24397 road 548 | 21010 bare 549 | 3511 vegetation 550 | 10214 vegetation 551 | 16125 water 552 | 4854 vegetation 553 | 27069 vegetation 554 | 11528 road 555 | 3730 vegetation 556 | 10095 bare 557 | 28323 vegetation 558 | 21246 vegetation 559 | 26825 bare 560 | 17135 water 561 | 24277 road 562 | 79 vegetation 563 | 26526 vegetation 564 | 20753 vegetation 565 | 5625 vegetation 566 | 12360 vegetation 567 | 23805 vegetation 568 | 16920 road 569 | 4430 building 570 | 7273 vegetation 571 | 4102 vegetation 572 | 17401 road 573 | 12507 road 574 | 14638 road 575 | 17328 vegetation 576 | 8667 bare 577 | 14474 water 578 | 14130 road 579 | 17520 vegetation 580 | 16016 road 581 | 4508 vegetation 582 | 1006 vegetation 583 | 4635 vegetation 584 | 2629 vegetation 585 | 20288 vegetation 586 | 7719 vegetation 587 | 17492 road 588 | 17930 water 589 | 24023 vegetation 590 | 11454 vegetation 591 | 7971 bare 592 | 19966 water 593 | 9702 vegetation 594 | 14996 vegetation 595 | 22377 building 596 | 14546 vegetation 597 | 19616 road 598 | 25395 vegetation 599 | 13924 water 600 | 2465 road 601 | 13922 water 602 | 499 building 603 | 9052 vegetation 604 | 2280 building 605 | 5359 bare 606 | 11826 water 607 | 17387 water 608 | 28288 vegetation 609 | 2855 building 610 | 209 building 611 | 20461 vegetation 612 | 18670 vegetation 613 | 1304 vegetation 614 | 3296 vegetation 615 | 6409 vegetation 616 | 17038 vegetation 617 | 6617 vegetation 618 | 18395 vegetation 619 | 28295 vegetation 620 | 2128 building 621 | 6324 vegetation 622 | 17848 bare 623 | 641 building 624 | 22176 vegetation 625 | 9455 vegetation 626 | 5456 vegetation 627 | 3977 vegetation 628 | 7106 vegetation 629 | 28394 vegetation 630 | 13391 water 631 | 10642 vegetation 632 | 22120 vegetation 633 | 1765 vegetation 634 | 20822 vegetation 635 | 22436 vegetation 636 | 1107 building 637 | 4610 vegetation 638 | 4795 bare 639 | 5831 vegetation 640 | 14487 vegetation 641 | 18831 water 642 | 22332 bare 643 | 3848 vegetation 644 | 3283 vegetation 645 | 4615 vegetation 646 | 6716 vegetation 647 | 23185 vegetation 648 | 2650 vegetation 649 | 28317 vegetation 650 | 4440 bare 651 | 3344 water 652 | 4233 vegetation 653 | 23101 bare 654 | 28424 vegetation 655 | 16139 vegetation 656 | 8967 road 657 | 5883 vegetation 658 | 11617 bare 659 | 24459 vegetation 660 | 5233 vegetation 661 | 28184 vegetation 662 | 10062 vegetation 663 | 3004 vegetation 664 | 15800 vegetation 665 | 19260 bare 666 | 14101 vegetation 667 | 16329 water 668 | 8828 vegetation 669 | 4636 road 670 | 16832 water 671 | 19157 bare 672 | 16358 bare 673 | 14848 vegetation 674 | 20661 road 675 | 11320 water 676 | 11873 building 677 | 22713 road 678 | 2484 bare 679 | 6356 vegetation 680 | 5843 vegetation 681 | 13612 vegetation 682 | 21150 vegetation 683 | 3280 vegetation 684 | 23245 vegetation 685 | 26420 bare 686 | 3797 vegetation 687 | 1625 road 688 | 7944 vegetation 689 | 2093 water 690 | 13742 vegetation 691 | 17751 vegetation 692 | 6014 vegetation 693 | 5507 vegetation 694 | 3682 vegetation 695 | 8664 vegetation 696 | 3404 vegetation 697 | 12112 bare 698 | 22768 bare 699 | 5402 road 700 | 6459 road 701 | 23214 bare 702 | 15420 water 703 | 23504 water 704 | 24752 vegetation 705 | 17641 vegetation 706 | 5310 vegetation 707 | 21364 vegetation 708 | 4214 road 709 | 15752 road 710 | 24436 bare 711 | 15599 water 712 | 24185 vegetation 713 | 24348 bare 714 | 21062 road 715 | 1347 water 716 | 23409 bare 717 | 20457 bare 718 | 13893 vegetation 719 | 26317 bare 720 | 19438 vegetation 721 | 22005 vegetation 722 | 15224 bare 723 | 19591 road 724 | 26522 vegetation 725 | 11466 vegetation 726 | 19841 road 727 | 7905 vegetation 728 | 13834 water 729 | 2561 vegetation 730 | 14373 vegetation 731 | 1958 bare 732 | 19956 bare 733 | 3667 vegetation 734 | 7998 vegetation 735 | 12464 road 736 | 5818 vegetation 737 | 563 vegetation 738 | 21035 vegetation 739 | 16446 vegetation 740 | 26786 bare 741 | 23775 water 742 | 13253 vegetation 743 | 16669 bare 744 | 3506 vegetation 745 | 5993 vegetation 746 | 13273 water 747 | 2623 building 748 | 9232 vegetation 749 | 21502 vegetation 750 | 14046 road 751 | 3012 vegetation 752 | 11273 vegetation 753 | 2174 vegetation 754 | 5354 building 755 | 2380 vegetation 756 | 20399 vegetation 757 | 2470 bare 758 | 23287 vegetation 759 | 1663 vegetation 760 | 2861 vegetation 761 | 14705 bare 762 | 10045 vegetation 763 | 21771 water 764 | 27614 vegetation 765 | 14782 bare 766 | 22171 bare 767 | 27980 water 768 | 22562 vegetation 769 | 24507 vegetation 770 | 17477 water 771 | 25424 bare 772 | 19667 vegetation 773 | 1101 bare 774 | 23798 bare 775 | 2472 vegetation 776 | 20396 bare 777 | 9344 vegetation 778 | 26938 vegetation 779 | 459 building 780 | 6483 water 781 | 16597 vegetation 782 | 2908 water 783 | 27960 vegetation 784 | 16790 vegetation 785 | 13852 water 786 | 5212 vegetation 787 | 6773 vegetation 788 | 5981 vegetation 789 | 13622 road 790 | 16258 vegetation 791 | 26401 water 792 | 25415 vegetation 793 | 25877 vegetation 794 | 3317 vegetation 795 | 5015 vegetation 796 | 16990 road 797 | 1098 building 798 | 9870 road 799 | 25711 vegetation 800 | 24377 bare 801 | 7718 vegetation 802 | 9483 vegetation 803 | 4982 vegetation 804 | 13567 water 805 | 25414 road 806 | 4023 road 807 | 2747 vegetation 808 | 20744 vegetation 809 | 12910 water 810 | 21301 vegetation 811 | 12705 water 812 | 8329 road 813 | 787 water 814 | 3959 vegetation 815 | 22856 vegetation 816 | 22851 water 817 | 198 vegetation 818 | 18959 road 819 | 26958 vegetation 820 | 1331 water 821 | 10414 bare 822 | 8893 vegetation 823 | 11393 vegetation 824 | 13319 vegetation 825 | 27007 bare 826 | 20207 road 827 | 18002 road 828 | 11002 vegetation 829 | 20587 vegetation 830 | 7354 vegetation 831 | 15357 bare 832 | 16665 vegetation 833 | 19593 vegetation 834 | 19019 water 835 | 3793 vegetation 836 | 16352 vegetation 837 | 18074 water 838 | 2620 road 839 | 10396 road 840 | 8610 vegetation 841 | 8849 vegetation 842 | 20415 road 843 | 22417 road 844 | 10867 water 845 | 4242 vegetation 846 | 5516 vegetation 847 | 5198 bare 848 | 20839 water 849 | 9927 vegetation 850 | 15505 vegetation 851 | 1907 building 852 | 15488 vegetation 853 | 425 vegetation 854 | 13047 bare 855 | 1626 bare 856 | 24040 vegetation 857 | 26928 bare 858 | 1933 vegetation 859 | 11465 bare 860 | 11947 bare 861 | 619 vegetation 862 | 24304 vegetation 863 | 6859 vegetation 864 | 9372 vegetation 865 | 18810 bare 866 | 14377 bare 867 | 392 building 868 | 1975 building 869 | 26653 bare 870 | 19825 bare 871 | 2178 water 872 | 24500 bare 873 | 13647 water 874 | 9780 road 875 | 15284 water 876 | 9325 road 877 | 631 vegetation 878 | 11980 water 879 | 27083 road 880 | 21533 vegetation 881 | 2936 road 882 | 26554 vegetation 883 | 18117 vegetation 884 | 11623 water 885 | 12614 vegetation 886 | 13168 vegetation 887 | 2412 vegetation 888 | 18427 vegetation 889 | 27380 vegetation 890 | 3868 vegetation 891 | 12689 bare 892 | 4356 vegetation 893 | 3693 road 894 | 22943 road 895 | 4131 vegetation 896 | 21063 vegetation 897 | 20709 vegetation 898 | 4077 vegetation 899 | 10930 water 900 | 17919 vegetation 901 | 24161 vegetation 902 | 25236 vegetation 903 | 22807 road 904 | 7902 vegetation 905 | 15650 vegetation 906 | 28206 vegetation 907 | 16970 road 908 | 13621 vegetation 909 | 23507 vegetation 910 | 15777 water 911 | 1239 vegetation 912 | 20293 bare 913 | 22168 road 914 | 2016 road 915 | 11884 bare 916 | 20893 vegetation 917 | 10957 water 918 | 24009 vegetation 919 | 16533 vegetation 920 | 7732 vegetation 921 | 27435 vegetation 922 | 23579 bare 923 | 23438 vegetation 924 | 28241 vegetation 925 | 23852 road 926 | 25330 vegetation 927 | 6473 vegetation 928 | 14508 water 929 | 10544 road 930 | 17557 vegetation 931 | 16884 vegetation 932 | 12343 vegetation 933 | 17021 road 934 | 25701 road 935 | 7678 water 936 | 24428 vegetation 937 | 25324 water 938 | 26887 road 939 | 818 vegetation 940 | 3866 vegetation 941 | 6004 vegetation 942 | 5900 vegetation 943 | 7413 vegetation 944 | 3686 vegetation 945 | 2466 road 946 | 3322 vegetation 947 | 7685 vegetation 948 | 8054 bare 949 | 27850 vegetation 950 | 19378 road 951 | 7465 vegetation 952 | 14118 building 953 | 22215 vegetation 954 | 15680 vegetation 955 | 18160 road 956 | 16886 water 957 | 20714 vegetation 958 | 19880 water 959 | 22727 vegetation 960 | 12921 water 961 | 683 building 962 | 17993 vegetation 963 | 1809 water 964 | 16911 bare 965 | 14187 road 966 | 20588 bare 967 | 4300 vegetation 968 | 28138 water 969 | 10795 vegetation 970 | 2556 bare 971 | 1959 bare 972 | 18248 road 973 | 1759 building 974 | 5849 bare 975 | 3896 vegetation 976 | 16315 water 977 | 21046 vegetation 978 | 18240 bare 979 | 15268 vegetation 980 | 28417 vegetation 981 | 20517 vegetation 982 | 26787 bare 983 | 15304 water 984 | 6878 road 985 | 13109 bare 986 | 20597 vegetation 987 | 6199 vegetation 988 | 778 building 989 | 4947 vegetation 990 | 18252 bare 991 | 17892 vegetation 992 | 16222 road 993 | 21102 water 994 | 17324 road 995 | 21022 vegetation 996 | 4737 vegetation 997 | 3289 road 998 | 17169 bare 999 | 13330 vegetation 1000 | 11592 bare 1001 | 21193 vegetation 1002 | 18126 vegetation 1003 | 7013 bare 1004 | 14503 road 1005 | 24736 bare 1006 | 19147 water 1007 | 9179 vegetation 1008 | 6059 vegetation 1009 | 6116 road 1010 | 18155 vegetation 1011 | 18890 road 1012 | 18290 road 1013 | 14150 road 1014 | 9231 vegetation 1015 | 19292 vegetation 1016 | 18634 water 1017 | 11570 bare 1018 | 2088 bare 1019 | 5095 vegetation 1020 | 2664 vegetation 1021 | 9644 vegetation 1022 | 17111 vegetation 1023 | 27955 vegetation 1024 | 18930 vegetation 1025 | 9847 bare 1026 | 15837 road 1027 | 4918 bare 1028 | 1612 building 1029 | 13797 water 1030 | 15786 vegetation 1031 | 611 building 1032 | 28200 vegetation 1033 | 16111 vegetation 1034 | 27081 vegetation 1035 | 1294 water 1036 | 3611 vegetation 1037 | 15422 vegetation 1038 | 1836 bare 1039 | 11288 bare 1040 | 17588 water 1041 | 26148 water 1042 | 2081 water 1043 | 20050 vegetation 1044 | 4213 vegetation 1045 | 27211 vegetation 1046 | 21532 vegetation 1047 | 2998 building 1048 | 5824 vegetation 1049 | 20563 water 1050 | 18321 road 1051 | 7383 road 1052 | 5086 bare 1053 | 19982 vegetation 1054 | 24205 road 1055 | 12146 water 1056 | 12727 water 1057 | 3951 vegetation 1058 | 13450 water 1059 | 17125 vegetation 1060 | 20242 water 1061 | 15685 vegetation 1062 | 11513 water 1063 | 20082 vegetation 1064 | 22280 vegetation 1065 | 8598 vegetation 1066 | 17582 water 1067 | 823 vegetation 1068 | 6597 vegetation 1069 | 4919 vegetation 1070 | 13605 water 1071 | 26498 vegetation 1072 | 20545 vegetation 1073 | 8184 bare 1074 | 18504 vegetation 1075 | 1692 building 1076 | 15677 vegetation 1077 | 19819 vegetation 1078 | 11066 water 1079 | 11189 water 1080 | 15494 bare 1081 | 19328 road 1082 | 561 water 1083 | 23236 vegetation 1084 | 24051 vegetation 1085 | 7707 vegetation 1086 | 15602 water 1087 | 3801 vegetation 1088 | 5424 vegetation 1089 | 22004 bare 1090 | 13441 bare 1091 | 7391 water 1092 | 1165 building 1093 | 21214 vegetation 1094 | 9112 vegetation 1095 | 149 bare 1096 | 17623 road 1097 | 17233 water 1098 | 23482 bare 1099 | 25343 bare 1100 | 26646 bare 1101 | 28140 road 1102 | 25224 bare 1103 | 6694 vegetation 1104 | 2969 road 1105 | 14616 road 1106 | 15864 road 1107 | 10746 water 1108 | 23052 water 1109 | 21651 vegetation 1110 | 26939 vegetation 1111 | 8267 building 1112 | 15579 vegetation 1113 | 16394 water 1114 | 14342 water 1115 | 10070 vegetation 1116 | 12066 vegetation 1117 | 11251 water 1118 | 11596 bare 1119 | 24144 vegetation 1120 | 20150 road 1121 | 27916 vegetation 1122 | 13859 road 1123 | 23262 vegetation 1124 | 7602 vegetation 1125 | 12944 water 1126 | 21377 building 1127 | 23193 bare 1128 | 152 vegetation 1129 | 23109 vegetation 1130 | 14907 water 1131 | 8032 vegetation 1132 | 24842 vegetation 1133 | 634 building 1134 | 23606 water 1135 | 9692 bare 1136 | 3035 water 1137 | 8093 vegetation 1138 | 24407 vegetation 1139 | 21898 building 1140 | 9225 vegetation 1141 | 3821 vegetation 1142 | 10620 water 1143 | 5052 road 1144 | 20818 bare 1145 | 22898 vegetation 1146 | 1847 vegetation 1147 | 17221 water 1148 | 13374 water 1149 | 750 building 1150 | 12560 vegetation 1151 | 1263 building 1152 | 22119 water 1153 | 25294 bare 1154 | 24757 road 1155 | 9384 road 1156 | 13164 bare 1157 | 23599 bare 1158 | 8268 road 1159 | 27451 vegetation 1160 | 11094 vegetation 1161 | 2364 bare 1162 | 15776 water 1163 | 2864 vegetation 1164 | 12692 road 1165 | 4178 vegetation 1166 | 14193 water 1167 | 3094 vegetation 1168 | 19674 bare 1169 | 27500 road 1170 | 7256 vegetation 1171 | 20696 vegetation 1172 | 15391 water 1173 | 17316 road 1174 | 20081 vegetation 1175 | 10076 vegetation 1176 | 28390 vegetation 1177 | 2143 vegetation 1178 | 2127 building 1179 | 18759 vegetation 1180 | 20695 vegetation 1181 | 10918 vegetation 1182 | 19361 road 1183 | 23896 vegetation 1184 | 2477 bare 1185 | 12919 building 1186 | 3139 vegetation 1187 | 1648 water 1188 | 26841 road 1189 | 17480 vegetation 1190 | 3394 vegetation 1191 | 20304 vegetation 1192 | 15459 vegetation 1193 | 16898 water 1194 | 15181 water 1195 | 4398 vegetation 1196 | 6484 vegetation 1197 | 15032 water 1198 | 13202 bare 1199 | 7424 vegetation 1200 | 3551 vegetation 1201 | 3556 building 1202 | 249 vegetation 1203 | 19196 vegetation 1204 | 1046 vegetation 1205 | 5923 bare 1206 | 20786 bare 1207 | 1371 vegetation 1208 | 19922 vegetation 1209 | 15620 vegetation 1210 | 7816 bare 1211 | 18944 water 1212 | 3488 building 1213 | 344 vegetation 1214 | 7082 road 1215 | 11904 bare 1216 | 22811 water 1217 | 11943 road 1218 | 18032 vegetation 1219 | 27677 vegetation 1220 | 1569 bare 1221 | 19864 vegetation 1222 | 17912 water 1223 | 9140 water 1224 | 4126 vegetation 1225 | 20310 vegetation 1226 | 5091 road 1227 | 18221 bare 1228 | 5229 road 1229 | 2922 vegetation 1230 | 3478 vegetation 1231 | 6991 vegetation 1232 | 4547 road 1233 | 11937 water 1234 | 27608 building 1235 | 25475 bare 1236 | 1802 bare 1237 | 1209 road 1238 | 11509 vegetation 1239 | 24033 road 1240 | 25976 vegetation 1241 | 1785 bare 1242 | 17086 vegetation 1243 | 19071 road 1244 | 1939 building 1245 | 26495 water 1246 | 15982 bare 1247 | 16707 road 1248 | 8024 bare 1249 | 1 water 1250 | 9810 vegetation 1251 | 28281 vegetation 1252 | 4352 vegetation 1253 | 26366 bare 1254 | 18279 road 1255 | 8579 vegetation 1256 | 16971 road 1257 | 20816 vegetation 1258 | 23709 road 1259 | 19807 water 1260 | 20281 vegetation 1261 | 23853 road 1262 | 22985 vegetation 1263 | 27236 vegetation 1264 | 547 building 1265 | 3121 vegetation 1266 | 8822 vegetation 1267 | 9712 vegetation 1268 | 23492 bare 1269 | 27131 road 1270 | 1559 building 1271 | 17515 road 1272 | 3507 vegetation 1273 | 12177 bare 1274 | 20712 vegetation 1275 | 7636 vegetation 1276 | 6625 vegetation 1277 | 20774 bare 1278 | 18491 vegetation 1279 | 9304 road 1280 | 11688 bare 1281 | 1798 water 1282 | 22414 bare 1283 | 16944 water 1284 | 26947 vegetation 1285 | 23114 vegetation 1286 | 3380 vegetation 1287 | 9475 road 1288 | 1142 water 1289 | 21793 bare 1290 | 19934 water 1291 | 17302 bare 1292 | 14558 water 1293 | 4441 vegetation 1294 | 19572 water 1295 | 23917 vegetation 1296 | 21715 water 1297 | 14442 water 1298 | 3915 bare 1299 | 1977 bare 1300 | 27171 road 1301 | 27866 road 1302 | 9828 bare 1303 | 13034 water 1304 | 7583 vegetation 1305 | 1173 building 1306 | 23638 bare 1307 | 4814 vegetation 1308 | 24392 vegetation 1309 | 838 building 1310 | 1313 building 1311 | 15518 vegetation 1312 | 10020 bare 1313 | 10172 road 1314 | 3355 road 1315 | 17571 vegetation 1316 | 19648 vegetation 1317 | 25131 road 1318 | 19962 road 1319 | 8693 vegetation 1320 | 21654 vegetation 1321 | 9329 vegetation 1322 | 5626 vegetation 1323 | 5826 vegetation 1324 | 16053 vegetation 1325 | 14332 water 1326 | 9963 vegetation 1327 | 23958 road 1328 | 1669 road 1329 | 18044 road 1330 | 20377 vegetation 1331 | 13764 bare 1332 | 5123 vegetation 1333 | 1283 vegetation 1334 | 17426 water 1335 | 17101 water 1336 | 260 vegetation 1337 | 8912 road 1338 | 27248 vegetation 1339 | 11619 water 1340 | 14949 road 1341 | 10072 vegetation 1342 | 4813 road 1343 | 10278 vegetation 1344 | 28012 bare 1345 | 1075 building 1346 | 3171 road 1347 | 17495 vegetation 1348 | 831 vegetation 1349 | 9514 bare 1350 | 14272 vegetation 1351 | 4723 road 1352 | 16459 road 1353 | 24651 bare 1354 | 19796 vegetation 1355 | 2914 road 1356 | 9072 vegetation 1357 | 11775 water 1358 | 2063 road 1359 | 9560 vegetation 1360 | 23990 bare 1361 | 7696 water 1362 | 21884 vegetation 1363 | 28118 vegetation 1364 | 25727 building 1365 | 14865 water 1366 | 17335 road 1367 | 22612 water 1368 | 14951 road 1369 | 26585 vegetation 1370 | 12828 bare 1371 | 20565 road 1372 | 14467 vegetation 1373 | 2941 vegetation 1374 | 18977 vegetation 1375 | 16732 vegetation 1376 | 7738 vegetation 1377 | 17091 vegetation 1378 | 26813 water 1379 | 25276 road 1380 | 24089 water 1381 | 1401 building 1382 | 15958 water 1383 | 25979 bare 1384 | 4512 vegetation 1385 | 1899 vegetation 1386 | 24404 vegetation 1387 | 22585 bare 1388 | 17182 road 1389 | 16025 water 1390 | 7140 vegetation 1391 | 14742 bare 1392 | 25947 water 1393 | 13287 bare 1394 | 22194 bare 1395 | 23299 vegetation 1396 | 1850 vegetation 1397 | 516 vegetation 1398 | 23678 road 1399 | 3514 vegetation 1400 | 27037 vegetation 1401 | 6250 vegetation 1402 | 4910 road 1403 | 14962 vegetation 1404 | 25910 bare 1405 | 1267 building 1406 | 19288 vegetation 1407 | 18903 vegetation 1408 | 22123 water 1409 | 22979 vegetation 1410 | 85 building 1411 | 339 building 1412 | 24438 vegetation 1413 | 15702 road 1414 | 11067 vegetation 1415 | 19192 vegetation 1416 | 25493 bare 1417 | 2840 vegetation 1418 | 4690 vegetation 1419 | 27526 vegetation 1420 | 17325 vegetation 1421 | 28194 vegetation 1422 | 181 vegetation 1423 | 1830 bare 1424 | 2489 vegetation 1425 | 17419 road 1426 | 19436 water 1427 | 8592 vegetation 1428 | 6554 vegetation 1429 | 7748 bare 1430 | 4427 bare 1431 | 16753 water 1432 | 26444 bare 1433 | 14495 road 1434 | 22140 vegetation 1435 | 7667 vegetation 1436 | 27951 bare 1437 | 11457 vegetation 1438 | 1307 building 1439 | 5755 vegetation 1440 | 24686 vegetation 1441 | 15703 vegetation 1442 | 26207 vegetation 1443 | 22895 water 1444 | 17481 water 1445 | 7615 vegetation 1446 | 8232 building 1447 | 17214 road 1448 | 5758 bare 1449 | 12908 bare 1450 | 5864 vegetation 1451 | 9632 vegetation 1452 | 13220 vegetation 1453 | 22770 vegetation 1454 | 27545 vegetation 1455 | 14529 bare 1456 | 14356 vegetation 1457 | 13777 water 1458 | 4742 vegetation 1459 | 19516 water 1460 | 19258 road 1461 | 17212 water 1462 | 11786 vegetation 1463 | 7366 vegetation 1464 | 14562 vegetation 1465 | 5455 building 1466 | 19373 vegetation 1467 | 21473 vegetation 1468 | 17734 water 1469 | 16152 vegetation 1470 | 12359 water 1471 | 12563 vegetation 1472 | 19768 vegetation 1473 | 18655 road 1474 | 18461 vegetation 1475 | 26563 vegetation 1476 | 17630 bare 1477 | 15361 water 1478 | 5361 vegetation 1479 | 13409 vegetation 1480 | 10663 water 1481 | 17394 vegetation 1482 | 3100 vegetation 1483 | 24599 bare 1484 | 25588 vegetation 1485 | 579 building 1486 | 3442 bare 1487 | 23689 vegetation 1488 | 7328 vegetation 1489 | 26327 vegetation 1490 | 19140 road 1491 | 20658 vegetation 1492 | 7143 bare 1493 | 9393 road 1494 | 20019 road 1495 | 11467 water 1496 | 27805 vegetation 1497 | 22493 bare 1498 | 10613 bare 1499 | 573 vegetation 1500 | 23370 bare 1501 | 22295 bare 1502 | 28322 road 1503 | 4255 road 1504 | 2608 vegetation 1505 | 602 water 1506 | 15409 vegetation 1507 | 3623 building 1508 | 25398 vegetation 1509 | 11813 vegetation 1510 | 10509 bare 1511 | 19753 vegetation 1512 | 5914 bare 1513 | 23026 vegetation 1514 | 15900 bare 1515 | 17060 road 1516 | 26992 vegetation 1517 | 16763 vegetation 1518 | 13748 water 1519 | 22991 water 1520 | 3536 road -------------------------------------------------------------------------------- /data/fj/test.txt: -------------------------------------------------------------------------------- 1 | 73948 grass 2 | 53241 woodland 3 | 37491 woodland 4 | 52240 woodland 5 | 2071 farmland 6 | 82428 bareland 7 | 20439 garden 8 | 20524 garden 9 | 30760 garden 10 | 9969 garden 11 | 51412 woodland 12 | 68504 grass 13 | 10660 garden 14 | 52967 woodland 15 | 10266 garden 16 | 51729 woodland 17 | 41997 woodland 18 | 37397 woodland 19 | 10016 garden 20 | 41754 woodland 21 | 59635 woodland 22 | 68303 grass 23 | 51503 woodland 24 | 83145 bareland 25 | 76908 building 26 | 51676 woodland 27 | 52207 woodland 28 | 51765 woodland 29 | 6522 farmland 30 | 51615 woodland 31 | 20383 garden 32 | 52106 woodland 33 | 76800 building 34 | 41968 woodland 35 | 52624 woodland 36 | 83149 bareland 37 | 5416 farmland 38 | 20592 garden 39 | 31786 woodland 40 | 51348 woodland 41 | 20600 garden 42 | 73873 grass 43 | 83146 bareland 44 | 68459 grass 45 | 10422 garden 46 | 68599 grass 47 | 51651 woodland 48 | 59683 woodland 49 | 37768 woodland 50 | 51840 woodland 51 | 20726 garden 52 | 82522 bareland 53 | 51517 woodland 54 | 82427 bareland 55 | 44566 woodland 56 | 1778 farmland 57 | 76796 building 58 | 52740 woodland 59 | 83151 bareland 60 | 78744 building 61 | 51533 woodland 62 | 37369 woodland 63 | 68169 grass 64 | 37412 woodland 65 | 51411 woodland 66 | 10211 garden 67 | 1692 farmland 68 | 59633 woodland 69 | 10099 garden 70 | 17078 garden 71 | 9999 garden 72 | 82430 bareland 73 | 59718 woodland 74 | 68401 grass 75 | 63566 woodland 76 | 33995 woodland 77 | 10234 garden 78 | 68669 grass 79 | 41920 woodland 80 | 68367 grass 81 | 81170 artifact 82 | 62240 woodland 83 | 59662 woodland 84 | 79792 building 85 | 31970 woodland 86 | 34081 woodland 87 | 52126 woodland 88 | 10339 garden 89 | 59894 woodland 90 | 41797 woodland 91 | 29451 garden 92 | 29406 garden 93 | 20585 garden 94 | 10253 garden 95 | 31954 woodland 96 | 76804 building 97 | 20405 garden 98 | 52141 woodland 99 | 82429 bareland 100 | 51898 woodland 101 | 68394 grass 102 | 29414 garden 103 | 51935 woodland 104 | 10248 garden 105 | 33984 woodland 106 | 67987 grass 107 | 10007 garden 108 | 59636 woodland 109 | 29435 garden 110 | 10391 garden 111 | 10687 garden 112 | 82216 artifact 113 | 9964 garden 114 | 79839 building 115 | 10114 garden 116 | 10182 garden 117 | 46346 woodland 118 | 63159 woodland 119 | 81042 building 120 | 63574 woodland 121 | 17055 garden 122 | 1775 farmland 123 | 10916 garden 124 | 83147 bareland 125 | 1720 farmland 126 | 51505 woodland 127 | 82424 bareland 128 | 59646 woodland 129 | 37926 woodland 130 | 10822 garden 131 | 82642 bareland 132 | 10275 garden 133 | 10758 garden 134 | 41763 woodland 135 | 29490 garden 136 | 32077 woodland 137 | 51445 woodland 138 | 67964 grass 139 | 1758 farmland 140 | 68041 grass 141 | 74072 grass 142 | 81191 artifact 143 | 76797 building 144 | 37697 woodland 145 | 53064 woodland 146 | 37385 woodland 147 | 59632 woodland 148 | 31923 woodland 149 | 52218 woodland 150 | 68512 grass 151 | 52674 woodland 152 | 76799 building 153 | 10158 garden 154 | 67976 grass 155 | 52215 woodland 156 | 34084 woodland 157 | 51408 woodland 158 | 51590 woodland 159 | 82433 bareland 160 | 82423 bareland 161 | 10240 garden 162 | 59821 woodland 163 | 17060 garden 164 | 68586 grass 165 | 33986 woodland 166 | 10078 garden 167 | 29442 garden 168 | 74141 grass 169 | 37461 woodland 170 | 10048 garden 171 | 20717 garden 172 | 83392 waters 173 | 15940 garden 174 | 37524 woodland 175 | 75220 grass 176 | 68406 grass 177 | 52688 woodland 178 | 9961 garden 179 | 2084 farmland 180 | 20393 garden 181 | 83400 waters 182 | 82520 bareland 183 | 68305 grass 184 | 82425 bareland 185 | 52944 woodland 186 | 68178 grass 187 | 74002 grass 188 | 29553 garden 189 | 20667 garden 190 | 52829 woodland 191 | 10069 garden 192 | 51887 woodland 193 | 34088 woodland 194 | 73944 grass 195 | 51417 woodland 196 | 9994 garden 197 | 73923 grass 198 | 68578 grass 199 | 20422 garden 200 | 33997 woodland 201 | 33989 woodland 202 | 1813 farmland 203 | 1691 farmland 204 | 9923 garden 205 | 10693 garden 206 | 59661 woodland 207 | 10366 garden 208 | 63154 woodland 209 | 33998 woodland 210 | 37315 woodland 211 | 59815 woodland 212 | 5042 farmland 213 | 67943 grass 214 | 9921 garden 215 | 79841 building 216 | 51946 woodland 217 | 68102 grass 218 | 5129 farmland 219 | 20620 garden 220 | 76845 building 221 | 52662 woodland 222 | 10565 garden 223 | 52920 woodland 224 | 68152 grass 225 | 53017 woodland 226 | 10039 garden 227 | 6527 farmland 228 | 10917 garden 229 | 17053 garden 230 | 51741 woodland 231 | 59639 woodland 232 | 51771 woodland 233 | 52745 woodland 234 | 10969 garden 235 | 21030 garden 236 | 10316 garden 237 | 32014 woodland 238 | 41709 woodland 239 | 31795 woodland 240 | 51996 woodland 241 | 59645 woodland 242 | 9927 garden 243 | 79750 building 244 | 10196 garden 245 | 75221 grass 246 | 41942 woodland 247 | 1731 farmland 248 | 81652 artifact 249 | 20826 garden 250 | 10769 garden 251 | 79710 building 252 | 2046 farmland 253 | 52780 woodland 254 | 10447 garden 255 | 79826 building 256 | 52288 woodland 257 | 73897 grass 258 | 59640 woodland 259 | 1717 farmland 260 | 10187 garden 261 | 46395 woodland 262 | 59634 woodland 263 | 44596 woodland 264 | 83034 bareland 265 | 31958 woodland 266 | 31803 woodland 267 | 1728 farmland 268 | 82173 artifact 269 | 20589 garden 270 | 52194 woodland 271 | 37941 woodland 272 | 10093 garden 273 | 1713 farmland 274 | 74074 grass 275 | 68084 grass 276 | 53151 woodland 277 | 31848 woodland 278 | 53248 woodland 279 | 59676 woodland 280 | 51394 woodland 281 | 52182 woodland 282 | 81651 artifact 283 | 74073 grass 284 | 51877 woodland 285 | 15821 garden 286 | 76977 building 287 | 52877 woodland 288 | 5438 farmland 289 | 51775 woodland 290 | 51552 woodland 291 | 10807 garden 292 | 61393 woodland 293 | 68735 grass 294 | 74067 grass 295 | 10014 garden 296 | 79875 building 297 | 52879 woodland 298 | 32010 woodland 299 | 52600 woodland 300 | 10057 garden 301 | 81159 artifact 302 | 59706 woodland 303 | 68040 grass 304 | 1765 farmland 305 | 9975 garden 306 | 34122 woodland 307 | 83401 waters 308 | 83037 bareland 309 | 52368 woodland 310 | 34823 woodland 311 | 68030 grass 312 | 33992 woodland 313 | 17061 garden 314 | 83396 waters 315 | 59644 woodland 316 | 51484 woodland 317 | 20606 garden 318 | 37432 woodland 319 | 37350 woodland 320 | 31815 woodland 321 | 59685 woodland 322 | 46736 woodland 323 | 9951 garden 324 | 67973 grass 325 | 10550 garden 326 | 10617 garden 327 | 37336 woodland 328 | 52931 woodland 329 | 20596 garden 330 | 31799 woodland 331 | 10309 garden 332 | 10845 garden 333 | 31866 woodland 334 | 76853 building 335 | 59713 woodland 336 | 10096 garden 337 | 59756 woodland 338 | 32082 woodland 339 | 1736 farmland 340 | 9922 garden 341 | 10204 garden 342 | 10694 garden 343 | 83782 waters 344 | 31960 woodland -------------------------------------------------------------------------------- /data/fj/train.txt: -------------------------------------------------------------------------------- 1 | 37425 woodland 2 | 29439 garden 3 | 10049 garden 4 | 10544 garden 5 | 52118 woodland 6 | 30904 garden 7 | 10648 garden 8 | 52007 woodland 9 | 10238 garden 10 | 31811 woodland 11 | 53156 woodland 12 | 44682 woodland 13 | 37727 woodland 14 | 51410 woodland 15 | 21948 garden 16 | 62238 woodland 17 | 52937 woodland 18 | 10059 garden 19 | 51364 woodland 20 | 37635 woodland 21 | 62243 woodland 22 | 10947 garden 23 | 10077 garden 24 | 37821 woodland 25 | 68175 grass 26 | 31888 woodland 27 | 34029 woodland 28 | 43182 woodland 29 | 52080 woodland 30 | 51492 woodland 31 | 10829 garden 32 | 33996 woodland 33 | 10903 garden 34 | 10652 garden 35 | 52664 woodland 36 | 1764 farmland 37 | 83153 bareland 38 | 52690 woodland 39 | 1684 farmland 40 | 10853 garden 41 | 41814 woodland 42 | 10004 garden 43 | 10097 garden 44 | 73872 grass 45 | 68043 grass 46 | 9965 garden 47 | 52294 woodland 48 | 15758 garden 49 | 10666 garden 50 | 9919 garden 51 | 33988 woodland 52 | 63563 woodland 53 | 53379 woodland 54 | 31805 woodland 55 | 51500 woodland 56 | 79824 building 57 | 51705 woodland 58 | 32171 woodland 59 | 37388 woodland 60 | 10448 garden 61 | 51634 woodland 62 | 9981 garden 63 | 32035 woodland 64 | 10372 garden 65 | 59873 woodland 66 | 76809 building 67 | 10726 garden 68 | 51984 woodland 69 | 10561 garden 70 | 10054 garden 71 | 29449 garden 72 | 52590 woodland 73 | 20771 garden 74 | 37793 woodland 75 | 53355 woodland 76 | 76966 building 77 | 10109 garden 78 | 10237 garden 79 | 10045 garden 80 | 1774 farmland 81 | 51717 woodland 82 | 83154 bareland 83 | 37415 woodland 84 | 82422 bareland 85 | 81660 artifact 86 | 31952 woodland 87 | 15781 garden 88 | 83150 bareland 89 | 2088 farmland 90 | 31784 woodland 91 | 32046 woodland 92 | 68185 grass 93 | 51740 woodland 94 | 20523 garden 95 | 59716 woodland 96 | 68579 grass 97 | 31893 woodland 98 | 9930 garden 99 | 1690 farmland 100 | 76949 building 101 | 10321 garden 102 | 52595 woodland 103 | 5769 farmland 104 | 51910 woodland 105 | 10827 garden 106 | 63162 woodland 107 | 67978 grass 108 | 44570 woodland 109 | 31965 woodland 110 | 21333 garden 111 | 9960 garden 112 | 9986 garden 113 | 10227 garden 114 | 46368 woodland 115 | 15998 garden 116 | 52412 woodland 117 | 31843 woodland 118 | 1822 farmland 119 | 10743 garden 120 | 52256 woodland 121 | 68044 grass 122 | 32108 woodland 123 | 20671 garden 124 | 52814 woodland 125 | 76940 building 126 | 1725 farmland 127 | 1746 farmland 128 | 10897 garden 129 | 34035 woodland 130 | 37473 woodland 131 | 68643 grass 132 | 76884 building 133 | 51569 woodland 134 | 82437 bareland 135 | 37825 woodland 136 | 76817 building 137 | 33993 woodland 138 | 37442 woodland 139 | 52291 woodland 140 | 41732 woodland 141 | 51460 woodland 142 | 76791 building 143 | 21310 garden 144 | 52757 woodland 145 | 10850 garden 146 | 31779 woodland 147 | 52632 woodland 148 | 32075 woodland 149 | 68502 grass 150 | 37880 woodland 151 | 68251 grass 152 | 83152 bareland 153 | 59709 woodland 154 | 9977 garden 155 | 52166 woodland 156 | 76955 building 157 | 59686 woodland 158 | 67989 grass 159 | 51459 woodland 160 | 10088 garden 161 | 51435 woodland 162 | 20420 garden 163 | 52493 woodland 164 | 51674 woodland 165 | 9988 garden 166 | 21930 garden 167 | 37321 woodland 168 | 68212 grass 169 | 10060 garden 170 | 68553 grass 171 | 52972 woodland 172 | 10645 garden 173 | 33979 woodland 174 | 81881 artifact 175 | 52918 woodland 176 | 42943 woodland 177 | 10642 garden 178 | 1715 farmland 179 | 37295 woodland 180 | 37811 woodland 181 | 52274 woodland 182 | 52909 woodland 183 | 29539 garden 184 | 20721 garden 185 | 20401 garden 186 | 52769 woodland 187 | 31946 woodland 188 | 59870 woodland 189 | 17079 garden 190 | 83394 waters 191 | 52720 woodland 192 | 20330 garden 193 | 29411 garden 194 | 59705 woodland 195 | 34819 woodland 196 | 31794 woodland 197 | 20543 garden 198 | 79788 building 199 | 1710 farmland 200 | 51382 woodland 201 | 15898 garden 202 | 74057 grass 203 | 73870 grass 204 | 33980 woodland 205 | 73918 grass 206 | 76945 building 207 | 76802 building 208 | 37298 woodland 209 | 63564 woodland 210 | 31980 woodland 211 | 83408 waters 212 | 31808 woodland 213 | 1889 farmland 214 | 34818 woodland 215 | 10287 garden 216 | 59749 woodland 217 | 68181 grass 218 | 44580 woodland 219 | 63565 woodland 220 | 79719 building 221 | 51769 woodland 222 | 44506 woodland 223 | 10201 garden 224 | 15761 garden 225 | 31801 woodland 226 | 31781 woodland 227 | 5791 farmland 228 | 63538 woodland 229 | 1707 farmland 230 | 79712 building 231 | 31947 woodland 232 | 34016 woodland 233 | 52089 woodland 234 | 83985 farmland 235 | 1992 farmland 236 | 79748 building 237 | 76812 building 238 | 52337 woodland 239 | 37820 woodland 240 | 9989 garden 241 | 15979 garden 242 | 83421 waters 243 | 1699 farmland 244 | 37535 woodland 245 | 76948 building 246 | 10449 garden 247 | 73925 grass 248 | 37749 woodland 249 | 10510 garden 250 | 37829 woodland 251 | 20460 garden 252 | 31974 woodland 253 | 52752 woodland 254 | 21370 garden 255 | 41775 woodland 256 | 9980 garden 257 | 59642 woodland 258 | 34072 woodland 259 | 10145 garden 260 | 31920 woodland 261 | 32094 woodland 262 | 68312 grass 263 | 10229 garden 264 | 84043 artifact 265 | 31785 woodland 266 | 33982 woodland 267 | 52749 woodland 268 | 10188 garden 269 | 51525 woodland 270 | 37798 woodland 271 | 17056 garden 272 | 10575 garden 273 | 51725 woodland 274 | 81161 artifact 275 | 79738 building 276 | 10576 garden 277 | 52593 woodland 278 | 52186 woodland 279 | 10063 garden 280 | 83783 waters 281 | 10311 garden 282 | 29405 garden 283 | 20591 garden 284 | 34817 woodland 285 | 1836 farmland 286 | 10183 garden 287 | 83148 bareland 288 | 52897 woodland 289 | 52574 woodland 290 | 10175 garden 291 | 10888 garden 292 | 32007 woodland 293 | 10532 garden 294 | 53521 woodland 295 | 10116 garden 296 | 20472 garden 297 | 52862 woodland 298 | 79846 building 299 | 63155 woodland 300 | 10094 garden 301 | 33981 woodland 302 | 52333 woodland 303 | 67945 grass 304 | 76952 building 305 | 52995 woodland 306 | 74097 grass 307 | 52068 woodland 308 | 20434 garden 309 | 2112 farmland 310 | 20465 garden 311 | 37402 woodland 312 | 51362 woodland 313 | 37405 woodland 314 | 31857 woodland 315 | 82790 bareland 316 | 32017 woodland 317 | 52654 woodland 318 | 29458 garden 319 | 1953 farmland 320 | 10647 garden 321 | 51355 woodland 322 | 33985 woodland 323 | 81653 artifact 324 | 32139 woodland 325 | 10205 garden 326 | 10880 garden 327 | 10219 garden 328 | 44527 woodland 329 | 37678 woodland 330 | 79747 building 331 | 83035 bareland 332 | 82431 bareland 333 | 82432 bareland 334 | 37456 woodland 335 | 68597 grass 336 | 20385 garden 337 | 73903 grass 338 | 51688 woodland 339 | 10224 garden 340 | 63535 woodland 341 | 9955 garden 342 | 73941 grass 343 | 15762 garden 344 | 68116 grass 345 | 31876 woodland -------------------------------------------------------------------------------- /data/fj/val.txt: -------------------------------------------------------------------------------- 1 | 51538 woodland 2 | 10003 garden 3 | 68009 grass 4 | 82056 artifact 5 | 34025 woodland 6 | 37445 woodland 7 | 15996 garden 8 | 1739 farmland 9 | 51673 woodland 10 | 68554 grass 11 | 52385 woodland 12 | 1880 farmland 13 | 68097 grass 14 | 10439 garden 15 | 53270 woodland 16 | 32168 woodland 17 | 83389 waters 18 | 51838 woodland 19 | 44534 woodland 20 | 10272 garden 21 | 76965 building 22 | 51711 woodland 23 | 41813 woodland 24 | 10495 garden 25 | 52579 woodland 26 | 59861 woodland 27 | 59826 woodland 28 | 68122 grass 29 | 83155 bareland 30 | 20777 garden 31 | 10037 garden 32 | 1920 farmland 33 | 83385 waters 34 | 51668 woodland 35 | 46298 woodland 36 | 10250 garden 37 | 82426 bareland 38 | 52775 woodland 39 | 20619 garden 40 | 31999 woodland 41 | 68550 grass 42 | 10836 garden 43 | 20400 garden 44 | 31812 woodland 45 | 10084 garden 46 | 76803 building 47 | 74060 grass 48 | 52277 woodland 49 | 59637 woodland 50 | 15999 garden 51 | 74091 grass 52 | 5102 farmland 53 | 32018 woodland 54 | 2094 farmland 55 | 10255 garden 56 | 67970 grass 57 | 1693 farmland 58 | 29423 garden 59 | 79709 building 60 | 1688 farmland 61 | 37443 woodland 62 | 5762 farmland 63 | 20773 garden 64 | 10685 garden 65 | 51646 woodland 66 | 1791 farmland 67 | 51926 woodland 68 | 21503 garden 69 | 34815 woodland 70 | 6524 farmland 71 | 81351 artifact 72 | 37758 woodland 73 | 9954 garden 74 | 52705 woodland 75 | 51356 woodland 76 | 32087 woodland 77 | 79756 building 78 | 52699 woodland 79 | 51528 woodland 80 | 15936 garden 81 | 20514 garden 82 | 20550 garden 83 | 76970 building 84 | 41783 woodland 85 | 68149 grass 86 | 20755 garden 87 | 52815 woodland 88 | 41779 woodland 89 | 46437 woodland 90 | 51855 woodland 91 | 10213 garden 92 | 51650 woodland 93 | 68492 grass 94 | 41715 woodland 95 | 75222 grass 96 | 68139 grass 97 | 79823 building 98 | 17077 garden 99 | 34012 woodland 100 | 2070 farmland 101 | 52060 woodland 102 | 10197 garden 103 | 51994 woodland 104 | 79807 building 105 | 52129 woodland 106 | 37495 woodland 107 | 63107 woodland 108 | 68219 grass 109 | 10041 garden 110 | 68138 grass 111 | 52471 woodland 112 | 51566 woodland 113 | 37297 woodland 114 | 62124 woodland 115 | 37806 woodland 116 | 51819 woodland 117 | 1729 farmland 118 | 31882 woodland 119 | 52230 woodland 120 | 10871 garden 121 | 15787 garden 122 | 1724 farmland 123 | 1872 farmland 124 | 81160 artifact 125 | 67996 grass 126 | 67967 grass 127 | 79794 building 128 | 63519 woodland 129 | 83160 bareland 130 | 37866 woodland 131 | 52343 woodland 132 | 10424 garden 133 | 1817 farmland 134 | 44553 woodland 135 | 68183 grass 136 | 52234 woodland 137 | 10379 garden 138 | 37283 woodland 139 | 41735 woodland 140 | 83382 waters 141 | 10221 garden 142 | 20638 garden 143 | 37814 woodland 144 | 21400 garden 145 | 51652 woodland 146 | 52875 woodland 147 | 76934 building 148 | 15867 garden 149 | 52279 woodland 150 | 37430 woodland 151 | 52973 woodland 152 | 51873 woodland 153 | 59689 woodland 154 | 9990 garden 155 | 74136 grass 156 | 29397 garden 157 | 68058 grass 158 | 10528 garden 159 | 63100 woodland 160 | 31796 woodland 161 | 10455 garden 162 | 59704 woodland 163 | 52672 woodland 164 | 76801 building 165 | 80896 building 166 | 51899 woodland 167 | 59818 woodland 168 | 82055 artifact 169 | 51751 woodland 170 | 73938 grass 171 | 2093 farmland 172 | 5760 farmland 173 | 51441 woodland 174 | 9991 garden 175 | 51471 woodland 176 | 34056 woodland 177 | 10036 garden 178 | 31985 woodland 179 | 82791 bareland 180 | 51415 woodland 181 | 59788 woodland 182 | 10925 garden 183 | 37312 woodland 184 | 1743 farmland 185 | 63098 woodland 186 | 79773 building 187 | 51512 woodland 188 | 29440 garden 189 | 37516 woodland 190 | 73893 grass 191 | 79708 building 192 | 10017 garden 193 | 5122 farmland 194 | 31834 woodland 195 | 73877 grass 196 | 2058 farmland 197 | 52657 woodland 198 | 1708 farmland 199 | 10030 garden 200 | 10346 garden 201 | 30903 garden 202 | 52210 woodland 203 | 68028 grass 204 | 21128 garden 205 | 34064 woodland 206 | 76788 building 207 | 74111 grass 208 | 10134 garden 209 | 52390 woodland 210 | 10019 garden 211 | 61510 woodland 212 | 53095 woodland 213 | 20693 garden 214 | 51756 woodland 215 | 68033 grass 216 | 15763 garden 217 | 10696 garden 218 | 46328 woodland 219 | 63094 woodland 220 | 10121 garden 221 | 15774 garden 222 | 10151 garden 223 | 82134 artifact 224 | 68151 grass 225 | 37666 woodland 226 | 15878 garden 227 | 59631 woodland 228 | 59630 woodland 229 | 63111 woodland 230 | 74124 grass 231 | 10461 garden 232 | 82434 bareland 233 | 52876 woodland 234 | 51720 woodland 235 | 10231 garden 236 | 82519 bareland 237 | 79755 building 238 | 15956 garden 239 | 74071 grass 240 | 31865 woodland 241 | 10716 garden 242 | 52432 woodland 243 | 51531 woodland 244 | 10243 garden 245 | 68260 grass 246 | 51697 woodland 247 | 31788 woodland 248 | 68008 grass 249 | 83391 waters 250 | 52675 woodland 251 | 29453 garden 252 | 37870 woodland 253 | 10028 garden 254 | 79714 building 255 | 20449 garden 256 | 37846 woodland 257 | 51518 woodland 258 | 41706 woodland 259 | 59717 woodland 260 | 37436 woodland 261 | 37638 woodland 262 | 2095 farmland 263 | 44572 woodland 264 | 9992 garden 265 | 74078 grass 266 | 76849 building 267 | 17052 garden 268 | 32021 woodland 269 | 73867 grass 270 | 41739 woodland 271 | 10707 garden 272 | 34003 woodland 273 | 67961 grass 274 | 32005 woodland 275 | 51369 woodland 276 | 63124 woodland 277 | 9953 garden 278 | 10222 garden 279 | 51704 woodland 280 | 79717 building 281 | 31792 woodland 282 | 51788 woodland 283 | 73933 grass 284 | 32227 woodland 285 | 75223 grass 286 | 68095 grass 287 | 20427 garden 288 | 52900 woodland 289 | 37556 woodland 290 | 10044 garden 291 | 83157 bareland 292 | 41698 woodland 293 | 15772 garden 294 | 37301 woodland 295 | 10328 garden 296 | 44712 woodland 297 | 32115 woodland 298 | 52134 woodland 299 | 10106 garden 300 | 15782 garden 301 | 51501 woodland 302 | 20448 garden 303 | 51770 woodland 304 | 83393 waters 305 | 74059 grass 306 | 1767 farmland 307 | 10500 garden 308 | 63521 woodland 309 | 15990 garden 310 | 79789 building 311 | 41805 woodland 312 | 41725 woodland 313 | 52290 woodland 314 | 34011 woodland 315 | 76954 building 316 | 73894 grass 317 | 34077 woodland 318 | 10742 garden 319 | 20332 garden 320 | 68409 grass 321 | 20658 garden 322 | 2072 farmland 323 | 1980 farmland 324 | 52919 woodland 325 | 20556 garden 326 | 52943 woodland 327 | 59643 woodland 328 | 83419 waters 329 | 68136 grass 330 | 51427 woodland 331 | 51713 woodland 332 | 31789 woodland 333 | 84052 artifact 334 | 52716 woodland 335 | 79842 building 336 | 37324 woodland 337 | 52216 woodland 338 | 52213 woodland 339 | 29438 garden 340 | 1869 farmland 341 | 68417 grass 342 | 34007 woodland 343 | 51931 woodland 344 | 68220 grass 345 | 73900 grass -------------------------------------------------------------------------------- /docs/ah_dataset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/docs/ah_dataset.png -------------------------------------------------------------------------------- /docs/fj_dataset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/docs/fj_dataset.png -------------------------------------------------------------------------------- /docs/inner.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/docs/inner.PNG -------------------------------------------------------------------------------- /docs/obic-procedure.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/docs/obic-procedure.PNG -------------------------------------------------------------------------------- /docs/outer.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/docs/outer.PNG -------------------------------------------------------------------------------- /docs/tSVD-dimension.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/docs/tSVD-dimension.PNG -------------------------------------------------------------------------------- /gcn/__pycache__/inits.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/gcn/__pycache__/inits.cpython-37.pyc -------------------------------------------------------------------------------- /gcn/__pycache__/layers.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/gcn/__pycache__/layers.cpython-37.pyc -------------------------------------------------------------------------------- /gcn/__pycache__/metrics.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/gcn/__pycache__/metrics.cpython-37.pyc -------------------------------------------------------------------------------- /gcn/__pycache__/models.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/gcn/__pycache__/models.cpython-37.pyc -------------------------------------------------------------------------------- /gcn/__pycache__/utils.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/gcn/__pycache__/utils.cpython-37.pyc -------------------------------------------------------------------------------- /gcn/data/ind.citeseer.allx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/gcn/data/ind.citeseer.allx -------------------------------------------------------------------------------- /gcn/data/ind.citeseer.ally: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/gcn/data/ind.citeseer.ally -------------------------------------------------------------------------------- /gcn/data/ind.citeseer.graph: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/gcn/data/ind.citeseer.graph -------------------------------------------------------------------------------- /gcn/data/ind.citeseer.test.index: -------------------------------------------------------------------------------- 1 | 2488 2 | 2644 3 | 3261 4 | 2804 5 | 3176 6 | 2432 7 | 3310 8 | 2410 9 | 2812 10 | 2520 11 | 2994 12 | 3282 13 | 2680 14 | 2848 15 | 2670 16 | 3005 17 | 2977 18 | 2592 19 | 2967 20 | 2461 21 | 3184 22 | 2852 23 | 2768 24 | 2905 25 | 2851 26 | 3129 27 | 3164 28 | 2438 29 | 2793 30 | 2763 31 | 2528 32 | 2954 33 | 2347 34 | 2640 35 | 3265 36 | 2874 37 | 2446 38 | 2856 39 | 3149 40 | 2374 41 | 3097 42 | 3301 43 | 2664 44 | 2418 45 | 2655 46 | 2464 47 | 2596 48 | 3262 49 | 3278 50 | 2320 51 | 2612 52 | 2614 53 | 2550 54 | 2626 55 | 2772 56 | 3007 57 | 2733 58 | 2516 59 | 2476 60 | 2798 61 | 2561 62 | 2839 63 | 2685 64 | 2391 65 | 2705 66 | 3098 67 | 2754 68 | 3251 69 | 2767 70 | 2630 71 | 2727 72 | 2513 73 | 2701 74 | 3264 75 | 2792 76 | 2821 77 | 3260 78 | 2462 79 | 3307 80 | 2639 81 | 2900 82 | 3060 83 | 2672 84 | 3116 85 | 2731 86 | 3316 87 | 2386 88 | 2425 89 | 2518 90 | 3151 91 | 2586 92 | 2797 93 | 2479 94 | 3117 95 | 2580 96 | 3182 97 | 2459 98 | 2508 99 | 3052 100 | 3230 101 | 3215 102 | 2803 103 | 2969 104 | 2562 105 | 2398 106 | 3325 107 | 2343 108 | 3030 109 | 2414 110 | 2776 111 | 2383 112 | 3173 113 | 2850 114 | 2499 115 | 3312 116 | 2648 117 | 2784 118 | 2898 119 | 3056 120 | 2484 121 | 3179 122 | 3132 123 | 2577 124 | 2563 125 | 2867 126 | 3317 127 | 2355 128 | 3207 129 | 3178 130 | 2968 131 | 3319 132 | 2358 133 | 2764 134 | 3001 135 | 2683 136 | 3271 137 | 2321 138 | 2567 139 | 2502 140 | 3246 141 | 2715 142 | 3066 143 | 2390 144 | 2381 145 | 3162 146 | 2741 147 | 2498 148 | 2790 149 | 3038 150 | 3321 151 | 2481 152 | 3050 153 | 3161 154 | 3122 155 | 2801 156 | 2957 157 | 3177 158 | 2965 159 | 2621 160 | 3208 161 | 2921 162 | 2802 163 | 2357 164 | 2677 165 | 2519 166 | 2860 167 | 2696 168 | 2368 169 | 3241 170 | 2858 171 | 2419 172 | 2762 173 | 2875 174 | 3222 175 | 3064 176 | 2827 177 | 3044 178 | 2471 179 | 3062 180 | 2982 181 | 2736 182 | 2322 183 | 2709 184 | 2766 185 | 2424 186 | 2602 187 | 2970 188 | 2675 189 | 3299 190 | 2554 191 | 2964 192 | 2597 193 | 2753 194 | 2979 195 | 2523 196 | 2912 197 | 2896 198 | 2317 199 | 3167 200 | 2813 201 | 2482 202 | 2557 203 | 3043 204 | 3244 205 | 2985 206 | 2460 207 | 2363 208 | 3272 209 | 3045 210 | 3192 211 | 2453 212 | 2656 213 | 2834 214 | 2443 215 | 3202 216 | 2926 217 | 2711 218 | 2633 219 | 2384 220 | 2752 221 | 3285 222 | 2817 223 | 2483 224 | 2919 225 | 2924 226 | 2661 227 | 2698 228 | 2361 229 | 2662 230 | 2819 231 | 3143 232 | 2316 233 | 3196 234 | 2739 235 | 2345 236 | 2578 237 | 2822 238 | 3229 239 | 2908 240 | 2917 241 | 2692 242 | 3200 243 | 2324 244 | 2522 245 | 3322 246 | 2697 247 | 3163 248 | 3093 249 | 3233 250 | 2774 251 | 2371 252 | 2835 253 | 2652 254 | 2539 255 | 2843 256 | 3231 257 | 2976 258 | 2429 259 | 2367 260 | 3144 261 | 2564 262 | 3283 263 | 3217 264 | 3035 265 | 2962 266 | 2433 267 | 2415 268 | 2387 269 | 3021 270 | 2595 271 | 2517 272 | 2468 273 | 3061 274 | 2673 275 | 2348 276 | 3027 277 | 2467 278 | 3318 279 | 2959 280 | 3273 281 | 2392 282 | 2779 283 | 2678 284 | 3004 285 | 2634 286 | 2974 287 | 3198 288 | 2342 289 | 2376 290 | 3249 291 | 2868 292 | 2952 293 | 2710 294 | 2838 295 | 2335 296 | 2524 297 | 2650 298 | 3186 299 | 2743 300 | 2545 301 | 2841 302 | 2515 303 | 2505 304 | 3181 305 | 2945 306 | 2738 307 | 2933 308 | 3303 309 | 2611 310 | 3090 311 | 2328 312 | 3010 313 | 3016 314 | 2504 315 | 2936 316 | 3266 317 | 3253 318 | 2840 319 | 3034 320 | 2581 321 | 2344 322 | 2452 323 | 2654 324 | 3199 325 | 3137 326 | 2514 327 | 2394 328 | 2544 329 | 2641 330 | 2613 331 | 2618 332 | 2558 333 | 2593 334 | 2532 335 | 2512 336 | 2975 337 | 3267 338 | 2566 339 | 2951 340 | 3300 341 | 2869 342 | 2629 343 | 2747 344 | 3055 345 | 2831 346 | 3105 347 | 3168 348 | 3100 349 | 2431 350 | 2828 351 | 2684 352 | 3269 353 | 2910 354 | 2865 355 | 2693 356 | 2884 357 | 3228 358 | 2783 359 | 3247 360 | 2770 361 | 3157 362 | 2421 363 | 2382 364 | 2331 365 | 3203 366 | 3240 367 | 2351 368 | 3114 369 | 2986 370 | 2688 371 | 2439 372 | 2996 373 | 3079 374 | 3103 375 | 3296 376 | 2349 377 | 2372 378 | 3096 379 | 2422 380 | 2551 381 | 3069 382 | 2737 383 | 3084 384 | 3304 385 | 3022 386 | 2542 387 | 3204 388 | 2949 389 | 2318 390 | 2450 391 | 3140 392 | 2734 393 | 2881 394 | 2576 395 | 3054 396 | 3089 397 | 3125 398 | 2761 399 | 3136 400 | 3111 401 | 2427 402 | 2466 403 | 3101 404 | 3104 405 | 3259 406 | 2534 407 | 2961 408 | 3191 409 | 3000 410 | 3036 411 | 2356 412 | 2800 413 | 3155 414 | 3224 415 | 2646 416 | 2735 417 | 3020 418 | 2866 419 | 2426 420 | 2448 421 | 3226 422 | 3219 423 | 2749 424 | 3183 425 | 2906 426 | 2360 427 | 2440 428 | 2946 429 | 2313 430 | 2859 431 | 2340 432 | 3008 433 | 2719 434 | 3058 435 | 2653 436 | 3023 437 | 2888 438 | 3243 439 | 2913 440 | 3242 441 | 3067 442 | 2409 443 | 3227 444 | 2380 445 | 2353 446 | 2686 447 | 2971 448 | 2847 449 | 2947 450 | 2857 451 | 3263 452 | 3218 453 | 2861 454 | 3323 455 | 2635 456 | 2966 457 | 2604 458 | 2456 459 | 2832 460 | 2694 461 | 3245 462 | 3119 463 | 2942 464 | 3153 465 | 2894 466 | 2555 467 | 3128 468 | 2703 469 | 2323 470 | 2631 471 | 2732 472 | 2699 473 | 2314 474 | 2590 475 | 3127 476 | 2891 477 | 2873 478 | 2814 479 | 2326 480 | 3026 481 | 3288 482 | 3095 483 | 2706 484 | 2457 485 | 2377 486 | 2620 487 | 2526 488 | 2674 489 | 3190 490 | 2923 491 | 3032 492 | 2334 493 | 3254 494 | 2991 495 | 3277 496 | 2973 497 | 2599 498 | 2658 499 | 2636 500 | 2826 501 | 3148 502 | 2958 503 | 3258 504 | 2990 505 | 3180 506 | 2538 507 | 2748 508 | 2625 509 | 2565 510 | 3011 511 | 3057 512 | 2354 513 | 3158 514 | 2622 515 | 3308 516 | 2983 517 | 2560 518 | 3169 519 | 3059 520 | 2480 521 | 3194 522 | 3291 523 | 3216 524 | 2643 525 | 3172 526 | 2352 527 | 2724 528 | 2485 529 | 2411 530 | 2948 531 | 2445 532 | 2362 533 | 2668 534 | 3275 535 | 3107 536 | 2496 537 | 2529 538 | 2700 539 | 2541 540 | 3028 541 | 2879 542 | 2660 543 | 3324 544 | 2755 545 | 2436 546 | 3048 547 | 2623 548 | 2920 549 | 3040 550 | 2568 551 | 3221 552 | 3003 553 | 3295 554 | 2473 555 | 3232 556 | 3213 557 | 2823 558 | 2897 559 | 2573 560 | 2645 561 | 3018 562 | 3326 563 | 2795 564 | 2915 565 | 3109 566 | 3086 567 | 2463 568 | 3118 569 | 2671 570 | 2909 571 | 2393 572 | 2325 573 | 3029 574 | 2972 575 | 3110 576 | 2870 577 | 3284 578 | 2816 579 | 2647 580 | 2667 581 | 2955 582 | 2333 583 | 2960 584 | 2864 585 | 2893 586 | 2458 587 | 2441 588 | 2359 589 | 2327 590 | 3256 591 | 3099 592 | 3073 593 | 3138 594 | 2511 595 | 2666 596 | 2548 597 | 2364 598 | 2451 599 | 2911 600 | 3237 601 | 3206 602 | 3080 603 | 3279 604 | 2934 605 | 2981 606 | 2878 607 | 3130 608 | 2830 609 | 3091 610 | 2659 611 | 2449 612 | 3152 613 | 2413 614 | 2722 615 | 2796 616 | 3220 617 | 2751 618 | 2935 619 | 3238 620 | 2491 621 | 2730 622 | 2842 623 | 3223 624 | 2492 625 | 3074 626 | 3094 627 | 2833 628 | 2521 629 | 2883 630 | 3315 631 | 2845 632 | 2907 633 | 3083 634 | 2572 635 | 3092 636 | 2903 637 | 2918 638 | 3039 639 | 3286 640 | 2587 641 | 3068 642 | 2338 643 | 3166 644 | 3134 645 | 2455 646 | 2497 647 | 2992 648 | 2775 649 | 2681 650 | 2430 651 | 2932 652 | 2931 653 | 2434 654 | 3154 655 | 3046 656 | 2598 657 | 2366 658 | 3015 659 | 3147 660 | 2944 661 | 2582 662 | 3274 663 | 2987 664 | 2642 665 | 2547 666 | 2420 667 | 2930 668 | 2750 669 | 2417 670 | 2808 671 | 3141 672 | 2997 673 | 2995 674 | 2584 675 | 2312 676 | 3033 677 | 3070 678 | 3065 679 | 2509 680 | 3314 681 | 2396 682 | 2543 683 | 2423 684 | 3170 685 | 2389 686 | 3289 687 | 2728 688 | 2540 689 | 2437 690 | 2486 691 | 2895 692 | 3017 693 | 2853 694 | 2406 695 | 2346 696 | 2877 697 | 2472 698 | 3210 699 | 2637 700 | 2927 701 | 2789 702 | 2330 703 | 3088 704 | 3102 705 | 2616 706 | 3081 707 | 2902 708 | 3205 709 | 3320 710 | 3165 711 | 2984 712 | 3185 713 | 2707 714 | 3255 715 | 2583 716 | 2773 717 | 2742 718 | 3024 719 | 2402 720 | 2718 721 | 2882 722 | 2575 723 | 3281 724 | 2786 725 | 2855 726 | 3014 727 | 2401 728 | 2535 729 | 2687 730 | 2495 731 | 3113 732 | 2609 733 | 2559 734 | 2665 735 | 2530 736 | 3293 737 | 2399 738 | 2605 739 | 2690 740 | 3133 741 | 2799 742 | 2533 743 | 2695 744 | 2713 745 | 2886 746 | 2691 747 | 2549 748 | 3077 749 | 3002 750 | 3049 751 | 3051 752 | 3087 753 | 2444 754 | 3085 755 | 3135 756 | 2702 757 | 3211 758 | 3108 759 | 2501 760 | 2769 761 | 3290 762 | 2465 763 | 3025 764 | 3019 765 | 2385 766 | 2940 767 | 2657 768 | 2610 769 | 2525 770 | 2941 771 | 3078 772 | 2341 773 | 2916 774 | 2956 775 | 2375 776 | 2880 777 | 3009 778 | 2780 779 | 2370 780 | 2925 781 | 2332 782 | 3146 783 | 2315 784 | 2809 785 | 3145 786 | 3106 787 | 2782 788 | 2760 789 | 2493 790 | 2765 791 | 2556 792 | 2890 793 | 2400 794 | 2339 795 | 3201 796 | 2818 797 | 3248 798 | 3280 799 | 2570 800 | 2569 801 | 2937 802 | 3174 803 | 2836 804 | 2708 805 | 2820 806 | 3195 807 | 2617 808 | 3197 809 | 2319 810 | 2744 811 | 2615 812 | 2825 813 | 2603 814 | 2914 815 | 2531 816 | 3193 817 | 2624 818 | 2365 819 | 2810 820 | 3239 821 | 3159 822 | 2537 823 | 2844 824 | 2758 825 | 2938 826 | 3037 827 | 2503 828 | 3297 829 | 2885 830 | 2608 831 | 2494 832 | 2712 833 | 2408 834 | 2901 835 | 2704 836 | 2536 837 | 2373 838 | 2478 839 | 2723 840 | 3076 841 | 2627 842 | 2369 843 | 2669 844 | 3006 845 | 2628 846 | 2788 847 | 3276 848 | 2435 849 | 3139 850 | 3235 851 | 2527 852 | 2571 853 | 2815 854 | 2442 855 | 2892 856 | 2978 857 | 2746 858 | 3150 859 | 2574 860 | 2725 861 | 3188 862 | 2601 863 | 2378 864 | 3075 865 | 2632 866 | 2794 867 | 3270 868 | 3071 869 | 2506 870 | 3126 871 | 3236 872 | 3257 873 | 2824 874 | 2989 875 | 2950 876 | 2428 877 | 2405 878 | 3156 879 | 2447 880 | 2787 881 | 2805 882 | 2720 883 | 2403 884 | 2811 885 | 2329 886 | 2474 887 | 2785 888 | 2350 889 | 2507 890 | 2416 891 | 3112 892 | 2475 893 | 2876 894 | 2585 895 | 2487 896 | 3072 897 | 3082 898 | 2943 899 | 2757 900 | 2388 901 | 2600 902 | 3294 903 | 2756 904 | 3142 905 | 3041 906 | 2594 907 | 2998 908 | 3047 909 | 2379 910 | 2980 911 | 2454 912 | 2862 913 | 3175 914 | 2588 915 | 3031 916 | 3012 917 | 2889 918 | 2500 919 | 2791 920 | 2854 921 | 2619 922 | 2395 923 | 2807 924 | 2740 925 | 2412 926 | 3131 927 | 3013 928 | 2939 929 | 2651 930 | 2490 931 | 2988 932 | 2863 933 | 3225 934 | 2745 935 | 2714 936 | 3160 937 | 3124 938 | 2849 939 | 2676 940 | 2872 941 | 3287 942 | 3189 943 | 2716 944 | 3115 945 | 2928 946 | 2871 947 | 2591 948 | 2717 949 | 2546 950 | 2777 951 | 3298 952 | 2397 953 | 3187 954 | 2726 955 | 2336 956 | 3268 957 | 2477 958 | 2904 959 | 2846 960 | 3121 961 | 2899 962 | 2510 963 | 2806 964 | 2963 965 | 3313 966 | 2679 967 | 3302 968 | 2663 969 | 3053 970 | 2469 971 | 2999 972 | 3311 973 | 2470 974 | 2638 975 | 3120 976 | 3171 977 | 2689 978 | 2922 979 | 2607 980 | 2721 981 | 2993 982 | 2887 983 | 2837 984 | 2929 985 | 2829 986 | 3234 987 | 2649 988 | 2337 989 | 2759 990 | 2778 991 | 2771 992 | 2404 993 | 2589 994 | 3123 995 | 3209 996 | 2729 997 | 3252 998 | 2606 999 | 2579 1000 | 2552 1001 | -------------------------------------------------------------------------------- /gcn/data/ind.citeseer.tx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/gcn/data/ind.citeseer.tx -------------------------------------------------------------------------------- /gcn/data/ind.citeseer.ty: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/gcn/data/ind.citeseer.ty -------------------------------------------------------------------------------- /gcn/data/ind.citeseer.x: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/gcn/data/ind.citeseer.x -------------------------------------------------------------------------------- /gcn/data/ind.citeseer.y: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/gcn/data/ind.citeseer.y -------------------------------------------------------------------------------- /gcn/data/ind.cora.allx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/gcn/data/ind.cora.allx -------------------------------------------------------------------------------- /gcn/data/ind.cora.ally: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/gcn/data/ind.cora.ally -------------------------------------------------------------------------------- /gcn/data/ind.cora.graph: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/gcn/data/ind.cora.graph -------------------------------------------------------------------------------- /gcn/data/ind.cora.test.index: -------------------------------------------------------------------------------- 1 | 2692 2 | 2532 3 | 2050 4 | 1715 5 | 2362 6 | 2609 7 | 2622 8 | 1975 9 | 2081 10 | 1767 11 | 2263 12 | 1725 13 | 2588 14 | 2259 15 | 2357 16 | 1998 17 | 2574 18 | 2179 19 | 2291 20 | 2382 21 | 1812 22 | 1751 23 | 2422 24 | 1937 25 | 2631 26 | 2510 27 | 2378 28 | 2589 29 | 2345 30 | 1943 31 | 1850 32 | 2298 33 | 1825 34 | 2035 35 | 2507 36 | 2313 37 | 1906 38 | 1797 39 | 2023 40 | 2159 41 | 2495 42 | 1886 43 | 2122 44 | 2369 45 | 2461 46 | 1925 47 | 2565 48 | 1858 49 | 2234 50 | 2000 51 | 1846 52 | 2318 53 | 1723 54 | 2559 55 | 2258 56 | 1763 57 | 1991 58 | 1922 59 | 2003 60 | 2662 61 | 2250 62 | 2064 63 | 2529 64 | 1888 65 | 2499 66 | 2454 67 | 2320 68 | 2287 69 | 2203 70 | 2018 71 | 2002 72 | 2632 73 | 2554 74 | 2314 75 | 2537 76 | 1760 77 | 2088 78 | 2086 79 | 2218 80 | 2605 81 | 1953 82 | 2403 83 | 1920 84 | 2015 85 | 2335 86 | 2535 87 | 1837 88 | 2009 89 | 1905 90 | 2636 91 | 1942 92 | 2193 93 | 2576 94 | 2373 95 | 1873 96 | 2463 97 | 2509 98 | 1954 99 | 2656 100 | 2455 101 | 2494 102 | 2295 103 | 2114 104 | 2561 105 | 2176 106 | 2275 107 | 2635 108 | 2442 109 | 2704 110 | 2127 111 | 2085 112 | 2214 113 | 2487 114 | 1739 115 | 2543 116 | 1783 117 | 2485 118 | 2262 119 | 2472 120 | 2326 121 | 1738 122 | 2170 123 | 2100 124 | 2384 125 | 2152 126 | 2647 127 | 2693 128 | 2376 129 | 1775 130 | 1726 131 | 2476 132 | 2195 133 | 1773 134 | 1793 135 | 2194 136 | 2581 137 | 1854 138 | 2524 139 | 1945 140 | 1781 141 | 1987 142 | 2599 143 | 1744 144 | 2225 145 | 2300 146 | 1928 147 | 2042 148 | 2202 149 | 1958 150 | 1816 151 | 1916 152 | 2679 153 | 2190 154 | 1733 155 | 2034 156 | 2643 157 | 2177 158 | 1883 159 | 1917 160 | 1996 161 | 2491 162 | 2268 163 | 2231 164 | 2471 165 | 1919 166 | 1909 167 | 2012 168 | 2522 169 | 1865 170 | 2466 171 | 2469 172 | 2087 173 | 2584 174 | 2563 175 | 1924 176 | 2143 177 | 1736 178 | 1966 179 | 2533 180 | 2490 181 | 2630 182 | 1973 183 | 2568 184 | 1978 185 | 2664 186 | 2633 187 | 2312 188 | 2178 189 | 1754 190 | 2307 191 | 2480 192 | 1960 193 | 1742 194 | 1962 195 | 2160 196 | 2070 197 | 2553 198 | 2433 199 | 1768 200 | 2659 201 | 2379 202 | 2271 203 | 1776 204 | 2153 205 | 1877 206 | 2027 207 | 2028 208 | 2155 209 | 2196 210 | 2483 211 | 2026 212 | 2158 213 | 2407 214 | 1821 215 | 2131 216 | 2676 217 | 2277 218 | 2489 219 | 2424 220 | 1963 221 | 1808 222 | 1859 223 | 2597 224 | 2548 225 | 2368 226 | 1817 227 | 2405 228 | 2413 229 | 2603 230 | 2350 231 | 2118 232 | 2329 233 | 1969 234 | 2577 235 | 2475 236 | 2467 237 | 2425 238 | 1769 239 | 2092 240 | 2044 241 | 2586 242 | 2608 243 | 1983 244 | 2109 245 | 2649 246 | 1964 247 | 2144 248 | 1902 249 | 2411 250 | 2508 251 | 2360 252 | 1721 253 | 2005 254 | 2014 255 | 2308 256 | 2646 257 | 1949 258 | 1830 259 | 2212 260 | 2596 261 | 1832 262 | 1735 263 | 1866 264 | 2695 265 | 1941 266 | 2546 267 | 2498 268 | 2686 269 | 2665 270 | 1784 271 | 2613 272 | 1970 273 | 2021 274 | 2211 275 | 2516 276 | 2185 277 | 2479 278 | 2699 279 | 2150 280 | 1990 281 | 2063 282 | 2075 283 | 1979 284 | 2094 285 | 1787 286 | 2571 287 | 2690 288 | 1926 289 | 2341 290 | 2566 291 | 1957 292 | 1709 293 | 1955 294 | 2570 295 | 2387 296 | 1811 297 | 2025 298 | 2447 299 | 2696 300 | 2052 301 | 2366 302 | 1857 303 | 2273 304 | 2245 305 | 2672 306 | 2133 307 | 2421 308 | 1929 309 | 2125 310 | 2319 311 | 2641 312 | 2167 313 | 2418 314 | 1765 315 | 1761 316 | 1828 317 | 2188 318 | 1972 319 | 1997 320 | 2419 321 | 2289 322 | 2296 323 | 2587 324 | 2051 325 | 2440 326 | 2053 327 | 2191 328 | 1923 329 | 2164 330 | 1861 331 | 2339 332 | 2333 333 | 2523 334 | 2670 335 | 2121 336 | 1921 337 | 1724 338 | 2253 339 | 2374 340 | 1940 341 | 2545 342 | 2301 343 | 2244 344 | 2156 345 | 1849 346 | 2551 347 | 2011 348 | 2279 349 | 2572 350 | 1757 351 | 2400 352 | 2569 353 | 2072 354 | 2526 355 | 2173 356 | 2069 357 | 2036 358 | 1819 359 | 1734 360 | 1880 361 | 2137 362 | 2408 363 | 2226 364 | 2604 365 | 1771 366 | 2698 367 | 2187 368 | 2060 369 | 1756 370 | 2201 371 | 2066 372 | 2439 373 | 1844 374 | 1772 375 | 2383 376 | 2398 377 | 1708 378 | 1992 379 | 1959 380 | 1794 381 | 2426 382 | 2702 383 | 2444 384 | 1944 385 | 1829 386 | 2660 387 | 2497 388 | 2607 389 | 2343 390 | 1730 391 | 2624 392 | 1790 393 | 1935 394 | 1967 395 | 2401 396 | 2255 397 | 2355 398 | 2348 399 | 1931 400 | 2183 401 | 2161 402 | 2701 403 | 1948 404 | 2501 405 | 2192 406 | 2404 407 | 2209 408 | 2331 409 | 1810 410 | 2363 411 | 2334 412 | 1887 413 | 2393 414 | 2557 415 | 1719 416 | 1732 417 | 1986 418 | 2037 419 | 2056 420 | 1867 421 | 2126 422 | 1932 423 | 2117 424 | 1807 425 | 1801 426 | 1743 427 | 2041 428 | 1843 429 | 2388 430 | 2221 431 | 1833 432 | 2677 433 | 1778 434 | 2661 435 | 2306 436 | 2394 437 | 2106 438 | 2430 439 | 2371 440 | 2606 441 | 2353 442 | 2269 443 | 2317 444 | 2645 445 | 2372 446 | 2550 447 | 2043 448 | 1968 449 | 2165 450 | 2310 451 | 1985 452 | 2446 453 | 1982 454 | 2377 455 | 2207 456 | 1818 457 | 1913 458 | 1766 459 | 1722 460 | 1894 461 | 2020 462 | 1881 463 | 2621 464 | 2409 465 | 2261 466 | 2458 467 | 2096 468 | 1712 469 | 2594 470 | 2293 471 | 2048 472 | 2359 473 | 1839 474 | 2392 475 | 2254 476 | 1911 477 | 2101 478 | 2367 479 | 1889 480 | 1753 481 | 2555 482 | 2246 483 | 2264 484 | 2010 485 | 2336 486 | 2651 487 | 2017 488 | 2140 489 | 1842 490 | 2019 491 | 1890 492 | 2525 493 | 2134 494 | 2492 495 | 2652 496 | 2040 497 | 2145 498 | 2575 499 | 2166 500 | 1999 501 | 2434 502 | 1711 503 | 2276 504 | 2450 505 | 2389 506 | 2669 507 | 2595 508 | 1814 509 | 2039 510 | 2502 511 | 1896 512 | 2168 513 | 2344 514 | 2637 515 | 2031 516 | 1977 517 | 2380 518 | 1936 519 | 2047 520 | 2460 521 | 2102 522 | 1745 523 | 2650 524 | 2046 525 | 2514 526 | 1980 527 | 2352 528 | 2113 529 | 1713 530 | 2058 531 | 2558 532 | 1718 533 | 1864 534 | 1876 535 | 2338 536 | 1879 537 | 1891 538 | 2186 539 | 2451 540 | 2181 541 | 2638 542 | 2644 543 | 2103 544 | 2591 545 | 2266 546 | 2468 547 | 1869 548 | 2582 549 | 2674 550 | 2361 551 | 2462 552 | 1748 553 | 2215 554 | 2615 555 | 2236 556 | 2248 557 | 2493 558 | 2342 559 | 2449 560 | 2274 561 | 1824 562 | 1852 563 | 1870 564 | 2441 565 | 2356 566 | 1835 567 | 2694 568 | 2602 569 | 2685 570 | 1893 571 | 2544 572 | 2536 573 | 1994 574 | 1853 575 | 1838 576 | 1786 577 | 1930 578 | 2539 579 | 1892 580 | 2265 581 | 2618 582 | 2486 583 | 2583 584 | 2061 585 | 1796 586 | 1806 587 | 2084 588 | 1933 589 | 2095 590 | 2136 591 | 2078 592 | 1884 593 | 2438 594 | 2286 595 | 2138 596 | 1750 597 | 2184 598 | 1799 599 | 2278 600 | 2410 601 | 2642 602 | 2435 603 | 1956 604 | 2399 605 | 1774 606 | 2129 607 | 1898 608 | 1823 609 | 1938 610 | 2299 611 | 1862 612 | 2420 613 | 2673 614 | 1984 615 | 2204 616 | 1717 617 | 2074 618 | 2213 619 | 2436 620 | 2297 621 | 2592 622 | 2667 623 | 2703 624 | 2511 625 | 1779 626 | 1782 627 | 2625 628 | 2365 629 | 2315 630 | 2381 631 | 1788 632 | 1714 633 | 2302 634 | 1927 635 | 2325 636 | 2506 637 | 2169 638 | 2328 639 | 2629 640 | 2128 641 | 2655 642 | 2282 643 | 2073 644 | 2395 645 | 2247 646 | 2521 647 | 2260 648 | 1868 649 | 1988 650 | 2324 651 | 2705 652 | 2541 653 | 1731 654 | 2681 655 | 2707 656 | 2465 657 | 1785 658 | 2149 659 | 2045 660 | 2505 661 | 2611 662 | 2217 663 | 2180 664 | 1904 665 | 2453 666 | 2484 667 | 1871 668 | 2309 669 | 2349 670 | 2482 671 | 2004 672 | 1965 673 | 2406 674 | 2162 675 | 1805 676 | 2654 677 | 2007 678 | 1947 679 | 1981 680 | 2112 681 | 2141 682 | 1720 683 | 1758 684 | 2080 685 | 2330 686 | 2030 687 | 2432 688 | 2089 689 | 2547 690 | 1820 691 | 1815 692 | 2675 693 | 1840 694 | 2658 695 | 2370 696 | 2251 697 | 1908 698 | 2029 699 | 2068 700 | 2513 701 | 2549 702 | 2267 703 | 2580 704 | 2327 705 | 2351 706 | 2111 707 | 2022 708 | 2321 709 | 2614 710 | 2252 711 | 2104 712 | 1822 713 | 2552 714 | 2243 715 | 1798 716 | 2396 717 | 2663 718 | 2564 719 | 2148 720 | 2562 721 | 2684 722 | 2001 723 | 2151 724 | 2706 725 | 2240 726 | 2474 727 | 2303 728 | 2634 729 | 2680 730 | 2055 731 | 2090 732 | 2503 733 | 2347 734 | 2402 735 | 2238 736 | 1950 737 | 2054 738 | 2016 739 | 1872 740 | 2233 741 | 1710 742 | 2032 743 | 2540 744 | 2628 745 | 1795 746 | 2616 747 | 1903 748 | 2531 749 | 2567 750 | 1946 751 | 1897 752 | 2222 753 | 2227 754 | 2627 755 | 1856 756 | 2464 757 | 2241 758 | 2481 759 | 2130 760 | 2311 761 | 2083 762 | 2223 763 | 2284 764 | 2235 765 | 2097 766 | 1752 767 | 2515 768 | 2527 769 | 2385 770 | 2189 771 | 2283 772 | 2182 773 | 2079 774 | 2375 775 | 2174 776 | 2437 777 | 1993 778 | 2517 779 | 2443 780 | 2224 781 | 2648 782 | 2171 783 | 2290 784 | 2542 785 | 2038 786 | 1855 787 | 1831 788 | 1759 789 | 1848 790 | 2445 791 | 1827 792 | 2429 793 | 2205 794 | 2598 795 | 2657 796 | 1728 797 | 2065 798 | 1918 799 | 2427 800 | 2573 801 | 2620 802 | 2292 803 | 1777 804 | 2008 805 | 1875 806 | 2288 807 | 2256 808 | 2033 809 | 2470 810 | 2585 811 | 2610 812 | 2082 813 | 2230 814 | 1915 815 | 1847 816 | 2337 817 | 2512 818 | 2386 819 | 2006 820 | 2653 821 | 2346 822 | 1951 823 | 2110 824 | 2639 825 | 2520 826 | 1939 827 | 2683 828 | 2139 829 | 2220 830 | 1910 831 | 2237 832 | 1900 833 | 1836 834 | 2197 835 | 1716 836 | 1860 837 | 2077 838 | 2519 839 | 2538 840 | 2323 841 | 1914 842 | 1971 843 | 1845 844 | 2132 845 | 1802 846 | 1907 847 | 2640 848 | 2496 849 | 2281 850 | 2198 851 | 2416 852 | 2285 853 | 1755 854 | 2431 855 | 2071 856 | 2249 857 | 2123 858 | 1727 859 | 2459 860 | 2304 861 | 2199 862 | 1791 863 | 1809 864 | 1780 865 | 2210 866 | 2417 867 | 1874 868 | 1878 869 | 2116 870 | 1961 871 | 1863 872 | 2579 873 | 2477 874 | 2228 875 | 2332 876 | 2578 877 | 2457 878 | 2024 879 | 1934 880 | 2316 881 | 1841 882 | 1764 883 | 1737 884 | 2322 885 | 2239 886 | 2294 887 | 1729 888 | 2488 889 | 1974 890 | 2473 891 | 2098 892 | 2612 893 | 1834 894 | 2340 895 | 2423 896 | 2175 897 | 2280 898 | 2617 899 | 2208 900 | 2560 901 | 1741 902 | 2600 903 | 2059 904 | 1747 905 | 2242 906 | 2700 907 | 2232 908 | 2057 909 | 2147 910 | 2682 911 | 1792 912 | 1826 913 | 2120 914 | 1895 915 | 2364 916 | 2163 917 | 1851 918 | 2391 919 | 2414 920 | 2452 921 | 1803 922 | 1989 923 | 2623 924 | 2200 925 | 2528 926 | 2415 927 | 1804 928 | 2146 929 | 2619 930 | 2687 931 | 1762 932 | 2172 933 | 2270 934 | 2678 935 | 2593 936 | 2448 937 | 1882 938 | 2257 939 | 2500 940 | 1899 941 | 2478 942 | 2412 943 | 2107 944 | 1746 945 | 2428 946 | 2115 947 | 1800 948 | 1901 949 | 2397 950 | 2530 951 | 1912 952 | 2108 953 | 2206 954 | 2091 955 | 1740 956 | 2219 957 | 1976 958 | 2099 959 | 2142 960 | 2671 961 | 2668 962 | 2216 963 | 2272 964 | 2229 965 | 2666 966 | 2456 967 | 2534 968 | 2697 969 | 2688 970 | 2062 971 | 2691 972 | 2689 973 | 2154 974 | 2590 975 | 2626 976 | 2390 977 | 1813 978 | 2067 979 | 1952 980 | 2518 981 | 2358 982 | 1789 983 | 2076 984 | 2049 985 | 2119 986 | 2013 987 | 2124 988 | 2556 989 | 2105 990 | 2093 991 | 1885 992 | 2305 993 | 2354 994 | 2135 995 | 2601 996 | 1770 997 | 1995 998 | 2504 999 | 1749 1000 | 2157 1001 | -------------------------------------------------------------------------------- /gcn/data/ind.cora.tx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/gcn/data/ind.cora.tx -------------------------------------------------------------------------------- /gcn/data/ind.cora.ty: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/gcn/data/ind.cora.ty -------------------------------------------------------------------------------- /gcn/data/ind.cora.x: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/gcn/data/ind.cora.x -------------------------------------------------------------------------------- /gcn/data/ind.cora.y: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/gcn/data/ind.cora.y -------------------------------------------------------------------------------- /gcn/data/ind.pubmed.allx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/gcn/data/ind.pubmed.allx -------------------------------------------------------------------------------- /gcn/data/ind.pubmed.ally: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/gcn/data/ind.pubmed.ally -------------------------------------------------------------------------------- /gcn/data/ind.pubmed.graph: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/gcn/data/ind.pubmed.graph -------------------------------------------------------------------------------- /gcn/data/ind.pubmed.test.index: -------------------------------------------------------------------------------- 1 | 18747 2 | 19392 3 | 19181 4 | 18843 5 | 19221 6 | 18962 7 | 19560 8 | 19097 9 | 18966 10 | 19014 11 | 18756 12 | 19313 13 | 19000 14 | 19569 15 | 19359 16 | 18854 17 | 18970 18 | 19073 19 | 19661 20 | 19180 21 | 19377 22 | 18750 23 | 19401 24 | 18788 25 | 19224 26 | 19447 27 | 19017 28 | 19241 29 | 18890 30 | 18908 31 | 18965 32 | 19001 33 | 18849 34 | 19641 35 | 18852 36 | 19222 37 | 19172 38 | 18762 39 | 19156 40 | 19162 41 | 18856 42 | 18763 43 | 19318 44 | 18826 45 | 19712 46 | 19192 47 | 19695 48 | 19030 49 | 19523 50 | 19249 51 | 19079 52 | 19232 53 | 19455 54 | 18743 55 | 18800 56 | 19071 57 | 18885 58 | 19593 59 | 19394 60 | 19390 61 | 18832 62 | 19445 63 | 18838 64 | 19632 65 | 19548 66 | 19546 67 | 18825 68 | 19498 69 | 19266 70 | 19117 71 | 19595 72 | 19252 73 | 18730 74 | 18913 75 | 18809 76 | 19452 77 | 19520 78 | 19274 79 | 19555 80 | 19388 81 | 18919 82 | 19099 83 | 19637 84 | 19403 85 | 18720 86 | 19526 87 | 18905 88 | 19451 89 | 19408 90 | 18923 91 | 18794 92 | 19322 93 | 19431 94 | 18912 95 | 18841 96 | 19239 97 | 19125 98 | 19258 99 | 19565 100 | 18898 101 | 19482 102 | 19029 103 | 18778 104 | 19096 105 | 19684 106 | 19552 107 | 18765 108 | 19361 109 | 19171 110 | 19367 111 | 19623 112 | 19402 113 | 19327 114 | 19118 115 | 18888 116 | 18726 117 | 19510 118 | 18831 119 | 19490 120 | 19576 121 | 19050 122 | 18729 123 | 18896 124 | 19246 125 | 19012 126 | 18862 127 | 18873 128 | 19193 129 | 19693 130 | 19474 131 | 18953 132 | 19115 133 | 19182 134 | 19269 135 | 19116 136 | 18837 137 | 18872 138 | 19007 139 | 19212 140 | 18798 141 | 19102 142 | 18772 143 | 19660 144 | 19511 145 | 18914 146 | 18886 147 | 19672 148 | 19360 149 | 19213 150 | 18810 151 | 19420 152 | 19512 153 | 18719 154 | 19432 155 | 19350 156 | 19127 157 | 18782 158 | 19587 159 | 18924 160 | 19488 161 | 18781 162 | 19340 163 | 19190 164 | 19383 165 | 19094 166 | 18835 167 | 19487 168 | 19230 169 | 18791 170 | 18882 171 | 18937 172 | 18928 173 | 18755 174 | 18802 175 | 19516 176 | 18795 177 | 18786 178 | 19273 179 | 19349 180 | 19398 181 | 19626 182 | 19130 183 | 19351 184 | 19489 185 | 19446 186 | 18959 187 | 19025 188 | 18792 189 | 18878 190 | 19304 191 | 19629 192 | 19061 193 | 18785 194 | 19194 195 | 19179 196 | 19210 197 | 19417 198 | 19583 199 | 19415 200 | 19443 201 | 18739 202 | 19662 203 | 18904 204 | 18910 205 | 18901 206 | 18960 207 | 18722 208 | 18827 209 | 19290 210 | 18842 211 | 19389 212 | 19344 213 | 18961 214 | 19098 215 | 19147 216 | 19334 217 | 19358 218 | 18829 219 | 18984 220 | 18931 221 | 18742 222 | 19320 223 | 19111 224 | 19196 225 | 18887 226 | 18991 227 | 19469 228 | 18990 229 | 18876 230 | 19261 231 | 19270 232 | 19522 233 | 19088 234 | 19284 235 | 19646 236 | 19493 237 | 19225 238 | 19615 239 | 19449 240 | 19043 241 | 19674 242 | 19391 243 | 18918 244 | 19155 245 | 19110 246 | 18815 247 | 19131 248 | 18834 249 | 19715 250 | 19603 251 | 19688 252 | 19133 253 | 19053 254 | 19166 255 | 19066 256 | 18893 257 | 18757 258 | 19582 259 | 19282 260 | 19257 261 | 18869 262 | 19467 263 | 18954 264 | 19371 265 | 19151 266 | 19462 267 | 19598 268 | 19653 269 | 19187 270 | 19624 271 | 19564 272 | 19534 273 | 19581 274 | 19478 275 | 18985 276 | 18746 277 | 19342 278 | 18777 279 | 19696 280 | 18824 281 | 19138 282 | 18728 283 | 19643 284 | 19199 285 | 18731 286 | 19168 287 | 18948 288 | 19216 289 | 19697 290 | 19347 291 | 18808 292 | 18725 293 | 19134 294 | 18847 295 | 18828 296 | 18996 297 | 19106 298 | 19485 299 | 18917 300 | 18911 301 | 18776 302 | 19203 303 | 19158 304 | 18895 305 | 19165 306 | 19382 307 | 18780 308 | 18836 309 | 19373 310 | 19659 311 | 18947 312 | 19375 313 | 19299 314 | 18761 315 | 19366 316 | 18754 317 | 19248 318 | 19416 319 | 19658 320 | 19638 321 | 19034 322 | 19281 323 | 18844 324 | 18922 325 | 19491 326 | 19272 327 | 19341 328 | 19068 329 | 19332 330 | 19559 331 | 19293 332 | 18804 333 | 18933 334 | 18935 335 | 19405 336 | 18936 337 | 18945 338 | 18943 339 | 18818 340 | 18797 341 | 19570 342 | 19464 343 | 19428 344 | 19093 345 | 19433 346 | 18986 347 | 19161 348 | 19255 349 | 19157 350 | 19046 351 | 19292 352 | 19434 353 | 19298 354 | 18724 355 | 19410 356 | 19694 357 | 19214 358 | 19640 359 | 19189 360 | 18963 361 | 19218 362 | 19585 363 | 19041 364 | 19550 365 | 19123 366 | 19620 367 | 19376 368 | 19561 369 | 18944 370 | 19706 371 | 19056 372 | 19283 373 | 18741 374 | 19319 375 | 19144 376 | 19542 377 | 18821 378 | 19404 379 | 19080 380 | 19303 381 | 18793 382 | 19306 383 | 19678 384 | 19435 385 | 19519 386 | 19566 387 | 19278 388 | 18946 389 | 19536 390 | 19020 391 | 19057 392 | 19198 393 | 19333 394 | 19649 395 | 19699 396 | 19399 397 | 19654 398 | 19136 399 | 19465 400 | 19321 401 | 19577 402 | 18907 403 | 19665 404 | 19386 405 | 19596 406 | 19247 407 | 19473 408 | 19568 409 | 19355 410 | 18925 411 | 19586 412 | 18982 413 | 19616 414 | 19495 415 | 19612 416 | 19023 417 | 19438 418 | 18817 419 | 19692 420 | 19295 421 | 19414 422 | 19676 423 | 19472 424 | 19107 425 | 19062 426 | 19035 427 | 18883 428 | 19409 429 | 19052 430 | 19606 431 | 19091 432 | 19651 433 | 19475 434 | 19413 435 | 18796 436 | 19369 437 | 19639 438 | 19701 439 | 19461 440 | 19645 441 | 19251 442 | 19063 443 | 19679 444 | 19545 445 | 19081 446 | 19363 447 | 18995 448 | 19549 449 | 18790 450 | 18855 451 | 18833 452 | 18899 453 | 19395 454 | 18717 455 | 19647 456 | 18768 457 | 19103 458 | 19245 459 | 18819 460 | 18779 461 | 19656 462 | 19076 463 | 18745 464 | 18971 465 | 19197 466 | 19711 467 | 19074 468 | 19128 469 | 19466 470 | 19139 471 | 19309 472 | 19324 473 | 18814 474 | 19092 475 | 19627 476 | 19060 477 | 18806 478 | 18929 479 | 18737 480 | 18942 481 | 18906 482 | 18858 483 | 19456 484 | 19253 485 | 19716 486 | 19104 487 | 19667 488 | 19574 489 | 18903 490 | 19237 491 | 18864 492 | 19556 493 | 19364 494 | 18952 495 | 19008 496 | 19323 497 | 19700 498 | 19170 499 | 19267 500 | 19345 501 | 19238 502 | 18909 503 | 18892 504 | 19109 505 | 19704 506 | 18902 507 | 19275 508 | 19680 509 | 18723 510 | 19242 511 | 19112 512 | 19169 513 | 18956 514 | 19343 515 | 19650 516 | 19541 517 | 19698 518 | 19521 519 | 19087 520 | 18976 521 | 19038 522 | 18775 523 | 18968 524 | 19671 525 | 19412 526 | 19407 527 | 19573 528 | 19027 529 | 18813 530 | 19357 531 | 19460 532 | 19673 533 | 19481 534 | 19036 535 | 19614 536 | 18787 537 | 19195 538 | 18732 539 | 18884 540 | 19613 541 | 19657 542 | 19575 543 | 19226 544 | 19589 545 | 19234 546 | 19617 547 | 19707 548 | 19484 549 | 18740 550 | 19424 551 | 18784 552 | 19419 553 | 19159 554 | 18865 555 | 19105 556 | 19315 557 | 19480 558 | 19664 559 | 19378 560 | 18803 561 | 19605 562 | 18870 563 | 19042 564 | 19426 565 | 18848 566 | 19223 567 | 19509 568 | 19532 569 | 18752 570 | 19691 571 | 18718 572 | 19209 573 | 19362 574 | 19090 575 | 19492 576 | 19567 577 | 19687 578 | 19018 579 | 18830 580 | 19530 581 | 19554 582 | 19119 583 | 19442 584 | 19558 585 | 19527 586 | 19427 587 | 19291 588 | 19543 589 | 19422 590 | 19142 591 | 18897 592 | 18950 593 | 19425 594 | 19002 595 | 19588 596 | 18978 597 | 19551 598 | 18930 599 | 18736 600 | 19101 601 | 19215 602 | 19150 603 | 19263 604 | 18949 605 | 18974 606 | 18759 607 | 19335 608 | 19200 609 | 19129 610 | 19328 611 | 19437 612 | 18988 613 | 19429 614 | 19368 615 | 19406 616 | 19049 617 | 18811 618 | 19296 619 | 19256 620 | 19385 621 | 19602 622 | 18770 623 | 19337 624 | 19580 625 | 19476 626 | 19045 627 | 19132 628 | 19089 629 | 19120 630 | 19265 631 | 19483 632 | 18767 633 | 19227 634 | 18934 635 | 19069 636 | 18820 637 | 19006 638 | 19459 639 | 18927 640 | 19037 641 | 19280 642 | 19441 643 | 18823 644 | 19015 645 | 19114 646 | 19618 647 | 18957 648 | 19176 649 | 18853 650 | 19648 651 | 19201 652 | 19444 653 | 19279 654 | 18751 655 | 19302 656 | 19505 657 | 18733 658 | 19601 659 | 19533 660 | 18863 661 | 19708 662 | 19387 663 | 19346 664 | 19152 665 | 19206 666 | 18851 667 | 19338 668 | 19681 669 | 19380 670 | 19055 671 | 18766 672 | 19085 673 | 19591 674 | 19547 675 | 18958 676 | 19146 677 | 18840 678 | 19051 679 | 19021 680 | 19207 681 | 19235 682 | 19086 683 | 18979 684 | 19300 685 | 18939 686 | 19100 687 | 19619 688 | 19287 689 | 18980 690 | 19277 691 | 19326 692 | 19108 693 | 18920 694 | 19625 695 | 19374 696 | 19078 697 | 18734 698 | 19634 699 | 19339 700 | 18877 701 | 19423 702 | 19652 703 | 19683 704 | 19044 705 | 18983 706 | 19330 707 | 19529 708 | 19714 709 | 19468 710 | 19075 711 | 19540 712 | 18839 713 | 19022 714 | 19286 715 | 19537 716 | 19175 717 | 19463 718 | 19167 719 | 19705 720 | 19562 721 | 19244 722 | 19486 723 | 19611 724 | 18801 725 | 19178 726 | 19590 727 | 18846 728 | 19450 729 | 19205 730 | 19381 731 | 18941 732 | 19670 733 | 19185 734 | 19504 735 | 19633 736 | 18997 737 | 19113 738 | 19397 739 | 19636 740 | 19709 741 | 19289 742 | 19264 743 | 19353 744 | 19584 745 | 19126 746 | 18938 747 | 19669 748 | 18964 749 | 19276 750 | 18774 751 | 19173 752 | 19231 753 | 18973 754 | 18769 755 | 19064 756 | 19040 757 | 19668 758 | 18738 759 | 19082 760 | 19655 761 | 19236 762 | 19352 763 | 19609 764 | 19628 765 | 18951 766 | 19384 767 | 19122 768 | 18875 769 | 18992 770 | 18753 771 | 19379 772 | 19254 773 | 19301 774 | 19506 775 | 19135 776 | 19010 777 | 19682 778 | 19400 779 | 19579 780 | 19316 781 | 19553 782 | 19208 783 | 19635 784 | 19644 785 | 18891 786 | 19024 787 | 18989 788 | 19250 789 | 18850 790 | 19317 791 | 18915 792 | 19607 793 | 18799 794 | 18881 795 | 19479 796 | 19031 797 | 19365 798 | 19164 799 | 18744 800 | 18760 801 | 19502 802 | 19058 803 | 19517 804 | 18735 805 | 19448 806 | 19243 807 | 19453 808 | 19285 809 | 18857 810 | 19439 811 | 19016 812 | 18975 813 | 19503 814 | 18998 815 | 18981 816 | 19186 817 | 18994 818 | 19240 819 | 19631 820 | 19070 821 | 19174 822 | 18900 823 | 19065 824 | 19220 825 | 19229 826 | 18880 827 | 19308 828 | 19372 829 | 19496 830 | 18771 831 | 19325 832 | 19538 833 | 19033 834 | 18874 835 | 19077 836 | 19211 837 | 18764 838 | 19458 839 | 19571 840 | 19121 841 | 19019 842 | 19059 843 | 19497 844 | 18969 845 | 19666 846 | 19297 847 | 19219 848 | 19622 849 | 19184 850 | 18977 851 | 19702 852 | 19539 853 | 19329 854 | 19095 855 | 19675 856 | 18972 857 | 19514 858 | 19703 859 | 19188 860 | 18866 861 | 18812 862 | 19314 863 | 18822 864 | 18845 865 | 19494 866 | 19411 867 | 18916 868 | 19686 869 | 18967 870 | 19294 871 | 19143 872 | 19204 873 | 18805 874 | 19689 875 | 19233 876 | 18758 877 | 18748 878 | 19011 879 | 19685 880 | 19336 881 | 19608 882 | 19454 883 | 19124 884 | 18868 885 | 18807 886 | 19544 887 | 19621 888 | 19228 889 | 19154 890 | 19141 891 | 19145 892 | 19153 893 | 18860 894 | 19163 895 | 19393 896 | 19268 897 | 19160 898 | 19305 899 | 19259 900 | 19471 901 | 19524 902 | 18783 903 | 19396 904 | 18894 905 | 19430 906 | 19690 907 | 19348 908 | 19597 909 | 19592 910 | 19677 911 | 18889 912 | 19331 913 | 18773 914 | 19137 915 | 19009 916 | 18932 917 | 19599 918 | 18816 919 | 19054 920 | 19067 921 | 19477 922 | 19191 923 | 18921 924 | 18940 925 | 19578 926 | 19183 927 | 19004 928 | 19072 929 | 19710 930 | 19005 931 | 19610 932 | 18955 933 | 19457 934 | 19148 935 | 18859 936 | 18993 937 | 19642 938 | 19047 939 | 19418 940 | 19535 941 | 19600 942 | 19312 943 | 19039 944 | 19028 945 | 18879 946 | 19003 947 | 19026 948 | 19013 949 | 19149 950 | 19177 951 | 19217 952 | 18987 953 | 19354 954 | 19525 955 | 19202 956 | 19084 957 | 19032 958 | 18749 959 | 18867 960 | 19048 961 | 18999 962 | 19260 963 | 19630 964 | 18727 965 | 19356 966 | 19083 967 | 18926 968 | 18789 969 | 19370 970 | 18861 971 | 19311 972 | 19557 973 | 19531 974 | 19436 975 | 19140 976 | 19310 977 | 19501 978 | 18721 979 | 19604 980 | 19713 981 | 19262 982 | 19563 983 | 19507 984 | 19440 985 | 19572 986 | 19513 987 | 19515 988 | 19518 989 | 19421 990 | 19470 991 | 19499 992 | 19663 993 | 19508 994 | 18871 995 | 19528 996 | 19500 997 | 19307 998 | 19288 999 | 19594 1000 | 19271 1001 | -------------------------------------------------------------------------------- /gcn/data/ind.pubmed.tx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/gcn/data/ind.pubmed.tx -------------------------------------------------------------------------------- /gcn/data/ind.pubmed.ty: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/gcn/data/ind.pubmed.ty -------------------------------------------------------------------------------- /gcn/data/ind.pubmed.x: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/gcn/data/ind.pubmed.x -------------------------------------------------------------------------------- /gcn/data/ind.pubmed.y: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CVEO/OBIC-GCN/13252b9e5371aae96dfa0c30f1fa5de3223b696d/gcn/data/ind.pubmed.y -------------------------------------------------------------------------------- /gcn/inits.py: -------------------------------------------------------------------------------- 1 | import tensorflow as tf 2 | import numpy as np 3 | 4 | 5 | def uniform(shape, scale=0.05, name=None): 6 | """Uniform init.""" 7 | initial = tf.random_uniform(shape, minval=-scale, maxval=scale, dtype=tf.float32) 8 | return tf.Variable(initial, name=name) 9 | 10 | 11 | def glorot(shape, name=None): 12 | """Glorot & Bengio (AISTATS 2010) init.""" 13 | init_range = np.sqrt(6.0/(shape[0]+shape[1])) 14 | initial = tf.random_uniform(shape, minval=-init_range, maxval=init_range, dtype=tf.float32) 15 | return tf.Variable(initial, name=name) 16 | 17 | 18 | def zeros(shape, name=None): 19 | """All zeros.""" 20 | initial = tf.zeros(shape, dtype=tf.float32) 21 | return tf.Variable(initial, name=name) 22 | 23 | 24 | def ones(shape, name=None): 25 | """All ones.""" 26 | initial = tf.ones(shape, dtype=tf.float32) 27 | return tf.Variable(initial, name=name) -------------------------------------------------------------------------------- /gcn/layers.py: -------------------------------------------------------------------------------- 1 | from gcn.inits import * 2 | import tensorflow as tf 3 | 4 | flags = tf.app.flags 5 | FLAGS = flags.FLAGS 6 | 7 | # global unique layer ID dictionary for layer name assignment 8 | _LAYER_UIDS = {} 9 | 10 | 11 | def get_layer_uid(layer_name=''): 12 | """Helper function, assigns unique layer IDs.""" 13 | if layer_name not in _LAYER_UIDS: 14 | _LAYER_UIDS[layer_name] = 1 15 | return 1 16 | else: 17 | _LAYER_UIDS[layer_name] += 1 18 | return _LAYER_UIDS[layer_name] 19 | 20 | 21 | def sparse_dropout(x, keep_prob, noise_shape): 22 | """Dropout for sparse tensors.""" 23 | random_tensor = keep_prob 24 | random_tensor += tf.random_uniform(noise_shape) 25 | dropout_mask = tf.cast(tf.floor(random_tensor), dtype=tf.bool) 26 | pre_out = tf.sparse_retain(x, dropout_mask) 27 | return pre_out * (1./keep_prob) 28 | 29 | 30 | def dot(x, y, sparse=False): 31 | """Wrapper for tf.matmul (sparse vs dense).""" 32 | if sparse: 33 | res = tf.sparse_tensor_dense_matmul(x, y) 34 | else: 35 | res = tf.matmul(x, y) 36 | return res 37 | 38 | 39 | class Layer(object): 40 | """Base layer class. Defines basic API for all layer objects. 41 | Implementation inspired by keras (http://keras.io). 42 | 43 | # Properties 44 | name: String, defines the variable scope of the layer. 45 | logging: Boolean, switches Tensorflow histogram logging on/off 46 | 47 | # Methods 48 | _call(inputs): Defines computation graph of layer 49 | (i.e. takes input, returns output) 50 | __call__(inputs): Wrapper for _call() 51 | _log_vars(): Log all variables 52 | """ 53 | 54 | def __init__(self, **kwargs): 55 | allowed_kwargs = {'name', 'logging'} 56 | for kwarg in kwargs.keys(): 57 | assert kwarg in allowed_kwargs, 'Invalid keyword argument: ' + kwarg 58 | name = kwargs.get('name') 59 | if not name: 60 | layer = self.__class__.__name__.lower() 61 | name = layer + '_' + str(get_layer_uid(layer)) 62 | self.name = name 63 | self.vars = {} 64 | logging = kwargs.get('logging', False) 65 | self.logging = logging 66 | self.sparse_inputs = False 67 | 68 | def _call(self, inputs): 69 | return inputs 70 | 71 | def __call__(self, inputs): 72 | with tf.name_scope(self.name): 73 | if self.logging and not self.sparse_inputs: 74 | tf.summary.histogram(self.name + '/inputs', inputs) 75 | outputs = self._call(inputs) 76 | if self.logging: 77 | tf.summary.histogram(self.name + '/outputs', outputs) 78 | return outputs 79 | 80 | def _log_vars(self): 81 | for var in self.vars: 82 | tf.summary.histogram(self.name + '/vars/' + var, self.vars[var]) 83 | 84 | 85 | class Dense(Layer): 86 | """Dense layer.""" 87 | def __init__(self, input_dim, output_dim, placeholders, dropout=0., sparse_inputs=False, 88 | act=tf.nn.relu, bias=False, featureless=False, **kwargs): 89 | super(Dense, self).__init__(**kwargs) 90 | 91 | if dropout: 92 | self.dropout = placeholders['dropout'] 93 | else: 94 | self.dropout = 0. 95 | 96 | self.act = act 97 | self.sparse_inputs = sparse_inputs 98 | self.featureless = featureless 99 | self.bias = bias 100 | 101 | # helper variable for sparse dropout 102 | self.num_features_nonzero = placeholders['num_features_nonzero'] 103 | 104 | with tf.variable_scope(self.name + '_vars'): 105 | self.vars['weights'] = glorot([input_dim, output_dim], 106 | name='weights') 107 | if self.bias: 108 | self.vars['bias'] = zeros([output_dim], name='bias') 109 | 110 | if self.logging: 111 | self._log_vars() 112 | 113 | def _call(self, inputs): 114 | x = inputs 115 | 116 | # dropout 117 | if self.sparse_inputs: 118 | x = sparse_dropout(x, 1-self.dropout, self.num_features_nonzero) 119 | else: 120 | x = tf.nn.dropout(x, 1-self.dropout) 121 | 122 | # transform 123 | output = dot(x, self.vars['weights'], sparse=self.sparse_inputs) 124 | 125 | # bias 126 | if self.bias: 127 | output += self.vars['bias'] 128 | 129 | return self.act(output) 130 | 131 | 132 | class GraphConvolution(Layer): 133 | """Graph convolution layer.""" 134 | def __init__(self, input_dim, output_dim, placeholders, dropout=0., 135 | sparse_inputs=False, act=tf.nn.relu, bias=False, 136 | featureless=False, **kwargs): 137 | super(GraphConvolution, self).__init__(**kwargs) 138 | 139 | if dropout: 140 | self.dropout = placeholders['dropout'] 141 | else: 142 | self.dropout = 0. 143 | 144 | self.act = act 145 | self.support = placeholders['support'] 146 | self.sparse_inputs = sparse_inputs 147 | self.featureless = featureless 148 | self.bias = bias 149 | 150 | # helper variable for sparse dropout 151 | self.num_features_nonzero = placeholders['num_features_nonzero'] 152 | 153 | with tf.variable_scope(self.name + '_vars'): 154 | for i in range(len(self.support)): 155 | self.vars['weights_' + str(i)] = glorot([input_dim, output_dim], 156 | name='weights_' + str(i)) 157 | if self.bias: 158 | self.vars['bias'] = zeros([output_dim], name='bias') 159 | 160 | if self.logging: 161 | self._log_vars() 162 | 163 | def _call(self, inputs): 164 | x = inputs 165 | 166 | # dropout 167 | if self.sparse_inputs: 168 | x = sparse_dropout(x, 1-self.dropout, self.num_features_nonzero) 169 | else: 170 | x = tf.nn.dropout(x, 1-self.dropout) 171 | 172 | # convolve 173 | supports = list() 174 | for i in range(len(self.support)): 175 | if not self.featureless: 176 | pre_sup = dot(x, self.vars['weights_' + str(i)], 177 | sparse=self.sparse_inputs) 178 | else: 179 | pre_sup = self.vars['weights_' + str(i)] 180 | support = dot(self.support[i], pre_sup, sparse=True) 181 | supports.append(support) 182 | output = tf.add_n(supports) 183 | 184 | # bias 185 | if self.bias: 186 | output += self.vars['bias'] 187 | 188 | return self.act(output) 189 | -------------------------------------------------------------------------------- /gcn/metrics.py: -------------------------------------------------------------------------------- 1 | import tensorflow as tf 2 | 3 | 4 | def masked_softmax_cross_entropy(preds, labels, mask): 5 | """Softmax cross-entropy loss with masking.""" 6 | loss = tf.nn.softmax_cross_entropy_with_logits(logits=preds, labels=labels) 7 | mask = tf.cast(mask, dtype=tf.float32) 8 | mask /= tf.reduce_mean(mask) 9 | loss *= mask 10 | return tf.reduce_mean(loss) 11 | 12 | 13 | def masked_accuracy(preds, labels, mask): 14 | """Accuracy with masking.""" 15 | correct_prediction = tf.equal(tf.argmax(preds, 1), tf.argmax(labels, 1)) 16 | accuracy_all = tf.cast(correct_prediction, tf.float32) 17 | mask = tf.cast(mask, dtype=tf.float32) 18 | mask /= tf.reduce_mean(mask) 19 | accuracy_all *= mask 20 | return tf.reduce_mean(accuracy_all) 21 | -------------------------------------------------------------------------------- /gcn/models.py: -------------------------------------------------------------------------------- 1 | from gcn.layers import * 2 | from gcn.metrics import * 3 | 4 | flags = tf.app.flags 5 | FLAGS = flags.FLAGS 6 | 7 | 8 | class Model(object): 9 | def __init__(self, **kwargs): 10 | allowed_kwargs = {'name', 'logging'} 11 | for kwarg in kwargs.keys(): 12 | assert kwarg in allowed_kwargs, 'Invalid keyword argument: ' + kwarg 13 | name = kwargs.get('name') 14 | if not name: 15 | name = self.__class__.__name__.lower() 16 | self.name = name 17 | 18 | logging = kwargs.get('logging', False) 19 | self.logging = logging 20 | 21 | self.vars = {} 22 | self.placeholders = {} 23 | 24 | self.layers = [] 25 | self.activations = [] 26 | 27 | self.inputs = None 28 | self.outputs = None 29 | 30 | self.loss = 0 31 | self.accuracy = 0 32 | self.optimizer = None 33 | self.opt_op = None 34 | 35 | def _build(self): 36 | raise NotImplementedError 37 | 38 | def build(self): 39 | """ Wrapper for _build() """ 40 | with tf.variable_scope(self.name): 41 | self._build() 42 | 43 | # Build sequential layer model 44 | self.activations.append(self.inputs) 45 | for layer in self.layers: 46 | hidden = layer(self.activations[-1]) 47 | self.activations.append(hidden) 48 | self.outputs = self.activations[-1] 49 | 50 | # Store model variables for easy access 51 | variables = tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES, scope=self.name) 52 | self.vars = {var.name: var for var in variables} 53 | 54 | # Build metrics 55 | self._loss() 56 | self._accuracy() 57 | 58 | self.opt_op = self.optimizer.minimize(self.loss) 59 | 60 | def predict(self): 61 | pass 62 | 63 | def _loss(self): 64 | raise NotImplementedError 65 | 66 | def _accuracy(self): 67 | raise NotImplementedError 68 | 69 | def save(self, sess=None): 70 | if not sess: 71 | raise AttributeError("TensorFlow session not provided.") 72 | saver = tf.train.Saver(self.vars) 73 | save_path = saver.save(sess, "tmp/%s.ckpt" % self.name) 74 | print("Model saved in file: %s" % save_path) 75 | 76 | def load(self, sess=None): 77 | if not sess: 78 | raise AttributeError("TensorFlow session not provided.") 79 | saver = tf.train.Saver(self.vars) 80 | save_path = "tmp/%s.ckpt" % self.name 81 | saver.restore(sess, save_path) 82 | print("Model restored from file: %s" % save_path) 83 | 84 | 85 | class MLP(Model): 86 | def __init__(self, placeholders, input_dim, **kwargs): 87 | super(MLP, self).__init__(**kwargs) 88 | 89 | self.inputs = placeholders['features'] 90 | self.input_dim = input_dim 91 | # self.input_dim = self.inputs.get_shape().as_list()[1] # To be supported in future Tensorflow versions 92 | self.output_dim = placeholders['labels'].get_shape().as_list()[1] 93 | self.placeholders = placeholders 94 | 95 | self.optimizer = tf.train.AdamOptimizer(learning_rate=FLAGS.learning_rate) 96 | 97 | self.build() 98 | 99 | def _loss(self): 100 | # Weight decay loss 101 | for var in self.layers[0].vars.values(): 102 | self.loss += FLAGS.weight_decay * tf.nn.l2_loss(var) 103 | 104 | # Cross entropy error 105 | self.loss += masked_softmax_cross_entropy(self.outputs, self.placeholders['labels'], 106 | self.placeholders['labels_mask']) 107 | 108 | def _accuracy(self): 109 | self.accuracy = masked_accuracy(self.outputs, self.placeholders['labels'], 110 | self.placeholders['labels_mask']) 111 | 112 | def _build(self): 113 | self.layers.append(Dense(input_dim=self.input_dim, 114 | output_dim=FLAGS.nodes, 115 | placeholders=self.placeholders, 116 | act=tf.nn.relu, 117 | dropout=True, 118 | sparse_inputs=True, 119 | logging=self.logging)) 120 | 121 | for i in range(FLAGS.layers - 1): 122 | self.layers.append(Dense(input_dim=FLAGS.nodes, 123 | output_dim=FLAGS.nodes, 124 | placeholders=self.placeholders, 125 | act=tf.nn.relu, 126 | dropout=True, 127 | logging=self.logging)) 128 | 129 | self.layers.append(Dense(input_dim=FLAGS.nodes, 130 | output_dim=self.output_dim, 131 | placeholders=self.placeholders, 132 | act=lambda x: x, 133 | dropout=True, 134 | logging=self.logging)) 135 | 136 | def predict(self): 137 | return tf.nn.softmax(self.outputs) 138 | 139 | 140 | class GCN(Model): 141 | def __init__(self, placeholders, input_dim, **kwargs): 142 | super(GCN, self).__init__(**kwargs) 143 | 144 | self.inputs = placeholders['features'] 145 | self.input_dim = input_dim 146 | # self.input_dim = self.inputs.get_shape().as_list()[1] # To be supported in future Tensorflow versions 147 | self.output_dim = placeholders['labels'].get_shape().as_list()[1] 148 | self.placeholders = placeholders 149 | 150 | self.optimizer = tf.train.AdamOptimizer(learning_rate=FLAGS.learning_rate) 151 | self.build() 152 | 153 | def _loss(self): 154 | # Weight decay loss 155 | for var in self.layers[0].vars.values(): 156 | self.loss += FLAGS.weight_decay * tf.nn.l2_loss(var) 157 | 158 | # Cross entropy error 159 | self.loss += masked_softmax_cross_entropy(self.outputs, self.placeholders['labels'], 160 | self.placeholders['labels_mask']) 161 | 162 | def _accuracy(self): 163 | self.accuracy = masked_accuracy(self.outputs, self.placeholders['labels'], 164 | self.placeholders['labels_mask']) 165 | 166 | def _build(self): 167 | 168 | self.layers.append(GraphConvolution(input_dim=self.input_dim, 169 | output_dim=FLAGS.nodes, 170 | placeholders=self.placeholders, 171 | act=tf.nn.relu, 172 | dropout=True, 173 | sparse_inputs=True, 174 | logging=self.logging)) 175 | 176 | for i in range(FLAGS.layers - 1): 177 | self.layers.append(GraphConvolution(input_dim=FLAGS.nodes, 178 | output_dim=FLAGS.nodes, 179 | placeholders=self.placeholders, 180 | act=tf.nn.relu, 181 | dropout=True, 182 | logging=self.logging)) 183 | 184 | self.layers.append(GraphConvolution(input_dim=FLAGS.nodes, 185 | output_dim=self.output_dim, 186 | placeholders=self.placeholders, 187 | act=lambda x: x, 188 | dropout=True, 189 | logging=self.logging)) 190 | 191 | def predict(self): 192 | return tf.nn.softmax(self.outputs) 193 | -------------------------------------------------------------------------------- /gcn/train.py: -------------------------------------------------------------------------------- 1 | from __future__ import division 2 | from __future__ import print_function 3 | 4 | import time 5 | import tensorflow as tf 6 | 7 | from gcn.utils import * 8 | from gcn.models import GCN, MLP 9 | 10 | # Set random seed 11 | seed = 123 12 | np.random.seed(seed) 13 | tf.set_random_seed(seed) 14 | 15 | # Settings 16 | flags = tf.app.flags 17 | FLAGS = flags.FLAGS 18 | flags.DEFINE_string('dataset', 'cora', 'Dataset string.') # 'cora', 'citeseer', 'pubmed' 19 | flags.DEFINE_string('model', 'gcn', 'Model string.') # 'gcn', 'gcn_cheby', 'dense' 20 | flags.DEFINE_float('learning_rate', 0.01, 'Initial learning rate.') 21 | flags.DEFINE_integer('epochs', 200, 'Number of epochs to train.') 22 | flags.DEFINE_integer('nodes', 16, 'Number of units in hidden layer 1.') 23 | flags.DEFINE_float('dropout', 0.5, 'Dropout rate (1 - keep probability).') 24 | flags.DEFINE_float('weight_decay', 5e-4, 'Weight for L2 loss on embedding matrix.') 25 | flags.DEFINE_integer('early_stopping', 10, 'Tolerance for early stopping (# of epochs).') 26 | flags.DEFINE_integer('max_degree', 3, 'Maximum Chebyshev polynomial degree.') 27 | 28 | # Load data 29 | adj, features, y_train, y_val, y_test, train_mask, val_mask, test_mask = load_data(FLAGS.dataset) 30 | print(repr(adj)) 31 | print(repr(features)) 32 | print(repr(y_train)) 33 | print(repr(train_mask)) 34 | print(repr(y_val)) 35 | print(repr(val_mask)) 36 | exit() 37 | 38 | # Some preprocessing 39 | features = preprocess_features(features) 40 | if FLAGS.model == 'gcn': 41 | support = [preprocess_adj(adj)] 42 | num_supports = 1 43 | model_func = GCN 44 | elif FLAGS.model == 'gcn_cheby': 45 | support = chebyshev_polynomials(adj, FLAGS.max_degree) 46 | num_supports = 1 + FLAGS.max_degree 47 | model_func = GCN 48 | elif FLAGS.model == 'dense': 49 | support = [preprocess_adj(adj)] # Not used 50 | num_supports = 1 51 | model_func = MLP 52 | else: 53 | raise ValueError('Invalid argument for model: ' + str(FLAGS.model)) 54 | 55 | # Define placeholders 56 | placeholders = { 57 | 'support': [tf.sparse_placeholder(tf.float32) for _ in range(num_supports)], 58 | 'features': tf.sparse_placeholder(tf.float32, shape=tf.constant(features[2], dtype=tf.int64)), 59 | 'labels': tf.placeholder(tf.float32, shape=(None, y_train.shape[1])), 60 | 'labels_mask': tf.placeholder(tf.int32), 61 | 'dropout': tf.placeholder_with_default(0., shape=()), 62 | 'num_features_nonzero': tf.placeholder(tf.int32) # helper variable for sparse dropout 63 | } 64 | 65 | # Create model 66 | model = model_func(placeholders, input_dim=features[2][1], logging=True) 67 | 68 | # Initialize session 69 | sess = tf.Session() 70 | 71 | 72 | # Define model evaluation function 73 | def evaluate(features, support, labels, mask, placeholders): 74 | t_test = time.time() 75 | feed_dict_val = construct_feed_dict(features, support, labels, mask, placeholders) 76 | outs_val = sess.run([model.loss, model.accuracy], feed_dict=feed_dict_val) 77 | return outs_val[0], outs_val[1], (time.time() - t_test) 78 | 79 | 80 | # Init variables 81 | sess.run(tf.global_variables_initializer()) 82 | 83 | cost_val = [] 84 | 85 | # Train model 86 | for epoch in range(FLAGS.epochs): 87 | 88 | t = time.time() 89 | # Construct feed dictionary 90 | feed_dict = construct_feed_dict(features, support, y_train, train_mask, placeholders) 91 | feed_dict.update({placeholders['dropout']: FLAGS.dropout}) 92 | 93 | # Training step 94 | outs = sess.run([model.opt_op, model.loss, model.accuracy], feed_dict=feed_dict) 95 | 96 | # Validation 97 | cost, acc, duration = evaluate(features, support, y_val, val_mask, placeholders) 98 | cost_val.append(cost) 99 | 100 | # Print results 101 | print("Epoch:", '%04d' % (epoch + 1), "train_loss=", "{:.5f}".format(outs[1]), 102 | "train_acc=", "{:.5f}".format(outs[2]), "val_loss=", "{:.5f}".format(cost), 103 | "val_acc=", "{:.5f}".format(acc), "time=", "{:.5f}".format(time.time() - t)) 104 | 105 | if epoch > FLAGS.early_stopping and cost_val[-1] > np.mean(cost_val[-(FLAGS.early_stopping+1):-1]): 106 | print("Early stopping...") 107 | break 108 | 109 | print("Optimization Finished!") 110 | 111 | # Testing 112 | test_cost, test_acc, test_duration = evaluate(features, support, y_test, test_mask, placeholders) 113 | print("Test set results:", "cost=", "{:.5f}".format(test_cost), 114 | "accuracy=", "{:.5f}".format(test_acc), "time=", "{:.5f}".format(test_duration)) 115 | -------------------------------------------------------------------------------- /gcn/utils.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import pickle as pkl 3 | import networkx as nx 4 | import scipy.sparse as sp 5 | from scipy.sparse.linalg.eigen.arpack import eigsh 6 | import sys 7 | 8 | 9 | def parse_index_file(filename): 10 | """Parse index file.""" 11 | index = [] 12 | for line in open(filename): 13 | index.append(int(line.strip())) 14 | return index 15 | 16 | 17 | def sample_mask(idx, l): 18 | """Create mask.""" 19 | mask = np.zeros(l) 20 | mask[idx] = 1 21 | return np.array(mask, dtype=np.bool) 22 | 23 | 24 | def load_data(dataset_str): 25 | """Load data.""" 26 | names = ['x', 'y', 'tx', 'ty', 'allx', 'ally', 'graph'] 27 | objects = [] 28 | for i in range(len(names)): 29 | with open("data/ind.{}.{}".format(dataset_str, names[i]), 'rb') as f: 30 | if sys.version_info > (3, 0): 31 | objects.append(pkl.load(f, encoding='latin1')) 32 | else: 33 | objects.append(pkl.load(f)) 34 | 35 | x, y, tx, ty, allx, ally, graph = tuple(objects) 36 | test_idx_reorder = parse_index_file("data/ind.{}.test.index".format(dataset_str)) 37 | test_idx_range = np.sort(test_idx_reorder) 38 | 39 | if dataset_str == 'citeseer': 40 | # Fix citeseer dataset (there are some isolated nodes in the graph) 41 | # Find isolated nodes, add them as zero-vecs into the right position 42 | test_idx_range_full = range(min(test_idx_reorder), max(test_idx_reorder)+1) 43 | tx_extended = sp.lil_matrix((len(test_idx_range_full), x.shape[1])) 44 | tx_extended[test_idx_range-min(test_idx_range), :] = tx 45 | tx = tx_extended 46 | ty_extended = np.zeros((len(test_idx_range_full), y.shape[1])) 47 | ty_extended[test_idx_range-min(test_idx_range), :] = ty 48 | ty = ty_extended 49 | 50 | features = sp.vstack((allx, tx)).tolil() 51 | features[test_idx_reorder, :] = features[test_idx_range, :] 52 | adj = nx.adjacency_matrix(nx.from_dict_of_lists(graph)) 53 | 54 | labels = np.vstack((ally, ty)) 55 | labels[test_idx_reorder, :] = labels[test_idx_range, :] 56 | 57 | idx_test = test_idx_range.tolist() 58 | idx_train = range(len(y)) 59 | idx_val = range(len(y), len(y)+500) 60 | 61 | train_mask = sample_mask(idx_train, labels.shape[0]) 62 | val_mask = sample_mask(idx_val, labels.shape[0]) 63 | test_mask = sample_mask(idx_test, labels.shape[0]) 64 | 65 | y_train = np.zeros(labels.shape) 66 | y_val = np.zeros(labels.shape) 67 | y_test = np.zeros(labels.shape) 68 | y_train[train_mask, :] = labels[train_mask, :] 69 | y_val[val_mask, :] = labels[val_mask, :] 70 | y_test[test_mask, :] = labels[test_mask, :] 71 | 72 | return adj, features, y_train, y_val, y_test, train_mask, val_mask, test_mask 73 | 74 | 75 | def sparse_to_tuple(sparse_mx): 76 | """Convert sparse matrix to tuple representation.""" 77 | def to_tuple(mx): 78 | if not sp.isspmatrix_coo(mx): 79 | mx = mx.tocoo() 80 | coords = np.vstack((mx.row, mx.col)).transpose() 81 | values = mx.data 82 | shape = mx.shape 83 | return coords, values, shape 84 | 85 | if isinstance(sparse_mx, list): 86 | for i in range(len(sparse_mx)): 87 | sparse_mx[i] = to_tuple(sparse_mx[i]) 88 | else: 89 | sparse_mx = to_tuple(sparse_mx) 90 | 91 | return sparse_mx 92 | 93 | 94 | def preprocess_features(features): 95 | """Row-normalize feature matrix and convert to tuple representation""" 96 | rowsum = np.array(features.sum(1)) 97 | r_inv = np.power(rowsum, -1).flatten() 98 | r_inv[np.isinf(r_inv)] = 0. 99 | r_mat_inv = sp.diags(r_inv) 100 | features = r_mat_inv.dot(features) 101 | return sparse_to_tuple(features) 102 | 103 | 104 | def normalize_adj(adj): 105 | """Symmetrically normalize adjacency matrix.""" 106 | adj = sp.coo_matrix(adj) 107 | rowsum = np.array(adj.sum(1)) 108 | d_inv_sqrt = np.power(rowsum, -0.5).flatten() 109 | d_inv_sqrt[np.isinf(d_inv_sqrt)] = 0. 110 | d_mat_inv_sqrt = sp.diags(d_inv_sqrt) 111 | return adj.dot(d_mat_inv_sqrt).transpose().dot(d_mat_inv_sqrt).tocoo() 112 | 113 | 114 | def preprocess_adj(adj): 115 | """Preprocessing of adjacency matrix for simple GCN model and conversion to tuple representation.""" 116 | adj_normalized = normalize_adj(adj + sp.eye(adj.shape[0])) 117 | return sparse_to_tuple(adj_normalized) 118 | 119 | 120 | def construct_feed_dict(features, support, labels, labels_mask, placeholders): 121 | """Construct feed dictionary.""" 122 | feed_dict = dict() 123 | feed_dict.update({placeholders['labels']: labels}) 124 | feed_dict.update({placeholders['labels_mask']: labels_mask}) 125 | feed_dict.update({placeholders['features']: features}) 126 | feed_dict.update({placeholders['support'][i]: support[i] for i in range(len(support))}) 127 | feed_dict.update({placeholders['num_features_nonzero']: features[1].shape}) 128 | return feed_dict 129 | 130 | 131 | def chebyshev_polynomials(adj, k): 132 | """Calculate Chebyshev polynomials up to order k. Return a list of sparse matrices (tuple representation).""" 133 | print("Calculating Chebyshev polynomials up to order {}...".format(k)) 134 | 135 | adj_normalized = normalize_adj(adj) 136 | laplacian = sp.eye(adj.shape[0]) - adj_normalized 137 | largest_eigval, _ = eigsh(laplacian, 1, which='LM') 138 | scaled_laplacian = (2. / largest_eigval[0]) * laplacian - sp.eye(adj.shape[0]) 139 | 140 | t_k = list() 141 | t_k.append(sp.eye(adj.shape[0])) 142 | t_k.append(scaled_laplacian) 143 | 144 | def chebyshev_recurrence(t_k_minus_one, t_k_minus_two, scaled_lap): 145 | s_lap = sp.csr_matrix(scaled_lap, copy=True) 146 | return 2 * s_lap.dot(t_k_minus_one) - t_k_minus_two 147 | 148 | for i in range(2, k+1): 149 | t_k.append(chebyshev_recurrence(t_k[-1], t_k[-2], scaled_laplacian)) 150 | 151 | return sparse_to_tuple(t_k) 152 | -------------------------------------------------------------------------------- /obic.py: -------------------------------------------------------------------------------- 1 | from __future__ import division 2 | from __future__ import print_function 3 | 4 | import time 5 | import tensorflow as tf 6 | from sklearn.decomposition import TruncatedSVD, PCA 7 | from sklearn import metrics 8 | from scipy import sparse 9 | 10 | from gcn.utils import * 11 | from gcn.models import GCN, MLP 12 | 13 | from utils import load_data 14 | 15 | 16 | 17 | 18 | 19 | ### 20 | # python obic.py --model gcn_cheby --nodes 64 --layers 1 --dropout 0.3 --max_degree 3 --svd 20 21 | ### 22 | 23 | # Settings 24 | flags = tf.app.flags 25 | FLAGS = flags.FLAGS 26 | flags.DEFINE_string('model', 'gcn', 'Model string.') # 'gcn', 'gcn_cheby', 'dense' 27 | flags.DEFINE_string('npz', 'dd', 'Input npz data.') 28 | flags.DEFINE_string('logfile', 'ff', 'Output log file.') 29 | flags.DEFINE_string('resfile', 'rr', 'Output result file.') 30 | flags.DEFINE_float('learning_rate', 0.01, 'Initial learning rate.') 31 | flags.DEFINE_integer('epochs', 200, 'Number of epochs to train.') 32 | flags.DEFINE_integer('nodes', 32, 'Number of units in hidden layer.') 33 | flags.DEFINE_integer('layers', 1, 'Number of hidden layers.') 34 | flags.DEFINE_float('dropout', 0.3, 'Dropout rate (1 - keep probability).') 35 | flags.DEFINE_float('weight_decay', 5e-4, 'Weight for L2 loss on embedding matrix.') 36 | flags.DEFINE_integer('early_stopping', 1000, 'Tolerance for early stopping (# of epochs).') 37 | flags.DEFINE_integer('max_degree', 1, 'Maximum Chebyshev polynomial degree.') 38 | flags.DEFINE_integer('svd', 0, 'Reduce dimensions (0 means no svd)') 39 | flags.DEFINE_integer('seed', 123, 'random seed.') 40 | 41 | # Set random seed 42 | # seed = 123 43 | np.random.seed(int(FLAGS.seed)) 44 | tf.set_random_seed(int(FLAGS.seed)) 45 | 46 | # log & result file 47 | date_now = time.strftime("%Y-%m-%d %H-%M-%S", time.localtime()) 48 | 49 | log_file = open(str(FLAGS.logfile), 'a') 50 | log_file.write(date_now + '\n') 51 | log_file.write(' '.join(sys.argv) + '\n') 52 | 53 | result_file = open(str(FLAGS.resfile), 'a') 54 | result_file.write(date_now + '\n') 55 | result_file.write(' '.join(sys.argv) + '\n') 56 | 57 | # load data 58 | # adj, features, y_train, train_mask, y_val, val_mask = load_data("data/tj/lzw.tif", "data/tj/features.txt", "data/tj/train.txt", "data/tj/test.txt") 59 | 60 | # data = np.load('data/ah/ah_subset_50.npz') 61 | # data = np.load('data/ah/ah_subset_20.npz') 62 | # data = np.load('data/ah/ah_subset_10.npz') 63 | # data = np.load('data/ah/ah_subset_6.npz') 64 | # data = np.load('data/ah/ah_subset_5.npz') 65 | 66 | # data = np.load('data/fj/fj.npz', allow_pickle=True) 67 | # data = np.load('data/ah/ah_1_1_1_1.npz', allow_pickle=True) 68 | data = np.load(str(FLAGS.npz), allow_pickle=True) 69 | 70 | adj = data['adj'][()] 71 | features = data['features'][()] 72 | y_train = data['y_train'][()] 73 | train_mask = data['train_mask'][()] 74 | y_val = data['y_val'][()] 75 | val_mask = data['val_mask'][()] 76 | y_test = data['y_test'][()] 77 | test_mask = data['test_mask'][()] 78 | 79 | if FLAGS.svd > 0: 80 | svd = TruncatedSVD(n_components = FLAGS.svd, random_state=int(FLAGS.seed)) 81 | svd.fit(features) 82 | features = sparse.lil_matrix(svd.transform(features) , dtype='float32') 83 | 84 | 85 | # pca = PCA(n_components=20, random_state=seed) 86 | # features = features.toarray() 87 | # pca.fit(features) 88 | # features = sparse.lil_matrix(pca.transform(features) , dtype='float32') 89 | 90 | # print(repr(adj)) 91 | # print(repr(features)) 92 | # print(repr(y_train)) 93 | # print(repr(train_mask)) 94 | # print(y_val.shape) 95 | # print(repr(val_mask)) 96 | # print(y_test.shape) 97 | # exit() 98 | 99 | # Some preprocessing 100 | features = preprocess_features(features) 101 | if FLAGS.model == 'gcn': 102 | support = [preprocess_adj(adj)] 103 | num_supports = 1 104 | model_func = GCN 105 | elif FLAGS.model == 'gcn_cheby': 106 | support = chebyshev_polynomials(adj, FLAGS.max_degree) 107 | num_supports = 1 + FLAGS.max_degree 108 | model_func = GCN 109 | elif FLAGS.model == 'dense': 110 | support = [preprocess_adj(adj)] # Not used 111 | num_supports = 1 112 | model_func = MLP 113 | else: 114 | raise ValueError('Invalid argument for model: ' + str(FLAGS.model)) 115 | 116 | # Define placeholders 117 | placeholders = { 118 | 'support': [tf.sparse_placeholder(tf.float32) for _ in range(num_supports)], 119 | 'features': tf.sparse_placeholder(tf.float32, shape=tf.constant(features[2], dtype=tf.int64)), 120 | 'labels': tf.placeholder(tf.float32, shape=(None, y_train.shape[1])), 121 | 'labels_mask': tf.placeholder(tf.int32), 122 | 'dropout': tf.placeholder_with_default(0., shape=()), 123 | 'num_features_nonzero': tf.placeholder(tf.int32) # helper variable for sparse dropout 124 | } 125 | 126 | # Create model 127 | model = model_func(placeholders, input_dim=features[2][1], logging=True) 128 | 129 | # Initialize session 130 | sess = tf.Session() 131 | 132 | 133 | # Define model evaluation function 134 | def evaluate(features, support, labels, mask, placeholders): 135 | t_test = time.time() 136 | feed_dict_val = construct_feed_dict(features, support, labels, mask, placeholders) 137 | outs_val = sess.run([model.loss, model.accuracy], feed_dict=feed_dict_val) 138 | return outs_val[0], outs_val[1], (time.time() - t_test) 139 | 140 | 141 | # Init variables 142 | sess.run(tf.global_variables_initializer()) 143 | 144 | cost_val = [] 145 | 146 | # Train model 147 | best_voa = 0. 148 | t_start = time.time() 149 | 150 | for epoch in range(FLAGS.epochs): 151 | # Construct feed dictionary 152 | feed_dict = construct_feed_dict(features, support, y_train, train_mask, placeholders) 153 | feed_dict.update({placeholders['dropout']: FLAGS.dropout}) 154 | 155 | # Training step 156 | outs = sess.run([model.opt_op, model.loss, model.accuracy], feed_dict=feed_dict) 157 | 158 | # Validation 159 | cost, acc, duration = evaluate(features, support, y_val, val_mask, placeholders) 160 | cost_val.append(cost) 161 | 162 | log_file.write('{} {} {} {} {} {} {} {} {} {}\n'.format("Epoch:", '%04d' % (epoch + 1), "train_loss=", "{:.5f}".format(outs[1]), 163 | "train_acc=", "{:.5f}".format(outs[2]), "val_loss=", "{:.5f}".format(cost), 164 | "val_acc=", "{:.5f}".format(acc))) 165 | 166 | if acc > best_voa: 167 | best_voa = acc 168 | 169 | if epoch > FLAGS.early_stopping and cost_val[-1] > np.mean(cost_val[-(FLAGS.early_stopping+1):-1]): 170 | print("Early stopping...") 171 | break 172 | 173 | total_time = time.time() - t_start 174 | 175 | pred = sess.run(tf.argmax(model.outputs, 1), construct_feed_dict(features, support, y_test, test_mask, placeholders)) 176 | y_test = np.argmax(y_test, axis=1) 177 | test_mask = test_mask.astype('float') 178 | 179 | oa = metrics.accuracy_score(y_test, pred, sample_weight=test_mask) 180 | kappa = metrics.cohen_kappa_score(y_test, pred, sample_weight=test_mask) 181 | fscore = metrics.f1_score(y_test, pred, average='weighted', sample_weight=test_mask) 182 | 183 | print("Optimization Finished!, best VOA:", best_voa, "OA:", oa, 'Kappa', kappa, 'F1-score', fscore, "total time:", "{:.5f}s".format(total_time)) 184 | 185 | # log 186 | log_file.write('\n\n\n') 187 | log_file.close() 188 | 189 | result_file.write('best VOA:\t{}\tOA:\t{}\tKappa\t{}\tF1-score\t{}\ttotal time:\t{}\n\n'.format(best_voa, oa, kappa, fscore, "{:.5f}".format(total_time))) 190 | result_file.close() -------------------------------------------------------------------------------- /svm.py: -------------------------------------------------------------------------------- 1 | 2 | import time 3 | import numpy as np 4 | import tensorflow as tf 5 | from sklearn import svm, metrics 6 | from sklearn import naive_bayes 7 | from sklearn.neural_network import MLPClassifier 8 | from sklearn.decomposition import TruncatedSVD, PCA 9 | from sklearn.ensemble import RandomForestClassifier 10 | from xgboost import XGBClassifier 11 | from scipy import sparse 12 | import sys 13 | 14 | 15 | # from utils import load_data 16 | 17 | # Set random seed 18 | 19 | 20 | 21 | flags = tf.app.flags 22 | FLAGS = flags.FLAGS 23 | flags.DEFINE_string('model', 'lsvm', 'Model string.') # 'lsvm', 'rbfsvm', 'mlp', 'nb' 24 | flags.DEFINE_string('npz', 'dd', 'Input npz data.') 25 | # flags.DEFINE_string('logfile', 'ff', 'Output log file.') 26 | flags.DEFINE_string('resfile', 'rr', 'Output result file.') 27 | flags.DEFINE_string('mode', 'eval', 'Evaluate mode or predict mode.') 28 | flags.DEFINE_integer('pca', 0, 'Reduce dimensions (0 means no pca)') 29 | flags.DEFINE_integer('svd', 0, 'Reduce dimensions (0 means no svd)') 30 | flags.DEFINE_integer('seed', 12, 'random seed.') 31 | 32 | seed = int(FLAGS.seed) 33 | np.random.seed(seed) 34 | 35 | t_start = time.time() 36 | 37 | # data = np.load('data/ah/ah_testfull.npz') 38 | data = np.load(str(FLAGS.npz), allow_pickle=True) 39 | # data = np.load('data/ah/ah_subset_50.npz') 40 | # data = np.load('data/ah/ah_subset_20.npz') 41 | # data = np.load('data/ah/ah_subset_10.npz') 42 | # data = np.load('data/ah/ah_subset_6.npz') 43 | # data = np.load('data/ah/ah_subset_5.npz') 44 | 45 | features = data['features'][()] 46 | y_train = data['y_train'][()] 47 | train_mask = data['train_mask'][()] 48 | y_val = data['y_val'][()] 49 | val_mask = data['val_mask'][()] 50 | y_test = data['y_test'][()] 51 | test_mask = data['test_mask'][()] 52 | 53 | # 稀疏矩阵转正常矩阵 54 | # features = features.toarray() 55 | 56 | # LSA降维 57 | # svd = TruncatedSVD(n_components=30, random_state=seed) 58 | # print(features.shape) 59 | # svd.fit(features) 60 | # features = svd.transform(features) 61 | # print(features.shape) 62 | # print(y_train.shape) 63 | # PCA 降维 64 | if int(FLAGS.pca) != 0: 65 | pca = PCA(n_components=int(FLAGS.pca), random_state=seed) 66 | features = features.toarray() 67 | pca.fit(features) 68 | features = sparse.lil_matrix(pca.transform(features) , dtype='float32') 69 | if int(FLAGS.svd) > 0: 70 | svd = TruncatedSVD(n_components = FLAGS.svd, random_state=seed) 71 | svd.fit(features) 72 | features = sparse.lil_matrix(svd.transform(features) , dtype='float32') 73 | 74 | X = features[np.where(train_mask == True)] 75 | y = y_train[np.where(train_mask == True)] 76 | print(X.shape) 77 | print(y.shape) 78 | 79 | # X_val = features[np.where(val_mask == True)] 80 | # y_val = y_val[np.where(val_mask == True)] 81 | # print(X_val.shape) 82 | # print(y_val.shape) 83 | 84 | X_test = features[np.where(test_mask == True)] 85 | y_test = y_test[np.where(test_mask == True)] 86 | print(X_test.shape) 87 | print(y_test.shape) 88 | 89 | y = np.argmax(y, axis=1) 90 | # y_val = np.argmax(y_val, axis=1) 91 | y_test = np.argmax(y_test, axis=1) 92 | 93 | 94 | if str(FLAGS.model) == 'lsvm': 95 | clf = svm.SVC(kernel='linear') 96 | elif str(FLAGS.model) == 'rbfsvm': 97 | clf = svm.SVC(kernel='rbf') 98 | elif str(FLAGS.model) == 'mlp': 99 | clf = MLPClassifier(hidden_layer_sizes=(64,), max_iter=200, solver='adam', verbose=0, tol=1e-4, random_state=None, learning_rate='constant', learning_rate_init=.01) 100 | elif str(FLAGS.model) == 'nb': 101 | clf = naive_bayes.GaussianNB() 102 | X = X.toarray() 103 | X_test = X_test.toarray() 104 | elif str(FLAGS.model) == 'xgboost': 105 | clf = XGBClassifier(learning_rate=1, 106 | n_estimators=10, # 树的个数--1000棵树建立xgboost 107 | max_depth=3, # 树的深度 108 | min_child_weight = 1, # 叶子节点最小权重 109 | gamma=0., # 惩罚项中叶子结点个数前的参数 110 | subsample=0.8, # 随机选择80%样本建立决策树 111 | colsample_btree=0.8, # 随机选择80%特征建立决策树 112 | objective='multi:softmax', # 指定损失函数 113 | # scale_pos_weight=1, # 解决样本个数不平衡的问题 114 | random_state=seed # 随机数 115 | ) 116 | X = X.toarray() 117 | X_test = X_test.toarray() 118 | elif str(FLAGS.model) == 'randomforest': 119 | clf = RandomForestClassifier() 120 | X = X.toarray() 121 | X_test = X_test.toarray() 122 | 123 | clf.fit(X, y) 124 | 125 | y_pred = clf.predict(X_test) 126 | 127 | total_time = time.time() - t_start 128 | 129 | # Evalute_BOOL = True 130 | # Predict_BOOL = False 131 | 132 | with open(str(FLAGS.resfile), 'a') as f: 133 | if str(FLAGS.mode) == 'eval': 134 | # print(metrics.classification_report(y_test, y_pred, digits=5)) 135 | print("OA : {:0.5f}".format(metrics.accuracy_score(y_test, y_pred))) 136 | print("Kappa : {:0.5f}".format(metrics.cohen_kappa_score(y_test, y_pred))) 137 | print("F1 : {:0.5f}".format(metrics.f1_score(y_test, y_pred, average='weighted'))) 138 | print("total time:", "{:.5f}s".format(total_time)) 139 | # result_file.write(date_now + '\n') 140 | f.write(' '.join(sys.argv) + '\n') 141 | f.write("OA : {:0.5f} ".format(metrics.accuracy_score(y_test, y_pred))) 142 | f.write("Kappa : {:0.5f} ".format(metrics.cohen_kappa_score(y_test, y_pred))) 143 | f.write("F1 : {:0.5f} ".format(metrics.f1_score(y_test, y_pred, average='weighted'))) 144 | f.write("total time: {:.5f}s \n".format(total_time)) 145 | 146 | elif str(FLAGS.mode) == 'pred': 147 | # result_file = 'result_ah_pred_svm.log' 148 | for i in range(y_pred.shape[0]): 149 | f.write(str(y_pred[i]) + '\n') 150 | f.close() 151 | -------------------------------------------------------------------------------- /utils.py: -------------------------------------------------------------------------------- 1 | import random 2 | import numpy as np 3 | from scipy import sparse 4 | # from sklearn.decomposition import TruncatedSVD, PCA 5 | # from sklearn.metrics.pairwise import cosine_similarity 6 | # import networkx as nx 7 | 8 | 9 | # Auhui Map 10 | category_map = { 11 | 'building': [1, 0, 0, 0, 0], 12 | 'bare': [0, 1, 0, 0, 0], 13 | 'road': [0, 0, 1, 0, 0], 14 | 'vegetation': [0, 0, 0, 1, 0], 15 | 'water': [0, 0, 0, 0, 1] 16 | } 17 | 18 | # Fujian Map 19 | # category_map = { 20 | # 'farmland': [1, 0, 0, 0, 0, 0, 0, 0] , 21 | # 'garden': [0, 1, 0, 0, 0, 0, 0, 0] , 22 | # 'woodland': [0, 0, 1, 0, 0, 0, 0, 0] , 23 | # 'grass': [0, 0, 0, 1, 0, 0, 0, 0] , 24 | # 'building': [0, 0, 0, 0, 1, 0, 0, 0] , 25 | # 'artifact': [0, 0, 0, 0, 0, 1, 0, 0] , 26 | # 'bareland': [0, 0, 0, 0, 0, 0, 1, 0] , 27 | # 'waters': [0, 0, 0, 0, 0, 0, 0, 1] 28 | # } 29 | 30 | def load_data(mask_path, features_path, training_data_path, validation_data_path, test_data_path): 31 | 32 | 33 | from osgeo import gdal, gdal_array 34 | from gdalconst import GA_ReadOnly 35 | src_ds = gdal.Open(mask_path, GA_ReadOnly) 36 | objects_img = (gdal_array.DatasetReadAsArray(src_ds)) 37 | count = np.max(objects_img, axis=None) + 1 38 | 39 | # features 40 | features_dim = 181 41 | features = np.zeros((count, features_dim), 'float32') 42 | with open(features_path) as file: 43 | for line in file.readlines(): 44 | splited_line = line.split('\t') 45 | object_id = int(splited_line[0]) 46 | features[object_id][:] = [float(feature) for feature in splited_line[1:]] 47 | features = sparse.lil_matrix(features, dtype='float32') 48 | 49 | # 1ordOBJ adjacency. 50 | # Adjacency from related_obj 51 | ### BUGS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 52 | adjency = np.zeros((count, count), dtype='float32') 53 | # adjency = sparse.lil_matrix((count, count), dtype='float32') 54 | for row_id, row in enumerate(objects_img): 55 | if (row_id+1)0): 69 | left_down_dn = objects_img[row_id + 1, col_id - 1] 70 | if dn != down_dn: 71 | adjency[dn, left_down_dn] = adjency[left_down_dn, dn] = 1 72 | 73 | out_adj = sparse.lil_matrix(adjency, dtype='float32') 74 | 75 | 76 | ''' 77 | Train,val,test Masks. 78 | ''' 79 | # train data 80 | # category_dim = 5 81 | category_dim = len(category_map) 82 | y_train = np.zeros((count, category_dim)) 83 | train_mask = [False] * count 84 | 85 | with open(training_data_path) as file: 86 | for line in file.readlines(): 87 | splited_line = line.split('\n')[0].split('\t') 88 | object_id = int(splited_line[0]) 89 | category = category_map[splited_line[1]] 90 | y_train[object_id] = np.array(category, dtype='int') 91 | train_mask[object_id] = True 92 | 93 | train_mask = np.array(train_mask, dtype='bool') 94 | 95 | # validation data 96 | y_val = np.zeros((count, category_dim)) 97 | val_mask = [False] * count 98 | 99 | with open(validation_data_path) as file: 100 | for line in file.readlines(): 101 | splited_line = line.split('\n')[0].split('\t') 102 | object_id = int(splited_line[0]) 103 | category = category_map[splited_line[1]] 104 | y_val[object_id] = np.array(category, dtype='int') 105 | val_mask[object_id] = True 106 | val_mask = np.array(val_mask, dtype='bool') 107 | 108 | # test data 109 | y_test = np.zeros((count, category_dim)) 110 | test_mask = [False] * count 111 | 112 | with open(test_data_path) as file: 113 | for line in file.readlines(): 114 | splited_line = line.split('\n')[0].split('\t') 115 | object_id = int(splited_line[0]) 116 | category = category_map[splited_line[1]] 117 | y_test[object_id] = np.array(category, dtype='int') 118 | test_mask[object_id] = True 119 | test_mask = np.array(test_mask, dtype='bool') 120 | 121 | # all test. 122 | # y_test = np.zeros((28452, category_dim)) 123 | # test_mask = [True] * 28452 124 | 125 | # with open(test_data_path) as file: 126 | # for line in file.readlines(): 127 | # splited_line = line.split('\n')[0].split('\t') 128 | # object_id = int(splited_line[0]) 129 | # category = category_map[splited_line[1]] 130 | # if adj_1ordOBJ_BOOL: 131 | # y_test[object_id] = np.array(category, dtype='int') 132 | # test_mask[object_id] = True 133 | # elif adj_cosSIM_BOOL: 134 | # y_test[conc_feature_list.index(object_id)] = np.array(category, dtype='int') 135 | # test_mask[conc_feature_list.index(object_id)] = True 136 | # test_mask = np.array(test_mask, dtype='bool') 137 | 138 | return out_adj, features, y_train, train_mask, y_val, val_mask, y_test, test_mask 139 | 140 | 141 | def generate_npz(path): 142 | adj, features, y_train, train_mask, y_val, val_mask, y_test, test_mask = load_data("data/ah/ah_mask.tif", "data/ah/features.txt", "data/ah/train.txt", "data/ah/val.txt", "data/ah/test.txt") 143 | # adj, features, y_train, train_mask, y_val, val_mask, y_test, test_mask = load_data("data/fj/fj_mask.tif", "data/fj/features.txt", "data/fj/train.txt", "data/fj/val.txt", "data/fj/test.txt") 144 | np.savez(path, adj=adj, features=features, y_train=y_train, train_mask=train_mask, y_val=y_val, val_mask=val_mask, y_test=y_test, test_mask=test_mask) 145 | 146 | 147 | def generate_sub_npz(input_path, output_path, sub_count): 148 | data = np.load(input_path) 149 | adj = data['adj'][()] 150 | features = data['features'][()] 151 | y_train = data['y_train'][()] 152 | train_mask = data['train_mask'][()] 153 | y_val = data['y_val'][()] 154 | val_mask = data['val_mask'][()] 155 | 156 | train_ids = np.where(train_mask == True)[0] 157 | train_count = train_ids.shape[0] 158 | sub_ids = random.sample(range(train_count), sub_count) 159 | sub_train_ids = train_ids[sub_ids] 160 | 161 | print(sub_train_ids) 162 | 163 | # y_train = y_train[sub_train_ids] 164 | train_mask[:] = False 165 | train_mask[sub_train_ids] = True 166 | 167 | np.savez(output_path, adj=adj, features=features, y_train=y_train, train_mask=train_mask, y_val=y_val, val_mask=val_mask) 168 | 169 | 170 | 171 | if __name__ == '__main__': 172 | 173 | # generate_npz('data/ah/ah_1_1_1_1.npz') 174 | generate_npz('data/test.npz') 175 | # generate_npz('data/fj/fj.npz') 176 | 177 | # data = np.load('data/ah/ah_1_1_1_1.npz', allow_pickle=True) 178 | data = np.load('data/test.npz', allow_pickle=True) 179 | # data = np.load('data/fj/fj.npz', allow_pickle=True) 180 | adj = data['adj'][()] 181 | features = data['features'][()] 182 | y_train = data['y_train'][()] 183 | train_mask = data['train_mask'][()] 184 | y_val = data['y_val'][()] 185 | val_mask = data['val_mask'][()] 186 | y_test = data['y_test'][()] 187 | test_mask = data['test_mask'][()] 188 | 189 | print (repr(adj)) 190 | print (repr(features)) 191 | print (repr(y_train)) 192 | print (repr(train_mask)) 193 | print (repr(y_val)) 194 | print (repr(val_mask)) 195 | print (repr(y_test)) 196 | print (repr(test_mask)) 197 | # print(features) 198 | 199 | --------------------------------------------------------------------------------