您现在的位置是:主页 > news > 电商小程序报价/seo关键词排名优化怎样

电商小程序报价/seo关键词排名优化怎样

admin2025/6/3 19:34:33news

简介电商小程序报价,seo关键词排名优化怎样,单页手机网站源码,黄页营销网站视频免费大全参考链接 https://docs.dgl.ai/en/latest/guide/minibatch-inference.html#guide-minibatch-inference 概述 在已训练的模型上进行推断时,如果是超大图上,在CPU上进行推断会存在效率问题,在GPU上又受限于显存,所以依然需要“mi…

电商小程序报价,seo关键词排名优化怎样,单页手机网站源码,黄页营销网站视频免费大全参考链接 https://docs.dgl.ai/en/latest/guide/minibatch-inference.html#guide-minibatch-inference 概述 在已训练的模型上进行推断时,如果是超大图上,在CPU上进行推断会存在效率问题,在GPU上又受限于显存,所以依然需要“mi…

参考链接

  1. https://docs.dgl.ai/en/latest/guide/minibatch-inference.html#guide-minibatch-inference

概述

在已训练的模型上进行推断时,如果是超大图上,在CPU上进行推断会存在效率问题,在GPU上又受限于显存,所以依然需要“mini-batch+邻居采样”的方式。

推断 v.s. 训练

训练过程

需要从第一层开始对节点表示逐层计算。具体来说,对于一个指定的层,需要以小批次的方式计算这个GNN层所有节点的输出表示。训练过程有一个外循环以迭代处理各个节点小批次,和一个内循环以迭代执行各层(包含邻居采样和消息传递)

推断过程

推断将包含一个外循环以迭代执行各层,和一个内循环以迭代处理各个节点小批次。

示例

离线推断的方法依然需要使用 MultiLayerFullNeighborSampler,但它每次只为一层进行采样。下面是一个两层GCN的例子。

class StochasticTwoLayerGCN(nn.Module):def __init__(self, in_features, hidden_features, out_features):super().__init__()self.hidden_features = hidden_featuresself.out_features = out_featuresself.conv1 = dgl.nn.GraphConv(in_features, hidden_features)self.conv2 = dgl.nn.GraphConv(hidden_features, out_features)self.n_layers = 2def forward(self, blocks, x):x_dst = x[:blocks[0].number_of_dst_nodes()]x = F.relu(self.conv1(blocks[0], (x, x_dst)))x_dst = x[:blocks[1].number_of_dst_nodes()]x = F.relu(self.conv2(blocks[1], (x, x_dst)))return xdef inference(self, g, x, batch_size, device):"""        用该模块进行离线推断        """# 逐层计算表示for l, layer in enumerate([self.conv1, self.conv2]):y = torch.zeros(g.number_of_nodes(),self.hidden_featuresif l != self.n_layers - 1else self.out_features)sampler = dgl.dataloading.MultiLayerFullNeighborSampler(1)dataloader = dgl.dataloading.NodeDataLoader(g, torch.arange(g.number_of_nodes()), sampler,batch_size=batch_size,shuffle=True,drop_last=False)# 在一层中,依批次对节点进行迭代for input_nodes, output_nodes, blocks in dataloader:block = blocks[0]# 将必要输入节点的特征复制到GPU上h = x[input_nodes].to(device)# 计算输出,注意计算方法是一样的,但只对一层进行计算h_dst = h[:block.number_of_dst_nodes()]h = F.relu(layer(block, (h, h_dst)))# 将输出复制回CPUy[output_nodes] = h.cpu()x = yreturn y