代码链接:https://github.com/ICDM-UESTC/ExGeo
└── ExGeo
├── datasets # 包含3个大规模的真实街道IP地理位置数据集。
│ |── New_York # 从纽约市收集的街道级IP地理定位数据集,包括91,808个IP地址。
│ |── Los_Angeles # 从洛杉矶收集的街道级IP地理定位数据集,包括92,804个IP地址。
│ |── Shanghai # 收集自上海的街道级IP地理定位数据集,包括126,258个IP地址。
├── lib # 包含模型(model)实现文件
│ |── layers.py # 注意力机制的代码。
│ |── model.py # ExGeo的核心源代码。
│ |── sublayers.py # layer.py的支持文件。
│ |── utils.py # 辅助函数
├── asset # 包含运行模型时保存的检查点和日志
│ |── log # 包含运行模型时保存的日志
│ |── model # 包含运行模型时保存的检查点├── generateidx.py # 生成target nodes和landmark nodes的idx(索引)
├── preprocess.py # 预处理数据集并为模型运行执行IP聚类
├── main.py # 运行模型进行训练和测试
├── test.py #加载检查点,然后测试
└── README.md
一、导入模块
import torch.nn as nn
import torch
from sublayers import MultiHeadAttention, PositionwiseFeedForward
import numpy as np
import torch.functional as F
这段代码是一个自定义的神经网络模块,其中使用了 PyTorch 库。
该块代码实现与RIPGeo代码理解(三)layers.py一致
二、SimpleAttention1类定义(NN模型)
class SimpleAttention1(nn.Module):
''' Just follow GraphGeo '''
def __init__(self, temperature, attn_dropout=0.1, d_q_in=32, d_q_out=32, d_k_in=32, d_k