序列模式

图神经网络 | (2) 图神经网络(Graph Neural Networks,GNN)综述

不打扰是莪最后的温柔 提交于 2020-02-01 16:21:16
原文地址 本篇文章是对 论文“Wu Z , Pan S , Chen F , et al. A Comprehensive Survey on Graph Neural Networks[J]. 2019.” 的翻译与笔记。 论文链接 目录 1. 什么是图神经网络? 2. 有哪些图神经网络? 3. 图卷积网络(Graph Convolution Networks,GCN) 4. 图注意力网络(Graph Attention Networks) 5. Graph Autoencoders 6. Graph Generative Networks 7. Graph Spatial -Temporal Networks 8. 图神经网络的应用 1. 什么是图神经网络? 在过去的几年中,神经网络的成功推动了模式识别和数据挖掘的研究。许多机器学习任务,如目标检测、机器翻译和语音识别,曾经严重依赖手工的特征工程来提取信息特征集,最近被各种端到端的深度学习范式(例如卷积神经网络(CNN)、长短期记忆(LSTM)和自动编码器)彻底改变了。在许多领域中,深度学习的成功部分归因于快速发展的计算资源(如GPU)和大量训练数据的可用性,部分归因于深度学习从欧氏空间数据中提取潜在表示的有效性。 尽管深度学习在欧氏空间中的数据方面取得了巨大的成功,但在许多实际的应用场景中的数据是从非欧式空间生成的

关于动态规划

我怕爱的太早我们不能终老 提交于 2020-01-28 04:58:48
著作权归作者所有。 商业转载请联系作者获得授权,非商业转载请注明出处。 作者:熊大大 链接:http://www.zhihu.com/question/23995189/answer/35324479 来源:知乎 动态规划中递推式的求解方法不是动态规划的本质。 我曾经作为省队成员参加过NOI,保送之后也给学校参加NOIP的同学多次讲过动态规划,我试着讲一下我理解的 动态规划 ,争取深入浅出。希望你看了我的答案,能够喜欢上动态规划。 0. 动态规划的本质,是对问题 状态的定义 和 状态转移方程 的定义 。 引自维基百科 dynamic programming is a method for solving a complex problem by breaking it down into a collection of simpler subproblems . 动态规划是通过 拆分问题, 定义问题状态和状态之间的关系,使得问题能够以递推(或者说分治)的方式去解决。 本题下的其他答案,大多都是在说递推的求解方法,但 如何拆分问题 ,才是动态规划的核心。 而 拆分问题 ,靠的就是 状态的定义 和 状态转移方程 的定义 。 1. 什么是 状态的定义? 首先想说大家千万不要被下面的数学式吓到,这里只涉及到了函数相关的知识。 我们先来看一个动态规划的教学必备题: 给定一个数列,长度为N,

常用实用类之其他类

我与影子孤独终老i 提交于 2020-01-27 01:34:28
一.StringTokenizer类 1.说明:在不使用正则表达式的情况下,我们也可以分解String对象的字符序列,就是使用StringTokenizer对象分解。 2.构造方法: 1) StringTokenizer(String s); 此方法为String对象s构造一个分析器,使用默认的分隔标记,即空格符,换行符,回车符,Tab符等作为分隔标记符。例子: StringTokenizer fenxi = new StringTokenizer ( "you are welcome" ) ; 2) StringTokenizer(String s,String delim); 此方法为String对象s构造一个分析器,参数delim的字符序列中的字符的任意排列被当做分隔标记。例如: StringTokenizer fenxi = new StringTokenizer ( "you#*are*##welcome" , "#*" ) ; 上式中指定字符#和字符 * 是分隔标记,那么就是#和 * 的任意排列, 例如### * # * 就是一个分隔标记,#也是, * 也是 3.非构造方法 1) nextToken(); 此方法可以逐个获取String对象的字符序列中的语言符号。每当调用nextToken()时,都将在String对象的字符序列中获得下一个语言符号,计数器变量值减一。

Python核心编程第二版(中文).pdf 目录整理

夙愿已清 提交于 2020-01-25 23:43:39
python核心编程目录 Chapter1:欢迎来到python世界!- 页码:7 1.1什么是python 1.2起源 :罗萨姆1989底创建python 1.3特点 1.3.1高级 1.3.2面向对象 1.3.3可升级 1.3.4可扩展 1.3.5可移植性:python使用C写的。 1.3.6易学 1.3.7易读 1.3.8易维护 1.3.9健壮性 1.3.10高效的快速原型开发工具 1.3.11内存管理器 :内存管理由python解释器负责,开发仅仅致力于开发计划中的应用程序。 1.3.12解释性和(字节)编译性:无需编译,当执行py文件,会生成.pyc或.pyo文件 1.4下载和安装python 1.5运行python 1.5.1命令行的交互式解释器 1.5.2从命令行启动脚本 1.5.3集成开发环境 1.5.4其他的集成开发环境和执行环境 1.6python文档 1.7比较python(python与其他语言的比较) Chapter2:Python起步- 页码:31 注:语句和表达式的区别 语句是使用关键词来组成命令,告诉解释器要做什么。 表达式没有关键词,可以使算术表达式,也可以是使用括号调用的函数。 2.1程序输出,print语句及“Hello World” :print是关键字 Print ‘%s is number %d!’%(‘python’,1)

C++11内存模型的粗略解释

主宰稳场 提交于 2020-01-24 03:40:38
基本解释 C++11引入了多线程,同时也引入了一套内存模型。从而提供了比较完善的一套多线程体系。在单线程时代,一切都很简单。没有共享数据,没有乱序执行,所有的指令的执行都是按照预定的时间线。但是也正是因为这个强的同步关系,给CPU提供的优化程度也就相对低了很多。无法体现当今多核CPU的性能。因此需要弱化这个强的同步关系,来增加CPU的性能优化。 C++11提供了6种内存模型: 1 enum memory_order{ 2 memory_order_relaxed, 3 memory_order_consume, 4 memory_order_acquire, 5 memory_order_release, 6 memory_order_acq_rel, 7 memory_order_seq_cst 8 } 原子类型的操作可以指定上述6种模型的中的一种,用来控制同步以及对执行序列的约束。从而也引起两个重要的问题: 1.哪些原子类型操作需要使用内存模型? 2.内存模型定义了那些同步语义(synchronization )和执行序列约束(ordering constraints)? 原子操作可分为3大类: 读操作: memory_order_acquire, memory_order_consume 写操作: memory_order_release 读-修改-写操作: memory

百分点认知智能实验室出品:深度迁移学习十八问

那年仲夏 提交于 2020-01-22 23:13:40
编者按 深度迁移学习是基于深度神经网络的迁移学习方法,BERT通过预训练模型达到深度迁移学习的效果,自从2018年底BERT横空出世以来,就以势不可挡的姿态横扫了众多榜单,甚至在阅读理解任务SQuAD 中超越人类水平。BERT在公检法、媒体出版、军工、快消零售等工业界也迅速落地,如百分点智能对话系统、百分点智能审校系统和百分点智能翻译系统等。BERT几乎在所有的下游任务中效果都获得了明显提升,BERT自此开创了一个NLP的新时代,那就是pre-train + fine-tuning的时代。 基于BERT的各种改进版预训练模型层出不穷,令人眼花缭乱,似乎一不小心就会落伍。但是万变不离其宗,只要掌握了一些最基本的的思想、技术,就能让自己紧跟大神们的脚步,让更优秀的算法模型在工业界持续落地。百分点认知智能实验室梳理了以BERT为代表的基于fine-tuning模式的深度迁移学习中一些疑难问题,整理出18个典型的问题,对理解BERT论文和源代码有明显的帮助,因此分享给大家。 本文作者:崔丙剑 苏海波 基本概念 1.如何正确理解深度迁移学习? 答:迁移学习是机器学习的一个重要分支,是指利用数据、任务、或模型之间的相似性,将在源领域学习过的模型,应用于新领域的一种学习过程。 图1: 迁移学习示意图 迁移学习主要有几种形式:基于样本的迁移、基于特征的迁移、基于模型的迁移和基于关系的迁移

百分点认知智能实验室出品:深度迁移学习十八问

扶醉桌前 提交于 2020-01-22 23:06:48
编者按 深度迁移学习是基于深度神经网络的迁移学习方法,BERT通过预训练模型达到深度迁移学习的效果,自从2018年底BERT横空出世以来,就以势不可挡的姿态横扫了众多榜单,甚至在阅读理解任务SQuAD 中超越人类水平。BERT在公检法、媒体出版、军工、快消零售等工业界也迅速落地,如百分点智能对话系统、百分点智能审校系统和百分点智能翻译系统等。BERT几乎在所有的下游任务中效果都获得了明显提升,BERT自此开创了一个NLP的新时代,那就是pre-train + fine-tuning的时代。 基于BERT的各种改进版预训练模型层出不穷,令人眼花缭乱,似乎一不小心就会落伍。但是万变不离其宗,只要掌握了一些最基本的的思想、技术,就能让自己紧跟大神们的脚步,让更优秀的算法模型在工业界持续落地。百分点认知智能实验室梳理了以BERT为代表的基于fine-tuning模式的深度迁移学习中一些疑难问题,整理出18个典型的问题,对理解BERT论文和源代码有明显的帮助,因此分享给大家。 本文作者:崔丙剑 苏海波 基本概念 1.如何正确理解深度迁移学习? 答:迁移学习是机器学习的一个重要分支,是指利用数据、任务、或模型之间的相似性,将在源领域学习过的模型,应用于新领域的一种学习过程。 图1: 迁移学习示意图 迁移学习主要有几种形式:基于样本的迁移、基于特征的迁移、基于模型的迁移和基于关系的迁移

循环神经网络(RNN, Recurrent Neural Networks)介绍

谁说我不能喝 提交于 2020-01-20 04:45:27
原文地址: http://blog.csdn.net/heyongluoyao8/article/details/48636251# 循环神经网络(RNN, Recurrent Neural Networks)介绍    这篇文章很多内容是参考: http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-1-introduction-to-rnns/ ,在这篇文章中,加入了一些新的内容与一些自己的理解。   循环神经网络(Recurrent Neural Networks,RNNs)已经在众多 自然语言 处理(Natural Language Processing, NLP)中取得了巨大成功以及广泛应用。但是,目前网上与RNNs有关的学习资料很少,因此该系列便是介绍RNNs的原理以及如何实现。主要分成以下几个部分对RNNs进行介绍: 1. RNNs的基本介绍以及一些常见的RNNs(本文内容); 2. 详细介绍RNNs中一些经常使用的训练 算法 ,如Back Propagation Through Time(BPTT)、Real-time Recurrent Learning(RTRL)、Extended Kalman Filter(EKF)等学习算法,以及梯度消失问题(vanishing

循环神经网络(Recurrent Neural Networks, RNN)介绍

情到浓时终转凉″ 提交于 2020-01-20 04:44:32
目录 1 什么是RNNs 2 RNNs能干什么   2.1 语言模型与文本生成Language Modeling and Generating Text   2.2 机器翻译Machine Translation   2.3 语音识别Speech Recognition   2.4 图像描述生成 Generating Image Descriptions 3 如何训练RNNs 4 RNNs扩展和改进模型   4.1 Simple RNNsSRNs2   4.2 Bidirectional RNNs3   4.3 DeepBidirectionalRNNs4   4.4 Echo State Networks5   4.5 Gated Recurrent Unit Recurrent Neural Networks6   4.6 LSTM Netwoorks7   4.7 Clockwork RNNsCW-RNNs9 5 总结 6 参考博文 7 参考文献   这篇文章很多内容是参考: http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-1-introduction-to-rnns/ ,在这篇文章中,加入了一些新的内容与一些自己的理解。   循环神经网络(Recurrent Neural

动态规划

早过忘川 提交于 2020-01-20 01:39:57
动态规划 Dynamic Programming 一种设计的技巧,是解决一类问题的方法 dp遵循固定的思考流程:暴力递归 —— 递归+记忆化 —— 非递归的动态规划(状态定义+转移方程) 斐波那契数列 暴力递归,看上去很简洁 def fib(n): return n if n <= 1 else fib(n-1) + fib(n-2) 画出递归树分析一下,可以很容易发现有很多重复计算。 重叠子问题 。 递归算法的时间复杂度怎么计算? 子问题个数乘以解决一个子问题需要的时间。显然,斐波那契数列的递归解法时间复杂度为O(2 n * 1),暴力递归解法基本都会超时。 如何解决? 递归 + 记忆化 仍然使用递归,不同点在于,如果重叠子问题已经计算过,就不用再算了,相当于对冗余的递归树进行了剪枝。 由于不存在重叠子问题,时间复杂度为O(n * 1),降到线性。 1 class Solution: 2 def Fibonacci(self, n): 3 # write code here 4 if n <= 1: 5 return n 6 memo = [-1] * (n+1) 7 memo[0], memo[1]= 0, 1 8 9 def helper(n, memo): 10 if memo[n] >= 0: 11 return memo[n] 12 memo[n] = helper(n