图小狮(节点预测和链路预测)

2024-03-29

下午B站视频

新电脑必装软件(这种视频看了好多了 不知道为什么现在还是对这种视频感兴趣)

  • wallpaper壁纸引擎
  • boardmix博斯白板
  • potplayer播放器
  • 联想应用商店
  • windows安装中心(电脑自带)

mac平台arc浏览器
mpv视频播放器
视频剪辑-剪映 或者camtasia
tingpng 图片无损压缩 网页版本有上传大小限制 // github上搜索tinyGUI突破尺寸限制
素材管理软件eagle
手机投屏到windows使用airserver/letsview
视频多平台发布 蚁小二/易媒助手
即时设计 轻量的ps软件
视频批量处理压缩 小丸工具箱
图片处理 光影魔术手
数据采集 | 爬虫 后羿采集器/八爪鱼数据采集器
软件卸载 geek软件/iobit
win运行安卓模拟 雷电模拟器
文本编辑 notepad++
提高电脑工作效率 hiddenX | 一键隐藏

电脑远程连接 todesk和向日葵



larry视频

【一】深度学习模块缝合(维度转换)

四维(b,c,h,w) 图像
三维(B,N,C)在NLP中 这个B是batch,N可能是序列长度,C可能是特征维度

# 把一个四维转换为三维 这种方法简单些
import torch
x = torch.rand(10,3,32,32) # bchw
print(x.shape)
# 转换为BNC
b,c,h,w = x.size() # 提取维度
out = x.view(b,h*w,c)
print(out.shape)

# 把一个四维转换为三维
import torch
x = torch.rand(10,3,32,32) # bchw转换为BNC
print(x.shape)
x_out = x.permute(0,2,3,1)
x_out.flatten(start_dim=1,end_dim=2) # 直接使用flatten()是会转变为1维 但是可以参数指定哪里开始展平
print(x_out)

  • 缝模块都是在初始化前向传播那块进行修改
# 4 → 3 → 4
def __init__(nn.Module):
    ...
    self.art = aft... # 一个三维模块 新添加的

def forward(self,x): 
    # print(x.shape) 在前向传播中查看形状

    B,C,H,W = x.size()
    x_reshape = x.view(B,C*H,W)
    # view(-1,xx) 这个-1是自己计算维度
    x = self.art(x_reshape)
    B,N,C = x.size() # 其实这行代码可有可无
    x = x.view(B,C,H,W)
    ... # 四维前向转播原代码
    ...

【二】论文写好投稿,小白投稿

投稿论文:期刊论文和会议论文

中文:(类似于出版商 很多期刊收录于某个核心下面)
CSCD
北大核心
南大核心
科技核心

  • 中文可以网上搜索如:北大核心有哪些 然后自己去找对应的期刊按官网步骤投稿

英文:
SCI(中科院分区和JCR分区 | 国内大多是用的中科院分区)
EI (期刊、会议 一般比较水)



图小狮视频

【图神经网络改进:第三期 上-下】

  • 节点分类 => 预测节点的类别 生成节点分类
  • 链路预测 => 预测节点之间是否有关系
# 简单运行节点预测代码结果

(graph) C:\Users\le_xiong\Documents\lxiong\研一下\2024组内\AttentiveSkin\B站视频代码\第三期视频:图神经网络下游任务-节点分类>python node_classification.py
Downloading https://github.com/kimiyoung/planetoid/raw/master/data/ind.cora.x
Downloading https://github.com/kimiyoung/planetoid/raw/master/data/ind.cora.tx
Downloading https://github.com/kimiyoung/planetoid/raw/master/data/ind.cora.allx
Downloading https://github.com/kimiyoung/planetoid/raw/master/data/ind.cora.y
Downloading https://github.com/kimiyoung/planetoid/raw/master/data/ind.cora.ty
Downloading https://github.com/kimiyoung/planetoid/raw/master/data/ind.cora.ally
Downloading https://github.com/kimiyoung/planetoid/raw/master/data/ind.cora.graph
Downloading https://github.com/kimiyoung/planetoid/raw/master/data/ind.cora.test.index
Processing...
Done!
Data(x=[2708, 1433], edge_index=[2, 10556], y=[2708], train_mask=[2708], val_mask=[2708], test_mask=[2708])
GNN(
  (conv1): GCNConv(1433, 32)
  (conv2): GCNConv(32, 7)
)
Loaded Cora dataset with 2708 nodes and 10556 edges.
Epoch: [001/200], Loss: 1.9464, Train: 0.2000, Val: 0.1800, Test: 0.1640
Epoch: [002/200], Loss: 1.9403, Train: 0.3357, Val: 0.2160, Test: 0.2180
Epoch: [003/200], Loss: 1.9319, Train: 0.7000, Val: 0.4740, Test: 0.5070
Epoch: [004/200], Loss: 1.9199, Train: 0.8643, Val: 0.6160, Test: 0.6310
Epoch: [005/200], Loss: 1.9081, Train: 0.8357, Val: 0.6380, Test: 0.6620
Epoch: [006/200], Loss: 1.8948, Train: 0.8500, Val: 0.6680, Test: 0.6940
Epoch: [007/200], Loss: 1.8828, Train: 0.8857, Val: 0.7140, Test: 0.7360
Epoch: [008/200], Loss: 1.8645, Train: 0.9214, Val: 0.7560, Test: 0.7570
Epoch: [009/200], Loss: 1.8473, Train: 0.9214, Val: 0.7460, Test: 0.7560
---------------------------
Best Acc: 0.7560
---------------------------



2024-03-31 继续上面图小狮视频节点和链路预测 主要是链路预测代码理解

Ⅰ.链路预测中原始data数据集形状以及经过处理后tran、val、test数据集形状


Data(x=[2708, 1433], edge_index=[2, 10556], y=[2708], train_mask=[2708], val_mask=[2708], test_mask=[2708])

Data(x=[2708, 1433], edge_index=[2, 8976], y=[2708], train_mask=[2708], val_mask=[2708], test_mask=[2708], edge_label=[8976], edge_label_index=[2, 8976])

Data(x=[2708, 1433], edge_index=[2, 8976], y=[2708], train_mask=[2708], val_mask=[2708], test_mask=[2708], edge_label=[526], edge_label_index=[2, 526])

Data(x=[2708, 1433], edge_index=[2, 9502], y=[2708], train_mask=[2708], val_mask=[2708], test_mask=[2708], edge_label=[1054], edge_label_index=[2, 1054])

Ⅱ.链路预测的中的RandomLinkSplit转变

用一个简化的例子来说明edge_indexedge_labeledge_label_index三者之间的关系和它们是如何工作的,尤其是在通过RandomLinkSplit转换后的训练、验证和测试数据集中

  1. 初始设置:

假设我们有一个小图,包含4个节点,节点之间的连接(即边)如下所示:

  • 节点0和节点1之间有一条边。
  • 节点1和节点2之间有一条边。
  • 节点2和节点3之间有一条边。

如果我们以edge_index的形式表示这些边,它可能看起来像这样:

edge_index = [[0, 1, 2],  # 源节点索引
              [1, 2, 3]]  # 目标节点索引

这表示有三条边:0->1, 1->2, 2->3。

  1. RandomLinkSplit转换:

接下来,我们通过RandomLinkSplit进行数据划分,假设划分结果如下:

  • 训练集:包含边0->1和1->2,以及一个负样本边0->2(假设这个图中0和2之间没有直接的边,所以它被选作一个负样本)。
  • 验证集:包含边2->3作为正样本,并且假设我们有一个负样本边0->3。
  • 测试集:在这个例子中,让我们假设只用验证集,不使用测试集,以简化说明。
  1. 训练数据集:

对于训练集,我们可能有如下数据:

  • edge_index仍然是原图的边索引,未改变。
  • edge_label_index指示了哪些边被用于训练,包括正样本和负样本边。在我们的例子中,这将是:
    edge_label_index = [[0, 1, 0],  # 源节点索引,包括负样本边0->2
                        [1, 2, 2]]  # 目标节点索引
    
    注意这里包含了一个不存在的边0->2作为负样本。
  • edge_label表示这些边是正样本还是负样本。正样本标记为1,负样本标记为0。所以,对应于上面的edge_label_index,我们可能有:
    edge_label = [1, 1, 0]  # 前两条是正样本边,最后一条是负样本边
    
  1. 验证数据集:

对于验证集,假设有:

  • edge_label_index指出哪些边用于验证,包括一个正样本边2->3和一个负样本边0->3:
    edge_label_index = [[2, 0],  # 源节点索引
                        [3, 3]]  # 目标节点索引
    
  • edge_label相应地标记这些边:
    edge_label = [1, 0]  # 第一条是正样本边,第二条是负样本边
    
  1. 关联性解释
  • edge_index通常表示原图中所有的边。在使用RandomLinkSplit后,它通常不变,因为转换主要通过edge_label_indexedge_label来定义用于训练、验证和测试的边及其性质(正样本或负样本)

  • neg_sampling_ratio如果指定正负比例为1 这个负样本是随机生成的,负样本在原始图的边集合中不存在,同时要满足随机选取的条件,对于不同数据集也会避免重复

  • 假设原图中有N个节点,理论上节点间可能存在的边的总数为N(N−1)/2(对于无向图)或N(N−1)(对于有向图),取决于图是否有向。实际存在的边远少于这个数量,尤其是在稀疏图中,这就留下了大量的潜在边可以作为负样本


    上面只是简单的randomlinksplit函数的应用,关于这个函数自己仍然有很多不理解的地方:
    ①根据边随机划分时候,有时候并非选取所有的边进行划分,这到底是怎么个实现逻辑?
    ②负样本就是指本来不存在的边吗?


Ⅲ.边训练时候的思路步骤及一个简单例子

pos_out = out[edge_label_index[0], :] * out[edge_label_index[1], :]
pos_out = torch.sum(pos_out, dim=1)
loss = F.binary_cross_entropy_with_logits(pos_out, edge_label) # 二元交叉熵损失
# 运行一个简单测试 ty.py文件得到类似下面的结果
# 首先是假设一些输入的维度
out = [[1, 2],    # 节点 0 的嵌入
       [3, 4],    # 节点 1 的嵌入
       [5, 6],    # 节点 2 的嵌入
       [7, 8]]    # 节点 3 的嵌入

edge_label_index = [[0, 2],    # 节点 0 和节点 2 作为源节点
                    [1, 3]]    # 节点 1 和节点 3 作为目标节点

edge_label = [0, 1]

edge_label_index[0] 为[0, 2]

out[edge_label_index[0], :]选取了源节点的嵌入,即节点0和节点2的嵌入:[[1, 2], [5, 6]]
out[edge_label_index[1], :]选取了目标节点的嵌入,即节点1和节点3的嵌入:[[3, 4], [7, 8]]

pos_out = [[ 3,  8],
           [35, 48]]

pos_out tensor([11, 83])
Loss: tensor(5.5000)
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,273评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,349评论 3 398
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,709评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,520评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,515评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,158评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,755评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,660评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,203评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,287评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,427评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,122评论 5 349
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,801评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,272评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,393评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,808评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,440评论 2 359

推荐阅读更多精彩内容