国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

PyTorch Geometric基本教程

這篇具有很好參考價值的文章主要介紹了PyTorch Geometric基本教程。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

PyG官方文檔文章來源地址http://www.zghlxwxcb.cn/news/detail-667285.html


# Install torch geometric
!pip install -q torch-scatter -f https://pytorch-geometric.com/whl/torch-1.10.2+cu102.html
!pip install -q torch-sparse -f https://pytorch-geometric.com/whl/torch-1.10.2+cu102.html
!pip install -q torch-geometric

import torch
import networkx as nx
import matplotlib.pyplot as plt

1.內置數據集(以KarateClub為例)

from torch_geometric.datasets import KarateClub

dataset = KarateClub()
print(f'Dataset: {dataset}:')
print('======================')
# 圖的數量
print(f'Number of graphs: {len(dataset)}')
# 每個節(jié)點的特征尺寸
print(f'Number of features: {dataset.num_features}')
# 節(jié)點的類別數量
print(f'Number of classes: {dataset.num_classes}')
# 獲取具體的圖
data = dataset[0]
print(data)
print('==============================================================')

# 獲取圖的屬性
print(f'Number of nodes: {data.num_nodes}')
print(f'Number of edges: {data.num_edges}')
print(f'Average node degree: {(2*data.num_edges) / data.num_nodes:.2f}')
print(f'Number of training nodes: {data.train_mask.sum()}')
print(f'Training node label rate: {int(data.train_mask.sum()) / data.num_nodes:.2f}')
print(f'Contains isolated nodes: {data.has_isolated_nodes()}')
print(f'Contains self-loops: {data.has_self_loops()}')
print(f'Is undirected: {data.is_undirected()}')
# 取出的圖的數據對象為Data類型,包含以下屬性
# 1. edge_index 每條邊的兩個端點的索引組成的元組
# 2. x 節(jié)點特征[節(jié)點數量,特征維數]
# 3. y 節(jié)點標簽(類別),每個節(jié)點只分配一個類別
# 4. train_mask 
Data(edge_index=[2, 156], x=[34, 34], y=[34], train_mask=[34])
print(data)
# 獲取所有的邊
print(data.edge_idx.T)

2.可視化

def visualize(h, color, epoch=None, loss=None, accuracy=None):
    plt.figure(figsize=(7,7))
    plt.xticks([])
    plt.yticks([])
    
    if torch.is_tensor(h):
        h = h.detach().cpu().numpy()
        plt.scatter(h[:, 0], h[:, 1], s=140, c=color, cmap="Set2")
        if epoch is not None and loss is not None and accuracy['train'] is not None and accuracy['val'] is not None:
            plt.xlabel((f'Epoch: {epoch}, Loss: {loss.item():.4f} \n'
                       f'Training Accuracy: {accuracy["train"]*100:.2f}% \n'
                       f' Validation Accuracy: {accuracy["val"]*100:.2f}%'),
                       fontsize=16)
    else:
        # networkx的draw_networkx
        nx.draw_networkx(h, pos=nx.spring_layout(h, seed=42), with_labels=False, node_color=color, cmap="Set2")   
    
    plt.show()
from torch_geometric.utils import to_networkx
# 將Data類型轉換成networkx
G = to_networkx(data, to_undirected=True)
# 將圖可視化,節(jié)點顏色為節(jié)點的類型
visualize(G, color=data.y)

3.搭建GNN(以GCN為例)

import torch
from torch.nn import Linear
from torch_geometric.nn import GCNConv

class GCN(torch.nn.Module):
    def __init__(self):
        super().__init__()
        self.conv1 = GCNConv(dataset.num_features, 4)
        self.conv2 = GCNConv(4, 4)
        self.conv3 = GCNConv(4, 2)
        self.classifier = Linear(2, dataset.num_classes)
    def forward(self, x, edge_index):
        h = self.conv1(x, edge_index)
        h = h.tanh()
        h = self.conv2(h, edge_index)
        h = h.tanh()
        h = self.conv3(h, edge_index)
        h = h.tanh()
        out = self.classifier(h)
        return out, h

model = GCN()
print(model)
# 節(jié)點分類
model = GCN()

out, h = model(data.x, data.edge_index)
print(f'Embedding shape: {list(h.shape)}')

visualize(h, color=data.y)

4.在KarateClub數據集上訓練

import time
model = GCN()

# 交叉熵損失,Adam優(yōu)化器
criterion = torch.nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters())

def train(data):
    optimizer.zero_grad()
    out, h  = model(data.x, data.edge_index)
    # 只對train_mask的節(jié)點計算loss
    loss = criterion(out[data.train_mask], data.y[data.train_mask])
    loss.backward()
    optimizer.step()
    
    accuracy = {}
    # torch.argmax 取置信度最大的一類
    predicted_classes = torch.argmax(out[data.train_mask], axis=1) # [0.6, 0.2, 0.7, 0.1] -> 2
    target_classes = data.y[data.train_mask]
    accuracy['train'] = torch.mean(torch.where(predicted_classes == target_classes, 1, 0).float())
    
    predicted_classes = torch.argmax(out, axis=1)
    target_classes = data.y
    accuracy['val'] = torch.mean(torch.where(predicted_classes == target_classes, 1, 0).float())
    
    return loss, h, accuracy
for epoch in range(500):
    loss, h, accuracy = train(data)
    if epoch % 10 == 0:
        visualize(h, color=data.y, epoch=epoch, loss=loss, accuracy=accuracy)
        time.sleep(0.3)

到了這里,關于PyTorch Geometric基本教程的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【強化學習】——Q-learning算法為例入門Pytorch強化學習

    【強化學習】——Q-learning算法為例入門Pytorch強化學習

    ???♂? 個人主頁:@Lingxw_w的個人主頁 ???作者簡介:計算機研究生在讀,研究方向復雜網絡和數據挖掘,阿里云專家博主,華為云云享專家,CSDN專家博主、人工智能領域優(yōu)質創(chuàng)作者,安徽省優(yōu)秀畢業(yè)生 ?? 希望大家多多支持,我們一起進步!?? 如果文章對你有幫助的話

    2024年02月10日
    瀏覽(17)
  • PyTorch翻譯官網教程-DEPLOYING PYTORCH IN PYTHON VIA A REST API WITH FLASK

    Deploying PyTorch in Python via a REST API with Flask — PyTorch Tutorials 2.0.1+cu117 documentation 在本教程中,我們將使用Flask部署PyTorch模型,并開放用于模型推斷的REST API。特別是,我們將部署一個預訓練的DenseNet 121模型來檢測圖像。 這是關于在生產環(huán)境中部署PyTorch模型的系列教程中的第一篇

    2024年02月16日
    瀏覽(31)
  • python pytorch教程-帶你從入門到實戰(zhàn)(代碼全部可運行)

    python pytorch教程-帶你從入門到實戰(zhàn)(代碼全部可運行)

    其實這個教程以前博主寫過一次,不過,這回再寫一次,打算內容寫的多一點,由淺入深,然后加入一些實踐案例。 下面是我們的內容目錄: 1.先從數據類型談起 1.1 如何生成pytorch的各種數據類型? 1.2 pytorch的各種數據類型有哪些屬性? 1.3 pytorch的各種數據類型有哪些函數操

    2024年02月13日
    瀏覽(27)
  • Pytorch深度強化學習案例:基于Q-Learning的機器人走迷宮

    本專欄重點介紹強化學習技術的數學原理,并且 采用Pytorch框架對常見的強化學習算法、案例進行實現 ,幫助讀者理解并快速上手開發(fā)。同時,輔以各種機器學習、數據處理技術,擴充人工智能的底層知識。 ??詳情:

    2024年02月04日
    瀏覽(24)
  • pytorch+Anaconda+python3.10+parcharm+win10安裝簡化教程

    pytorch+Anaconda+python3.10+parcharm+win10安裝簡化教程

    Pytorch+Anaconda+Python3.10+parcharm+WIN10安裝簡化教程 1、首先登陸pycharm官網,https://www.jetbrains.com/pycharm/download/ 2、下載community版本 3、下載完成后,雙擊安裝,一直點下一步。 1、首先登錄anaconda官網,https://www.anaconda.com/ 2、點擊Download下載安裝包 3、雙擊安裝包安裝,選擇Just Me 4、更

    2024年02月02日
    瀏覽(26)
  • 在anaconda下安裝pytorch + python3.8+GPU/CPU版本 詳細教程

    在anaconda下安裝pytorch + python3.8+GPU/CPU版本 詳細教程

    沒安裝Anaconda的同學可以參考以下安裝鏈接: https://blog.csdn.net/qq_45281807/article/details/112442577 按照安裝CPU版本和GPU兩個版本進行分類,一般運行程序建議使用CPU版本的,安裝更方便。 注意!如果切換鏡像后當出現下載不了的情況,就先切換默認源,然后再修改另一個可以使用的

    2024年01月19日
    瀏覽(52)
  • Windows 系統(tǒng)從零配置 Python 環(huán)境,安裝CUDA、CUDNN、PyTorch 詳細教程

    Windows 系統(tǒng)從零配置 Python 環(huán)境,安裝CUDA、CUDNN、PyTorch 詳細教程

    進入anaconda官網:https://www.anaconda.com/ 點擊 download 下載文件,我這里是 Anaconda3-2022.10-Windows-x86_64.exe (后續(xù)更新版本exe文件會有差別) 下載后打開 .exe 文件下載 anaconda: 選擇安裝路徑(用默認的路徑也可以): 這里兩個都選: 然后安裝就可以了。 打開 cmd,輸入 conda(如果是

    2024年02月03日
    瀏覽(18)
  • 如何用conda安裝PyTorch(windows、GPU)最全安裝教程(cudatoolkit、python、PyTorch、Anaconda版本對應問題)(完美解決安裝CPU而不是GPU的問題)

    如何用conda安裝PyTorch(windows、GPU)最全安裝教程(cudatoolkit、python、PyTorch、Anaconda版本對應問題)(完美解決安裝CPU而不是GPU的問題)

    ? ? ? ? 安裝PyTorch的開發(fā)環(huán)境:Anaconda+CUDA+cuDNN+PyCharm Community 1.1 版本選擇 第一步就是最關鍵的版本對應問題(這決定你能否成功安裝PyTorch,以及能否成功安裝GPU版本的關鍵問題),可以這么說,版本不能對應好,后面有很大的問題,因此,我們要先確定版本的對應關系。(

    2024年02月07日
    瀏覽(25)
  • PyTorch基本操作練習

    實現了一些PyTorch基本操作,原理可參考《神經網絡與深度學習》《動手學深度學習》中的內容。個人練習,切勿與任何作業(yè)和考試掛鉤。代碼運行在Python 3.9.7版本以及Pytorch 1.10版本中。 使用Tensor初始化一個1×3的矩陣M和一個2×1的矩陣N,對兩矩陣進行減法操作(三種不同形式

    2024年02月17日
    瀏覽(17)
  • Pytorch基本使用—激活函數

    Pytorch基本使用—激活函數

    激活函數是神經網絡中的一種數學函數 ,它被應用于神經元的輸出,以決定神經元是否應該被激活并傳遞信號給下一層。 常見的激活函數包括Sigmoid函數、ReLU函數、Tanh函數等 。 激活函數是神經網絡中的一種重要組件,它的作用是引入非線性特性,使得神經網絡能夠學習和表

    2024年02月15日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包