最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Pytorch+PyG實(shí)現(xiàn)GraphConv過(guò)程示例詳解

 更新時(shí)間:2023年04月21日 09:54:08   作者:實(shí)力  
這篇文章主要為大家介紹了Pytorch+PyG實(shí)現(xiàn)GraphConv過(guò)程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

GraphConv簡(jiǎn)介

GraphConv是一種使用圖形數(shù)據(jù)的卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)模型。與傳統(tǒng)的CNN僅能處理圖片二維數(shù)據(jù)不同,GraphConv可以對(duì)任意結(jié)構(gòu)的圖進(jìn)行卷積操作,并適用于基于圖的多項(xiàng)任務(wù)。

實(shí)現(xiàn)步驟

數(shù)據(jù)準(zhǔn)備

在本實(shí)驗(yàn)中,我們使用了一個(gè)包含4萬(wàn)個(gè)圖像的數(shù)據(jù)集CIFAR-10,作為示例。與其它標(biāo)準(zhǔn)圖像數(shù)據(jù)集不同的是,在這個(gè)數(shù)據(jù)集中圖形的構(gòu)成量非常大,而且各圖之間結(jié)構(gòu)差異很大,因此需要進(jìn)行大量的預(yù)處理工作。

# 導(dǎo)入cifar-10數(shù)據(jù)集
from torch_geometric.datasets import Planetoid
# 加載數(shù)據(jù)、劃分訓(xùn)練集和測(cè)試集
dataset = Planetoid(root='./cifar10', name='Cora')
data = dataset[0]
# 定義超級(jí)參數(shù)
num_features = dataset.num_features
num_classes = dataset.num_classes
# 構(gòu)建訓(xùn)練集和測(cè)試集索引文件
train_mask = torch.zeros(data.num_nodes, dtype=torch.uint8)
train_mask[:800] = 1
test_mask = torch.zeros(data.num_nodes, dtype=torch.uint8)
test_mask[800:] = 1
# 創(chuàng)建數(shù)據(jù)加載器
train_loader = DataLoader(data[train_mask], batch_size=32, shuffle=True)
test_loader = DataLoader(data[test_mask], batch_size=32, shuffle=False)

通過(guò)上述代碼,我們先是導(dǎo)入CIFAR-10數(shù)據(jù)集并將其分割為訓(xùn)練及測(cè)試兩個(gè)數(shù)據(jù)集,并創(chuàng)建了相應(yīng)的數(shù)據(jù)加載器以便于對(duì)數(shù)據(jù)進(jìn)行有效處理。

實(shí)現(xiàn)模型

在定義GraphConv模型時(shí),我們需要根據(jù)圖像經(jīng)常使用的架構(gòu)定義網(wǎng)絡(luò)結(jié)構(gòu)。同時(shí),在實(shí)現(xiàn)卷積操作時(shí)應(yīng)引入鄰接矩陣(adjacency matrix)和特征矩陣(feature matrix)作為輸入,來(lái)使得網(wǎng)絡(luò)能夠?qū)W習(xí)到節(jié)點(diǎn)之間的關(guān)系和提取重要特征。

from torch.nn import Linear, ModuleList, ReLU
from torch_geometric.nn import GCNConv
class GraphConv(torch.nn.Module):
    def __init__(self, dataset):
        super(GraphConv, self).__init__()
        # 定義基礎(chǔ)參數(shù)
        self.input_dim = dataset.num_features
        self.output_dim = dataset.num_classes
        # 定義GCN網(wǎng)絡(luò)結(jié)構(gòu)
        self.convs = ModuleList()
        self.convs.append(GCNConv(self.input_dim, 16))
        self.convs.append(GCNConv(16, 32))
        self.convs.append(GCNConv(32, self.output_dim))
    def forward(self, x, edge_index):
        for conv in self.convs:
            x = conv(x, edge_index)
            x = F.relu(x)
        return F.log_softmax(x, dim=1)

在上述代碼中,我們實(shí)現(xiàn)了基于GraphConv的模型的各個(gè)卷積層,并使用GCNConv將鄰接矩陣和特征矩陣作為輸入進(jìn)行特征提取。最后結(jié)合全連接層輸出一個(gè)維度為類(lèi)別數(shù)的向量,并通過(guò)softmax函數(shù)來(lái)計(jì)算損失。

 模型訓(xùn)練

在定義好GraphConv網(wǎng)絡(luò)結(jié)構(gòu)之后,我們還需要指定合適的優(yōu)化器、損失函數(shù),并控制訓(xùn)練輪數(shù)、批大小與學(xué)習(xí)率等超參數(shù)。同時(shí)也需要記錄大量日志信息,方便后期跟蹤及管理。

# 定義訓(xùn)練計(jì)劃,包括損失函數(shù)、優(yōu)化器及迭代次數(shù)等
train_epochs = 200
learning_rate = 0.01
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(graph_conv.parameters(), lr=learning_rate)
losses_per_epoch = []
accuracies_per_epoch = []
for epoch in range(train_epochs):
    running_loss = 0.0
    running_corrects = 0.0
    count = 0.0
    for samples in train_loader:
        optimizer.zero_grad()
        x, edge_index = samples.x, samples.edge_index
        out = graph_conv(x, edge_index)
        label = samples.y
        loss = criterion(out, label)
        loss.backward()
        optimizer.step()
        running_loss += loss.item() / len(train_loader.dataset)
        pred = out.argmax(dim=1)
        running_corrects += pred.eq(label).sum().item() / len(train_loader.dataset)
        count += 1
    losses_per_epoch.append(running_loss)
    accuracies_per_epoch.append(running_corrects)
    if (epoch + 1) % 20 == 0:
        print("Train Epoch {}/{} Loss {:.4f} Accuracy {:.4f}".format(
            epoch + 1, train_epochs, running_loss, running_corrects))

在訓(xùn)練過(guò)程中,我們遍歷每個(gè)batch,通過(guò)反向傳播算法進(jìn)行優(yōu)化,并更新loss及accuracy輸出。同時(shí),為了方便可視化與記錄,需要將訓(xùn)練過(guò)程中的loss和accuracy輸出到相應(yīng)的容器中,以便后期進(jìn)行分析和處理。

以上就是Pytorch+PyG實(shí)現(xiàn)GraphConv過(guò)程示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Pytorch PyG實(shí)現(xiàn)GraphConv的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python 加密與解密小結(jié)

    Python 加密與解密小結(jié)

    這篇文章主要介紹了Python 加密與解密,使用base64或pycrypto模塊需要的朋友可以參考下
    2018-12-12
  • Python深度學(xué)習(xí)pytorch實(shí)現(xiàn)圖像分類(lèi)數(shù)據(jù)集

    Python深度學(xué)習(xí)pytorch實(shí)現(xiàn)圖像分類(lèi)數(shù)據(jù)集

    這篇文章主要為大家講解了關(guān)于Python深度學(xué)習(xí)中pytorch實(shí)現(xiàn)圖像分類(lèi)數(shù)據(jù)集的示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • 一文搞懂python 中的迭代器和生成器

    一文搞懂python 中的迭代器和生成器

    這篇文章主要介紹了python 中的迭代器和生成器簡(jiǎn)單介紹,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • python離散建模之感知器學(xué)習(xí)算法

    python離散建模之感知器學(xué)習(xí)算法

    這篇文章主要介紹了python離散建模之感知器學(xué)習(xí)算法,感知機(jī)學(xué)習(xí)算法是支持向量機(jī)的基礎(chǔ),支持向量機(jī)通過(guò)核函數(shù)進(jìn)行非線(xiàn)性分類(lèi),支持向量機(jī)也是感知機(jī)算法的延伸,下面就來(lái)介紹感知算法的相關(guān)內(nèi)容,需要的小伙伴可以參考一下
    2022-02-02
  • Python對(duì)Excel兩列數(shù)據(jù)進(jìn)行運(yùn)算的示例代碼

    Python對(duì)Excel兩列數(shù)據(jù)進(jìn)行運(yùn)算的示例代碼

    本文介紹了如何使用Python中的pandas庫(kù)對(duì)Excel表格中的兩列數(shù)據(jù)進(jìn)行運(yùn)算,并提供了詳細(xì)的代碼示例,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • Django urls.py重構(gòu)及參數(shù)傳遞詳解

    Django urls.py重構(gòu)及參數(shù)傳遞詳解

    這篇文章主要介紹了Django urls.py重構(gòu)及參數(shù)傳遞詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python中使用PyMySQL模塊的方法詳解

    Python中使用PyMySQL模塊的方法詳解

    Python中的pymysql模塊是用于連接MySQL數(shù)據(jù)庫(kù)的一個(gè)第三方庫(kù),它提供了一套API,使得Python程序員能夠方便地執(zhí)行SQL語(yǔ)句、操作數(shù)據(jù)庫(kù),下面這篇文章主要給大家介紹了關(guān)于Python中使用PyMySQL模塊的相關(guān)資料,需要的朋友可以參考下
    2024-08-08
  • Python采用socket模擬TCP通訊的實(shí)現(xiàn)方法

    Python采用socket模擬TCP通訊的實(shí)現(xiàn)方法

    這篇文章主要介紹了Python采用socket模擬TCP通訊的實(shí)現(xiàn)方法,程序分為T(mén)CP的server端與client端兩部分,分別對(duì)這兩部分進(jìn)行了較為深入的分析,需要的朋友可以參考下
    2014-11-11
  • 利用Psyco提升Python運(yùn)行速度

    利用Psyco提升Python運(yùn)行速度

    這篇文章主要介紹了利用Psyco提升Python運(yùn)行速度,需要的朋友可以參考下
    2014-12-12
  • 基于python實(shí)現(xiàn)雙向鏈表

    基于python實(shí)現(xiàn)雙向鏈表

    這篇文章主要為大家詳細(xì)介紹了基于python實(shí)現(xiàn)雙向鏈表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05

最新評(píng)論

游戏| 普兰店市| 图木舒克市| 高平市| 伊通| 陇南市| 明水县| 平陆县| 西安市| 东安县| 长乐市| 攀枝花市| 田林县| 永济市| 二手房| 当阳市| 黄浦区| 岑溪市| 日喀则市| 定襄县| 深泽县| 甘南县| 阿拉善盟| 江门市| 韶关市| 余姚市| 鄂托克旗| 金堂县| 宁阳县| 高平市| 崇州市| 原阳县| 泾源县| 贺兰县| 衡东县| 庆云县| 大荔县| 仲巴县| 无棣县| 博野县| 成武县|