TuckER:Tensor Factorization for Knowledge Graph Completion论文代码理解

自己一直以来python编程的细节知识掌握不太好,这次正好在复现论文的过程汇中对python及神经网络的一些常见的知识点进行总结分析。
这篇论文主题是关于知识图谱补全
代码链接如下:https://github.com/ibalazevic/TuckER

1、python中if name == ‘main’ 的作用
如果运行的是主函数的话,执行下一句main()
如果作为模块被其他文件导入使用的话,我们就不执行后面的main()什么的。
参考链接:https://www.cnblogs.com/chenhuabin/p/10118199.html

2、python中argparse.ArgumentParser()用法解析
argparse是一个Python模块:命令行选项、参数和子命令解析器。
argparse 模块可以让人轻松编写用户友好的命令行接口。程序定义它需要的参数,然后 argparse 将弄清如何从 sys.argv 解析出那些参数。
argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。
使用示例如下:
TuckER:Tensor Factorization for Knowledge Graph Completion论文代码理解_第1张图片
参考链接:https://blog.csdn.net/the_time_runner/article/details/97941409

3、 np.random.seed(seed)和torch.manual_seed(seed)的作用
使得模型可以复现。
如果使用了GPU的话还需要加上

torch.cuda.manual_seed(seed)

参考链接:https://cloud.tencent.com/developer/article/1149041

4、torch.backends.cudnn.deterministic = True语句
作用:也是用来保证训练的可重复性
参考链接:https://www.cnblogs.com/yongjieShi/p/9614905.html

5、Pytorch学习率调整

from torch.optim.lr_scheduler import ExponentialLR
if self.decay_rate:
            scheduler = ExponentialLR(opt, self.decay_rate)

6、model.train()和model.eval()的作用
model.eval()令网络层的参数固定不变,在非训练的时候必须添加(valid和test时)。训练时则直接model.train,不能固定参数。

7、label_smoothing的作用
避免模型过拟合,让模型预测拟合效果更好。
参考链接:https://blog.csdn.net/qq_43211132/article/details/100510113

8、多分类交叉熵(BCEloss)
参考链接:https://www.jianshu.com/p/ac3bec3dde3e

9、torch.view里面的-1参数
TuckER:Tensor Factorization for Knowledge Graph Completion论文代码理解_第2张图片
作用:由电脑自动计算-1位置本来应该具有的值
参考链接:https://www.cnblogs.com/MartinLwx/p/10543604.html

10、xavier_normal_
作用:参数按照一定规则进行初始化
参考链接:https://blog.csdn.net/hyk_1996/article/details/82118797

11、BatchNorm1d
把每层的输出进行处理,让神经网络各层输出输入都满足正态分布
这样可以尽可能的避免出现梯度下降和梯度爆炸的情况出现
参考链接:https://blog.csdn.net/qq_23262411/article/details/100175943

12、mm和bmm
作用:分别对应矩阵乘法和三阶张量乘法
在这里插入图片描述

参考链接:https://blog.csdn.net/leo_95/article/details/89946318

13、Dropout函数
TuckER:Tensor Factorization for Knowledge Graph Completion论文代码理解_第3张图片

dropout函数很多时候可以帮助模型避免过拟合,有时候对模型调参时也可以考虑添加dropout函数
作用:按照预设的比例将输入里面的值归0

16、transpose(1,0)函数
将矩阵的x轴和y轴进行交换

代码基本已经理解,但对TuckER的核心机理仍然存在着部分疑问,需要深入调研。

你可能感兴趣的:(TuckER:Tensor Factorization for Knowledge Graph Completion论文代码理解)