节点预测与边预测任务实践

一、使用InMemoryDataset数据集类

import os.path as osp

import torch
from torch_geometric.data import (InMemoryDataset, download_url)
from torch_geometric.io import read_planetoid_data

class PlanetoidPubMed(InMemoryDataset):
    r""" 节点代表文章,边代表引文关系。
   		 训练、验证和测试的划分通过二进制掩码给出。
    参数:
        root (string): 存储数据集的文件夹的路径
        transform (callable, optional): 数据转换函数,每一次获取数据时被调用。
        pre_transform (callable, optional): 数据转换函数,数据保存到文件前被调用。
    """

    url = 'https://gitee.com/rongqinchen/planetoid/tree/master/data'

    def __init__(self, root, transform=None, pre_transform=None):

        super(PlanetoidPubMed, self).__init__(root, transform, pre_transform)
        self.data, self.slices = torch.load(self.processed_paths[0])

    @property
    def raw_dir(self):
        return osp.join(self.root, 'raw')

    @property
    def processed_dir(self):
        return osp.join(self.root, 'processed')

    @property
    def raw_file_names(self):
        names = ['x', 'tx', 'allx', 'y', 'ty', 'ally', 'graph', 'test.index']
        return ['ind.pubmed.{}'.format(name) for name in names]

    @property
    def processed_file_names(self):
        return 'data.pt'

    def download(self):
        for name in self.raw_file_names:
            download_url('{}/{}'.format(self.url, name), self.raw_dir)

    def process(self):
        data = read_planetoid_data(self.raw_dir, 'pubmed')
        data = data if self.pre_transform is None else self.pre_transform(data)
        torch.save(self.collate([data]), self.processed_paths[0])

    def __repr__(self):
        return '{}()'.format(self.name)

dataset = PlanetoidPubMed('dataset/Cora')
data = dataset[0]
print(dataset.num_classes)
print(dataset[0].num_nodes)
print(dataset[0].num_edges)
print(dataset[0].num_features)

二、节点预测任务

  1. 定义一个GAT图神经网络
from torch_geometric.nn import GATConv,Sequential
from torch.nn import Linear, ReLU
import torch.nn.functional as F

class GAT(torch.nn.Module):
    def __init__(self, num_features, hidden_channels_list, num_classes):
        super(GAT, self).__init__()
        torch.manual_seed(12345)
        hns = [num_features] + hidden_channels_list
        conv_list = []
        for idx in range(len(hidden_channels_list)):
            conv_list.append((GATConv(hns[idx], hns[idx+1]), 'x, edge_index -> x'))
            conv_list.append(ReLU(inplace=True),)

        self.convseq = Sequential('x, edge_index', conv_list)
        self.linear = Linear(hidden_channels_list[-1], num_classes)

    def forward(self, x, edge_index):
        x = self.convseq(x, edge_index)
        x = F.dropout(x, p=0.5, training=self.training)
        x = self.linear(x)
        return x
  1. 实例化模型并设置参数
model = GAT(num_features=dataset.num_features,hidden_channels_list=[200, 100],num_classes=dataset.num_classes)
print(model)
optimizer = torch.optim.Adam(model.parameters(), lr=0.01, weight_decay=5e-4)
criterion = torch.nn.CrossEntropyLoss()
  1. 进行训练
def train():
    model.train()
    optimizer.zero_grad()  # Clear gradients.
    out = model(data.x, data.edge_index)  # Perform a single forward pass.
    # Compute the loss solely based on the training nodes.
    loss = criterion(out[data.train_mask], data.y[data.train_mask])
    loss.backward()  # Derive gradients.
    optimizer.step()  # Update parameters based on gradients.
    return loss

for epoch in range(1, 201):
    loss = train()
    print(f'Epoch: {epoch:03d}, Loss: {loss:.4f}')
  1. 测试结果
def test():
    model.eval()
    out = model(data.x, data.edge_index)
    pred = out.argmax(dim=1)  # Use the class with highest probability.
    test_correct = pred[data.test_mask] == data.y[data.test_mask]  # Check against ground-truth labels.
    test_acc = int(test_correct.sum()) / int(data.test_mask.sum())  # Derive ratio of correct predictions.
    return test_acc

test_acc = test()
print(f'Test Accuracy: {test_acc:.4f}')

三、边预测任务实践

import torch
from torch_geometric.nn import GCNConv

class Net(torch.nn.Module):
    def __init__(self, in_channels, out_channels):
        super(Net, self).__init__()
        self.conv1 = GCNConv(in_channels, 128)
        self.conv2 = GCNConv(128, out_channels)

    def encode(self, x, edge_index):
        x = self.conv1(x, edge_index)
        x = x.relu()
        return self.conv2(x, edge_index)

    def decode(self, z, pos_edge_index, neg_edge_index):
        edge_index = torch.cat([pos_edge_index, neg_edge_index], dim=-1)
        return (z[edge_index[0]] * z[edge_index[1]]).sum(dim=-1)

    def decode_all(self, z):
        prob_adj = z @ z.t()
        return (prob_adj > 0).nonzero(as_tuple=False).t()

原文地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
云南机场集团有限责任公司副总裁 邓喜平 机场大数据探索与实践全文共40页,当前为第1页。 目 录 云南机场集团发展概况 1 云南机场大数据应用实践 2 大数据应用展望 3 机场大数据探索与实践全文共40页,当前为第2页。 目 录 机场大数据探索与实践全文共40页,当前为第3页。 云南机场集团概况 集团下辖运营机场13个、在建机场2个,二级非航企业21家。 云南省各机场已形成布局合理、规模适当、功能完备、运作顺畅的机场网络体系。运营机场密度大幅高于全国平均水平。 机场大数据探索与实践全文共40页,当前为第4页。 云南机场集团概况 "十二五"期间,云南机场集团开通航线387条,其中国内航线323条,国际航线57条,地区航线7条,国际通航点39个,初步形成覆盖南亚、东南亚,连接欧、澳、美的航线网络。 机场大数据探索与实践全文共40页,当前为第5页。 云南机场集团"十三五"的发展思路 一条主线:以改革创新、驱动转型升级为主线 两个目标:成为产业投资集团、实现民航强省 三大任务:打造卓越智慧的价值总部集团、打造特色融合的机场集群平台、打造具有竞争优势的聚合协同产业 四项突破:管控能力取得突破、枢纽价值取得突破、资源集约取得突破 五大支撑:融入国家战略、云南省发展战略;完善集团体制机制;基础设施投资;做好"三级五网"建设;人才发展的保障 机场大数据探索与实践全文共40页,当前为第6页。 7/30 大数据(数据中心) 流程管理能力 航班 旅客 物流 交通 数据价值转化能力 智慧服务 智慧运营 智慧管理 创新"服务、商业、管理、运营、安全、营销 集团"十三五"信息化总体目标 总结为"12346" 一个中心:大数据中心 两类能力:流程管理能力、数据价值转化能力 三个平台:智慧管理、智慧运营、智慧服务 四类信息:航班、旅客、物流、交通 六个创新:服务、商业、管理、运营、安全、营销 机场大数据探索与实践全文共40页,当前为第7页。 目 录 机场大数据探索与实践全文共40页,当前为第8页。 云南机场大数据应用分析 2010年 2015年 2020 2629万 5200万 一个亿 大数据、物联网、云计算、人工智能等信息技术的高速发展为我们带来了机遇 基于大数据与人工智能的集团公司智慧空港建设 提出了一体化解决方案 智慧云港 集团信息化规划指明了方向 智慧运营、智慧服务 民航高速发展 保障资源不足 机场拥挤 空域拥挤 航班正点率低、服务质量差 机场大数据探索与实践全文共40页,当前为第9页。 云南机场大数据应用实践 机场 航空公司 空管 中航信 驻场单位 非航企业 旅客 货主 …… 业务、流程、产品 服务、客户、数据 跨界融合,优化整合 重塑结构,创新驱动 新业务 新流程 新产品 新服务 新客户 新数据 途径:"互联网+" 核心:智慧 基础:大数据 机场大数据探索与实践全文共40页,当前为第10页。 11 ...... 云南机大数据应用实践 大数据建设: 1、系统化工程 2、全面整合各类数据,看得远、看得全、看得准 3、通力协作,打破壁垒 机场大数据探索与实践全文共40页,当前为第11页。 云南机场集团大数据应用 机场大数据探索与实践全文共40页,当前为第12页。 (一)长水常准 1 数据看得准、看得全、看得远 2 进程管理监控每个航班保障,大数据实现信息集成 3 效果:昆明机场航班放行正常率稳居国内八大最繁忙机场前列,提高飞机靠桥率,提高旅客服务水平 机场大数据探索与实践全文共40页,当前为第13页。 (一)长水常准 自动化获取为主 便捷移动应用手工辅录 这样够了吗? 飞机位置、飞机速度、飞机高度 旅客人数、货邮重量、行李重量 航班保障节点 机场大数据探索与实践全文共40页,当前为第14页。 (一)长水常准 机场大数据探索与实践全文共40页,当前为第15页。 (二)数据中心及数据服务平台 数据中心数据流程图 机场大数据探索与实践全文共40页,当前为第16页。 (二)数据中心及数据服务平台 机场大数据探索与实践全文共40页,当前为第17页。 (二)数据中心及数据服务平台 整体把控、全面分析 整合全省13个机场生产数据 机场大数据探索与实践全文共40页,当前为第18页。 (二)数据中心及数据服务平台 精细分析、细节致胜 机场大数据探索与实践全文共40页,当前为第19页。 (二)数据中心及数据服务平台 全面的飞机动向 机场大数据探索与实践全文共40页,当前为第20页。 (三)运行视图信息服务平台 机场大数据探索与实践全文共40页,当前为第21页。 (三)运行视图信息服务平台 (三)运行视图信息服务平台 机场大数据探索与实践全文共40页,当前为第22页。 (三)运行视图信息服务平台 未来6小时航站楼区域人数预测 机场大数据探索与实践全文共40页,当前为第23
人工智能项目资料-手写了卷积神经网络内核,来处理图上的节点分类与链路预测任务,在三个数据集cora,citeseer,ppi上进行试验 【探索人工智能的宝藏之地】 无论您是计算机相关专业的在校学生、老师,还是企业界的探索者,这个项目都是为您量身打造的。无论您是初入此领域的小白,还是寻求更高层次进阶的资深人士,这里都有您需要的宝藏。不仅如此,它还可以作为毕设项目、课程设计、作业、甚至项目初期的立项演示。 【人工智能的深度探索】 人工智能——模拟人类智能的技术和理论,使其在计算机上展现出类似人类的思考、判断、决策、学习和交流能力。这不仅是一门技术,更是一种前沿的科学探索。 【实战项目与源码分享】 我们深入探讨了深度学习的基本原理、神经网络的应用、自然语言处理、语言模型、文本分类、信息检索等领域。更有深度学习、机器学习、自然语言处理和计算机视觉的实战项目源码,助您从理论走向实践,如果您已有一定基础,您可以基于这些源码进行修改和扩展,实现更多功能。 【期待与您同行】 我们真诚地邀请您下载并使用这些资源,与我们一起在人工智能的海洋中航行。同时,我们也期待与您的沟通交流,共同学习,共同进步。让我们在这个充满挑战和机遇的领域中共同探索未来!
### 回答1: Spark Structured Streaming是一种基于Spark SQL引擎的流处理框架,它可以实现实时数据处理和分析。在使用Spark Structured Streaming进行大数据处理时,需要注意以下几点最佳实践: 1. 使用高可用性的集群:在使用Spark Structured Streaming时,需要保证集群的高可用性,以确保数据处理的稳定性和可靠性。 2. 选择合适的数据源:Spark Structured Streaming支持多种数据源,包括Kafka、Flume、HDFS等,需要根据实际情况选择合适的数据源。 3. 设计合理的数据处理流程:在设计数据处理流程时,需要考虑数据的实时性、处理效率和数据质量等因素,以确保数据处理的准确性和高效性。 4. 优化性能:在使用Spark Structured Streaming进行大数据处理时,需要优化性能,包括调整资源分配、调整并行度、使用缓存等方法,以提高数据处理的效率和速度。 5. 监控和调试:在使用Spark Structured Streaming进行大数据处理时,需要进行监控和调试,及时发现和解决问题,以确保数据处理的稳定性和可靠性。 ### 回答2: Spark Structured Streaming是一种用于实时流式数据处理的大数据最佳实践。它是Apache Spark的一部分,提供了一种简单而强大的方式来处理连续的数据流。 Spark Structured Streaming的实现原理基于Spark的弹性分布式数据集(RDD)模型,它将数据流视为一系列连续的批处理作业。这使得开发者能够使用Spark的强大功能进行实时数据分析和处理。 Spark Structured Streaming的关键特性包括: 1. 高级API:Structured Streaming提供了一种高级API,可以轻松地处理数据流。开发者只需编写一次数据处理逻辑,然后Spark会自动将其应用于连续的数据流。 2. 实时处理:Structured Streaming能够以低延迟处理数据流,提供近实时的结果。 3. 容错性:Structured Streaming具有Spark的容错机制,可以自动处理故障并继续处理数据流,确保数据不丢失。 4. 高吞吐量:Structured Streaming能够处理大规模的数据流,具有较高的吞吐量和扩展性。 5. 与其他Spark组件的集成:Structured Streaming可以与其他Spark组件(如Spark SQL和MLlib)无缝集成,从而可以方便地进行数据分析和机器学习任务。 在实践中,可以使用Spark Structured Streaming来解决许多实时数据处理的问题。例如,可以使用它进行实时日志分析、实时监测和预测、实时推荐和广告投放等。 总而言之,Spark Structured Streaming是一种强大且灵活的实时数据处理解决方案,适用于大规模的数据流处理场景。它提供了简单的API和高性能的处理能力,为开发者提供了处理实时数据流的最佳实践。 ### 回答3: 大数据最佳实践中,Spark的Structuring是一种优秀的实时处理框架,它针对流数据进行高效的处理和分析。StructStreaming提供了一种简单、易于使用的API来处理结构化数据流,并支持强大的时间窗口操作、累加器和支持容错的状态更新。 Spark StructStreaming的最佳实践包括以下几个方面: 1. 数据流处理:结构化流可以处理各种实时数据源,如Kafka、Flume等,并且能够处理高吞吐量和低延迟数据。在处理数据流时,可以使用规约、窗口操作等技术来实现实时的数据计算和聚合。 2. 内存优化:Spark StructStreaming可以将数据缓存到内存中以提高性能,并使用解析器和列式存储来最大限度地减少内存占用和I/O开销。此外,通过调整内存分配和堆外内存配置,可以进一步优化性能。 3. 容错性和数据一致性:StructStreaming提供了容错性和一致性保证,可以在节点故障时自动恢复数据处理,并确保最终输出的一致性。 4. 结构化数据查询:Spark StructStreaming支持基于SQL的查询语言,可以使用SQL语句对流数据进行查询和分析。此外,还可以使用DataFrame和DataSet API进行更高级的数据操作和转换。 5. 流式机器学习:StructStreaming可以与Spark的机器学习库集成,实现基于流数据的实时机器学习模型训练和预测。通过结合流式数据和机器学习算法,可以实现实时的数据分析和预测。 总而言之,Spark StructStreamin的最佳实践是基于结构化数据流的实时处理和分析。它提供了简单易用的API和强大的功能,可以应用于各种大数据场景,并提供高性能、容错性和一致性保证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值