GraphSAIL 贝叶斯公式 epoch batch iteration区别 GD与SGD 一些代码问题

本文主要是介绍GraphSAIL 贝叶斯公式 epoch batch iteration区别 GD与SGD 一些代码问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

    • 2021.05.25 看论文GraphSAIL
    • 2021.05.26 写论文
    • 2021.05.27 论文注意点
      • 题目
      • 摘要
      • 本机安装包
    • 2021.07.02 论文审稿
      • 回顾代码
    • 贝叶斯公式
    • 2021.07.05
      • 函数
      • epoch batch iteration
    • 2021.07.06
      • GD和SGD
    • 2021.07.07
    • 2021.07.13
    • 2021.07.18
      • 看论文 随手记
      • 英文
    • 2021.08.02

平时看论文/学习的时候,总有一些想法/思考,每次随手一记后来就找不到了。因此特意写一个博客作为日常学习记录。

2021.05.25 看论文GraphSAIL

  1. 论文中的增量学习和我一开始理解的有区别:有新数据进来时,推荐系统必须要更新模型。这个时候不能只管短期偏好,也需要保留长期偏好。所以就有了增量学习:使用新数据更新模型,但不会造成遗忘。(主要目的并不是我想象中为了减少重复运行模型时间的问题)
  2. 这里的“知识蒸馏”也不是传统的teacher对应复杂的模型,student对应精简的模型;老数据->teacher, 新数据->student;其次,目的也不一样:现有的工作只关注预测或中间激活层的知识提取方法相比,GraphSAIL显式地提取知识,以保留教师模型学习的图形拓扑信息,并将其转移到学生模型。
  3. 三种蒸馏结构:
  • Local structure:为了保留user长期偏好和item长期特征;
    具体: 计算user_embedding*item_embedding(相当于center node * neighbor node),后面简称为dot 最小化teacher(时刻t-1)和student(时刻t)的dot。
    文中说,这样就保留了用户的历史偏好和物品长期特征。(能够理解,因为新的模型和历史模型相似了,当然就保留啦);
    缺点:丢失全局位置信息(和其他节点的相对位置)
  • Global structure:编码位置信息;
    原因:用户间的embedding距离encode用户间的群体偏好。 ② 用户物品间的embedding距离encode用户喜欢哪类产品。
    过程: ① 计算anchor embedding:将用户和物品进行K-means聚类,共得到2K个簇(分别代表用户偏好群体+物品类别);簇的embedding平均值作为anchor embedding; ② 建立 probability distribution,可以表示user偏好属于某个群体偏好的概率 & 用户喜欢某一类型物品的概率;方法是计算node embedding和anchor embedding的相似度; ③ 最小化teacher模型和student模型的global structure distributions的KL散度;(global structure distributions:probability distribution的softmax形式,有K个簇哈)
  • self-embedding:对学习到的user embedding和item embedding进行约束(通过历史数据和新数据)。
    方法:对node embedding使用MSE(student和teacher),并且设置一个权重因子控制蒸馏强度(历史记录越丰富,权重越大)

2021.05.26 写论文

  1. 宗威师兄:第一段背景太长了;第一段:先说空气污染、堵车,然后造成经济损失;措施,流量预测技术;什么好处;
  2. 论文写作神器

2021.05.27 论文注意点

题目

  • 题目除了介词都要大写。

摘要

  • 摘要:不要一直重复“traffic flow”;
    这个很重要,有人提出了方法,但是仍面临挑战/问题(不是大问题的挑战,是这个方法的问题)
    自己方法解决了什么问题,做这个的必要性;解决的问题不能是很泛的问题,要有针对性。(比如不能说得到更好的embedding)
    用词要严谨,有逻辑
    重点不是用了什么技术,而是解决了什么问题

摘要:大背景,反映xx很重要;xx技术/方法,但有什么问题(however, such models are expensive to train and diffcult to perfprm frequant updates);我们怎么做的(In this work,we propose )能解决什么问题(so that the xxx can be greatly),再多讲几句(we develpe a xxx to address);讲好处(our approach preserves xxx);贡献(We argue that xxxxx; demonstrate its imporvement compared to other xx learning techniques on two public datasets)

本机安装包

  1. 打开cmd窗口激活环境conda activate base
  2. 使用conda install package命令安装包
  3. 如果不行,就使用pip install -U package(如果已安装就升级到最新版)

2021.07.02 论文审稿

回顾代码

  1. tf.layers.dense相当于加一个全连接层,
tf.layers.dense(
inputs,
units, #输出的维度大小
activation=None,
use_bias=True, # 使用bias为True(默认使用)
kernel_initializer=None, ##初始化器
bias_initializer=tf.zeros_initializer(), ##偏置项的初始化器,默认初始化为0
kernel_regularizer=None, ##正则化,可选
bias_regularizer=None, ##偏置项的正则化,可选
activity_regularizer=None, ##输出的正则化函数
kernel_constraint=None,
bias_constraint=None,
trainable=True,
name=None, ##层的名字
reuse=None ##是否重复使用参数
)
  1. with tf.name_scope(scope)定义命名空间
  2. np.random.choice(a, size=None, replace=True, p=None)按概率选择元素,从a(只要是ndarray都可以,但必须是一维的)中随机抽取数字,并组成指定大小(size)的数组;replace:True表示可以取相同数字,False表示不可以取相同数字;数组p:与数组a相对应,表示取数组a中每个元素的概率,默认为选取每个元素的概率相同。
  3. ravel(), flatten(), squeeze():ravel():如果没有必要,不会产生源数据的副本;flatten():返回源数据的副本;squeeze():只能对维数为1的维度降维
  4. np.arange([start, ]stop, [step, ]dtype=None):在给定的时间间隔内返回均匀间隔的值。
  5. np.random用法:
  • np.random.choice(a, size=None, replace=True, p=None):从数列a中随机选择size个元素,replace为True表示选出的元素允许重复。p为元素被选中的概率数列
  • np.random.rand(d0, d1, ..., dn):产生维度为(d0, d1, …, dn),值属于[0,1)的正太分布
  • np.random.randn(d0, d1, ..., dn):产生维度为(d0, d1, …, dn)的标准正太分布。
  • np.random.randint(low, high=None, size=None, dtype='l')):产生属于[low,high)的size数量的离散均匀分布
  • np.random.random(size=None):返回随机的浮点数,在半开区间 [0.0, 1.0)。

贝叶斯公式

后验概率,被确诊患病不代表一定患病
在这里插入图片描述

2021.07.05

函数

  1. split(sep, num)将一个字符串分隔成多个字符串组成的列表;sep为分隔符,不写sep时,默认表示用 空格,\n,\t 分隔字符串;num为分隔次数,有sep时按sep的值分隔;split(":")[1]可以获取冒号后面的内容
  2. str.join(sequence)将序列中的元素以指定的字符连接生成一个新的字符串
a = ['1,2,3]
print(" ".join(str(i) for i in a))
>>> 1 2 3
  1. np.eye()返回一个对角线上全是1,而其他位置全为0的一个二维数组(2D-array)。或者进行one-hot编码
np.eye(3)
>>>array([[1., 0., 0.],[0., 1., 0.],[0., 0., 1.]])np.eye(5)[[1,3,4]]
>>>array([[0., 1., 0., 0., 0.],[0., 0., 0., 1., 0.],[0., 0., 0., 0., 1.]])

epoch batch iteration

在这里插入图片描述

2021.07.06

GD和SGD

总结的不错的博客
SGD是一次用部分数据,计算梯度,然后根据梯度更新参数
GD是一次用全部数据,计算梯度,然后根据梯度更新参数

2021.07.07

  1. argparse.ArgumentParser()解析命令行参数;程序定义它需要的参数,然后 argparse 将弄清如何从 sys.argv 解析出那些参数。 argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。
  2. pd.merge()只能用于两个表的拼接,而且通过参数名称也能看出连接方向是左右拼接,一个左表一个右表。
  3. scipy.sparse.csr_matrix构造稀疏矩阵
  4. tf.Graph().as_default()返回一个上下文管理器,这个上下管理器使用这个图作为默认的图
  5. os.path.join()函数:连接两个或更多的路径名组件。如果各组件名首字母不包含’/’,则函数会自动加上;如果有一个组件是一个绝对路径,则在它之前的所有组件均会被舍弃;如果最后一个组件为空,则生成的路径以一个’/’分隔符结尾。
  6. python open() 函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写
  7. json.loads()函数是将json格式数据转换为字典
  8. tf.nn.embedding_lookup()就是根据input_ids中的id,寻找embeddings中的第id行。比如input_ids=[1,3,5],则找出embeddings中第1,3,5行,组成一个tensor返回
  9. tf.einsum( equation, *inputs)用简单的方式表示许多常见的多维线性代数数组运算
# Matrix multiplication
einsum('ij,jk->ik', m0, m1)  # output[i,k] = sum_j m0[i,j] * m1[j, k]# Dot product
einsum('i,i->', u, v)  # output = sum_i u[i]*v[i]# Outer product
einsum('i,j->ij', u, v)  # output[i,j] = u[i]*v[j]# Transpose
einsum('ij->ji', m)  # output[j,i] = m[i,j]# Trace
einsum('ii', m)  # output[j,i] = trace(m) = sum_i m[i, i]# Batch matrix multiplication
einsum('aij,ajk->aik', s, t)  # out[a,i,k] = sum_j s[a,i,j] * t[a, j, k]
  1. np.argsort()将x中的元素从小到大排列,提取其对应的index(索引),然后输出到y。也就是说排第一的数字的索引对应的值是最小的。

2021.07.13

  1. astype('category')DataFrame格式中某一列使用这个函数,代表取出该列和列名。通常与cat.codes.astype(int)一起使用,表示将那一列转换成int格式(按原始数据大小排序,依次从0开始赋值)。可以用在数据处理中,将user_name映射为user_id。
  2. set.add()给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作
  3. round( x [, n] ) 方法返回浮点数 x 的四舍五入值
  4. join()方法用于将序列中的元素以指定的字符连接生成一个新的字符串

2021.07.18

  1. print('\033[1;31m' + content + ' \033[0m')输出字体带颜色

看论文 随手记

  1. 大规模离散空间;平衡层次聚类树,寻找一条从根节点到叶节点的路径(时间复杂度)
  2. 交互式推荐系统,及时获得反馈;RL:动态交互+长期计划;环境模拟器:模拟线上环境
  3. 采样action的时间与商品总数成线性增长关系

英文

  1. To the best of our knowledge, this is the first work of xx

2021.08.02

  1. axis=0代表列,axis=1代表行
  2. 重复运行tensorflow同一段代码,时间越来越长:网上查了一下:每次迭代计算图中增加了新的节点,导致图内节点越来越多,走向奔溃。
    ① 判断是否有新节点加入:加入:sess.graph.finalize(),发现报错,表明“有新建节点的操作” ② 加入tf.reset_default_graph():清除默认图形堆栈并重置全局默认图形。 发现可行
  3. 想把list赋值,不要直接 = = =,用.copy或者a[:]

这篇关于GraphSAIL 贝叶斯公式 epoch batch iteration区别 GD与SGD 一些代码问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/685767

相关文章

linux生产者,消费者问题

pthread_cond_wait() :用于阻塞当前线程,等待别的线程使用pthread_cond_signal()或pthread_cond_broadcast来唤醒它。 pthread_cond_wait() 必须与pthread_mutex 配套使用。pthread_cond_wait()函数一进入wait状态就会自动release mutex。当其他线程通过pthread

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

hevc和H.264格式的区别

HEVC(High Efficiency Video Coding)和H.264(也称为Advanced Video Coding,AVC)都是视频压缩标准,但它们之间存在一些显著的区别,主要集中在压缩效率、资源需求和兼容性方面。 压缩效率 HEVC,也被称为H.265,提供了比H.264更高的压缩效率。这意味着在相同的视频质量下,HEVC能够以大约一半的比特率进行编码,从而减少存储空间需求和

uniapp接入微信小程序原生代码配置方案(优化版)

uniapp项目需要把微信小程序原生语法的功能代码嵌套过来,无需把原生代码转换为uniapp,可以配置拷贝的方式集成过来 1、拷贝代码包到src目录 2、vue.config.js中配置原生代码包直接拷贝到编译目录中 3、pages.json中配置分包目录,原生入口组件的路径 4、manifest.json中配置分包,使用原生组件 5、需要把原生代码包里的页面修改成组件的方

2024.6.24 IDEA中文乱码问题(服务器 控制台 TOMcat)实测已解决

1.问题产生原因: 1.文件编码不一致:如果文件的编码方式与IDEA设置的编码方式不一致,就会产生乱码。确保文件和IDEA使用相同的编码,通常是UTF-8。2.IDEA设置问题:检查IDEA的全局编码设置和项目编码设置是否正确。3.终端或控制台编码问题:如果你在终端或控制台看到乱码,可能是终端的编码设置问题。确保终端使用的是支持你的文件的编码方式。 2.解决方案: 1.File -> S

Java面试题:通过实例说明内连接、左外连接和右外连接的区别

在 SQL 中,连接(JOIN)用于在多个表之间组合行。最常用的连接类型是内连接(INNER JOIN)、左外连接(LEFT OUTER JOIN)和右外连接(RIGHT OUTER JOIN)。它们的主要区别在于它们如何处理表之间的匹配和不匹配行。下面是每种连接的详细说明和示例。 表示例 假设有两个表:Customers 和 Orders。 Customers CustomerIDCus

公共筛选组件(二次封装antd)支持代码提示

如果项目是基于antd组件库为基础搭建,可使用此公共筛选组件 使用到的库 npm i antdnpm i lodash-esnpm i @types/lodash-es -D /components/CommonSearch index.tsx import React from 'react';import { Button, Card, Form } from 'antd'

vcpkg安装opencv中的特殊问题记录(无法找到opencv_corexd.dll)

我是按照网上的vcpkg安装opencv方法进行的(比如这篇:从0开始在visual studio上安装opencv(超详细,针对小白)),但是中间出现了一些别人没有遇到的问题,虽然原因没有找到,但是本人给出一些暂时的解决办法: 问题1: 我在安装库命令行使用的是 .\vcpkg.exe install opencv 我的电脑是x64,vcpkg在这条命令后默认下载的也是opencv2:x6

17.用300行代码手写初体验Spring V1.0版本

1.1.课程目标 1、了解看源码最有效的方式,先猜测后验证,不要一开始就去调试代码。 2、浓缩就是精华,用 300行最简洁的代码 提炼Spring的基本设计思想。 3、掌握Spring框架的基本脉络。 1.2.内容定位 1、 具有1年以上的SpringMVC使用经验。 2、 希望深入了解Spring源码的人群,对 Spring有一个整体的宏观感受。 3、 全程手写实现SpringM

问题-windows-VPN不正确关闭导致网页打不开

为什么会发生这类事情呢? 主要原因是关机之前vpn没有关掉导致的。 至于为什么没关掉vpn会导致网页打不开,我猜测是因为vpn建立的链接没被更改。 正确关掉vpn的时候,会把ip链接断掉,如果你不正确关掉,ip链接没有断掉,此时你vpn又是没启动的,没有域名解析,所以就打不开网站。 你可以在打不开网页的时候,把vpn打开,你会发现网络又可以登录了。 方法一 注意:方法一虽然方便,但是可能会有