Task1

1图的基础知识

1.1图的定义
1.2图的临界矩阵
1.3节点的度
1.4路径
已经在数据结构中学习过,不再重复
1.5行走(walk):一次行走的起始点+走过的边+结束点
1.6子图、连通图、连通子图:和高数上连通图的定义有异曲同工之处,就是单独可以成一个小区域。连通子图为子图的特殊型。
1.7直径:max min P ,P为节点间的路径长度。

其中关于图网络的介绍和优缺点相对容易理解,同时自己的

2配置环境

在环境配置过程中,自己的电脑是win10,所以在配置过程中出现了较大的问题。因为我提前安装过conda,并且配置可以使用,所以就用的conda终端进行的安装,期间出现以下问题

2.1cuda和工具包的安装

升级驱动,先去了cuda官网,然后查询了自己电脑GPU对用的驱动程序,更新到了新版本。(因为大部分是向下兼容的,所以较高的版本也能支持较低版本的torch,但是最好还是按照官方对应的版本来安装对应的torch)

2.2用conda虚拟环境进行安装

用conda虚拟环境进行安装参考链接
我起初是用最高的torch和cudatoolkit=11.2,同时用的清华源进行配置。中间torch包1.5G,还有一个依赖包要1.3G,中间发生了好几次断开链接。心态崩了。后来也尝试了一下用中科大的源,但是又失败了。迫于无奈,就降低了版本,用cudatoolkit=10.1进行安装,在等待了半个小时后,终于torch安装成功,在conda终端里可以使用。

2.3conda虚拟环境运用到jupyter notebook中

conda虚拟环境运用到jupyter notebook中参考链接
conda虚拟环境不能直接在jupyter notebook中使用,需要上面一些附加包。安装完毕后,重新运行jupyter notebook,创建对应的虚拟环境就行。

2.4pyg依赖包下载

pyg依赖包不能挂VPN下载就离谱???只能用-f指定源进行下载,当事人表示很无奈,也就几十兆的东西,10k/s的速度下载了半个小时???差不多,终于结束。然后用-i清华源下载了以下pyg。终于下载完毕。

3作业题

3.1继承
class Data(object):

    def __init__(self, x=None, edge_index=None, edge_attr=None, y=None, **kwargs):
        """
        Args:
            x (Tensor, optional): 节点属性矩阵,大小为`[num_nodes, num_node_features]`
            edge_index (LongTensor, optional): 边索引矩阵,大小为`[2, num_edges]`,第0行为尾节点,第1行为头节点,头指向尾
            edge_attr (Tensor, optional): 边属性矩阵,大小为`[num_edges, num_edge_features]`
            y (Tensor, optional): 节点或图的标签,任意大小(,其实也可以是边的标签)
        """

        self.x = x
        self.edge_index = edge_index
        self.edge_attr = edge_attr
        self.y = y

        for key, item in kwargs.items():
            if key == 'num_nodes':
                self.__num_nodes__ = item
            else:
                self[key] = item

我是假设y是[num-node,num-class]的举证,比如节点i,对应j类,则y[ij]==1,否则等于0,然后得到每一类的个数。

3.2因为要用到model=model.to(device)

参考链接
但是由于,还不会创建良好的网络模型,所以自己没有将net()实例化。但是查到了一篇实例化的例子,同时看懂了代码。关键代码如下:


import torch.nn as nn
class Net1(nn.Module):
        def __init__(self, in_dim, n_hidden_1, n_hidden_2, out_dim):
            super(Net1, self).__init__()
            self.layer1 = torch.nn.Sequential(nn.Linear(in_dim, n_hidden_1))
            self.layer2 = torch.nn.Sequential(nn.Linear(n_hidden_1, n_hidden_2))
            self.layer3 = torch.nn.Sequential(nn.Linear(n_hidden_2, out_dim))
        def forward(self, x):
            x1 = F.relu(self.layer1(x))
            x1 = F.relu(self.layer2(x1))
            x2 = self.layer3(x1)
            print("\tIn Model: input size", x.size(),"output size", x2.size())
            return x2

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
#实例化网络
model = Net1(13, 16, 32, 1)
if torch.cuda.device_count() > 1:
    print("Let's use", torch.cuda.device_count(), "GPUs")
    model = nn.DataParallel(model)
model.to(device)

NET参考实例化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值