QANET: COMBINING LOCAL CONVOLUTION WITH GLOBAL SELF-ATTENTION FOR READING COMPREHENSION

2023-10-29

论文地址:https://openreview.net/pdf?id=B14TlG-RW

摘要

        目前的端到端机器阅读和问答模型主要基于包含注意力的循环神经网络,抛开优点。这些模型的主要缺点:在训练和推理方面效率较低。 因此我们提出了一种名为QANet的问答架构,这个网络不需要使用递归网络,它的编码器完全由卷积和self-attention组成,卷积网络处理局部信息,self-attention处理全局范围内的信息。在SQuAD数据集中,我们模型的训练速度提高了3至13倍,推理速度提高了4至9倍,同时达到了与循环模型相媲美精确度。加速增益(speed-up gain)使我们能够用更多的数据来训练模型。因此,我们将我们的模型,与由神经机器翻译模型的反向翻译生成的数据结合起来。在SQuAD数据集上,我们使用增强数据训练的单一模型在测试集中F1值达到 84.6,这显著优于过去公布的F1最佳值81.8。

引言

人们对机器阅读理解和自动回答问题的工作越来越感兴趣,在过去几年中最成功的模型通常采用了两项关键要技术:

(1)使用循环网络模型处理序列化数据(2)在长期交互的过程中引入注意力机制。Seo等人于2016年提出的的双向注意力流(Bidirectional Attention Flow,BiDAF)模型将这两项要素成功地结合在了一起,该模型在SQuAD数据集上取得了显著的效果。这些模型的一个缺点是,它们的循环特性使得它们在训练和推理方面的效率通常较低,特别是对于长文本而言。昂贵的训练不仅会导致实验的周期延长,限制研究人员进行快速迭代,还会使模型难以被用于更大的数据集中。与此同时,缓慢的推理速度阻碍了机器理解系统在实时应用中的部署。 
  在本文中,为了使机器理解更高效,我们提出去掉这些模型的循环性质,仅将卷积和自注意力作为编码器的构成模块,分别对问题和文章进行编码。然后,我们通过标准注意力(Xiong et al., 2016; Seo et al., 2016; Bahdanauet al., 2015)来学习文章和问题之间的交互。在最终对每个作为答案范围的开始或结束位置的概率进行解码之前,用我们的无循环编码器再次对结果表征进行编码。我们将该架构称为QANet。 如图1所示:

模型设计的主要思想:卷积捕获文本的局部结构,而自注意力则学习每对单词之间的全局交互。此外在随后的建模过程中使用问题-文章attention机制来来对文章中每个位置构建query-aware context vector。我们的前馈网络架构极大地提高了模型的效率。在SQuAD数据集的实验中,我们模型的训练速度提高了3至13倍,推理速度提高了4至9倍。作一个简单的比较,我们的模型可以在3个小时的训练中达到与BiDAF模型(Seo等人于2016年提出)相同的精确度(F1值为77.0),在此之前,这一过程需花费15个小时的时间。加速增益还允许我们使用更多的迭代来训练模型,以获得比竞争模型更好的结果。例如,如果我们允许我们的模型进行18个小时的训练,它在开发集(dev set)上的F1值达到了82.7,这比Seo等人于 2016年提出的模型,表现得要好很多,并且与已发布过的最佳结果相媲美。

       在SQuAD数据集上,使用数据进行训练后的QANe模型在测试集上的F1值为84.6,明显优于Hu et al. (2017).发表的81.8的最好成绩。我们还进行ablation test,以证明我们的模型的每个组件的有效性。综上所述,本文的贡献如下:

我们提出了一种高效的阅读理解模式,它完全建立在卷积和self-attention基础上。据我们所知,我们是第一个这样做的。这种组合保持了较好的准确性,同时与RNN的对应算法相比,在每次训练迭代中,可以实现高达13倍的训练加速和9倍的训练迭代。训练速度使我们的模型最有希望扩展到更大的数据集。
为了提高模型在SQuAD数据集上的成绩,我们提出了一种新的数据增强技术,通过转述来丰富训练数据。它使模型达到比最先进的技术更高的精度。


模型

在这一节中,我们首先将阅读理解问题公式化的表示,然后阐述QANet模型:它是一个前馈模型,只包含卷积和自注意力机制,通过验证得出这是一个有效的组合,也是我们工作的一个贡献。

 

问题公式化

阅读理解问题在本文中做出如下的定义,给出一个问题段落使用C表示,其中C包含n个word,问题句子由m个word组成, 通过这些在原文中产生一个范围S,在后续的文章中,我们使用x既表示word也表示其词向量。

 

模型综述

从总体来看,我们模型的结构与大多数现有模型相似,它们包含五个主要部分:

一个嵌入层
一个嵌入编码器层
一个上下文-查询注意力层
一个模型编码器层
一个输出层
 
        嵌入层、嵌入编码器层、上下文查询注意层、模型编码器层和输出层,如图1所示。这些是大多数现有阅读理解模型的标准组成部分。然而,我们的方法与其他方法的主要区别在于:无论是embedding还是encoder,我们都只使用卷积网络和self-attention,抛弃了大多数现有阅读理解模型使用的rnn机构。因此,我们的模型更快,因为它可以并行处理输入的单词。值得一提的是,虽然自self-attention在Vaswani et al. (2017a)中已经得到了广泛的应用,但是卷积与自我注意的结合是首次提出的,明显优于单独的自我注意力机制,在我们的实验中得到了2.7 F1的增益。卷积的使用也使得我们可以利用普通的对流网络正则化方法,如stochastic depth (layer dropout) Huang et al., 2016),这在我们的实验中增加了0.2 F1的增益。
 

输入层

编码器层以下基本构件组成:[convolution-layer×# + self-attention-layer + feed-forward-layer],如图1中所示。我们使用深度可分卷积网络(Chollet, 2016) (Kaiser et al.,2017)而不是传统卷积,因为我们认为它具有更好的记忆效率和更好的通用性。内核大小为7,filters的数量为d = 128,块中的conv层的数量为4。self-attention-layer,我们采用多头注意力机制(Vaswani et al .,2017),对于输入的每个位置被称为query,通过点乘的方式计算query与keys之间的相似性,然后通过所有位置来计算权重,所有层的头数是8。这些基本操作(conv/self-attention/ffn)都放在一个块中,如图1右下角所示。对于输入x和给定的操作f,输出为f(layernorm(x))+x,即每个块从输入到输出有一个完整的标识路径,其中layernorm表示(Ba et al., 2016)中提出的分层规范化。编码器块的总数是1。注意,这一层的输入是每个单词的维数p1 + p2 = 500的向量,它通过一维卷积立即映射到d = 128。这一层的输出也是维度d = 128
 

上下文-问答注意力层

这个模块在之前的阅读理解模型中基本都有使用,如Weissenborn et al.(2017)和Chen et al.(2017)。我们使用C和Q来表示编码的文章和问题。context-to-query attention通过如下方法获得,我们计算每一对文章和问题词之间的相似之处通过相似性矩阵S表示, 然后通过softmax函数进行归一化,得到S一拔,然后context-to-query attention通过以下公式计算得到,

这里使用的trilinear function(Seo et al., 2016): 

 式中为元素点乘,W0为可训练变量。

大多数高性能模型还使用某种形式的问题文章attention,例如BiDaF (Seo et al., 2016)和DCN (Xiong et al., 2016)。从经验上讲,我们发现DCN注意力比简单地应用context-to-query attention有一丢丢好处,所以我们采用了这种策略。更具体地说,我们用softmax函数计算S的列标准化矩阵S,得到context-to-query attention矩阵

模型编码器层

与Seo等(2016)类似,该层在各个位置的输入为

其中a和b分别是注意矩阵a和b的一排,层参数与嵌入编码器层相同,只是在一个块内卷积层数为2,块总数为7。我们在模型编码器的3次重复之间共享权重。

输出层

这一层是特定于任务的。SQuAD的每个例子都在包含答案的上下文中标记了一个span。我们采用Seo et al.(2016)的策略来预测在回答跨度的开始或结束的上下文中每个位置的概率。更具体地说,开始和结束位置的概率被建模为

其中W1和W2为可训练变量和M0;M1;M2分别是三个模型编码器的输出,从下到上。span的得分是其起始位置和结束位置概率的乘积。最后,目标函数被定义为由真实的开始和结束索引的预测分布的对数概率的负和,在所有的训练例子中取平均值: 

y1和y2分别是真是的开始和结束位置。

通过反向翻译使数据增强

由于我们的模型是快速的,我们可以用更多的数据来训练它。因此,我们将模型与一种简单的数据增强技术相结合,以丰富训练数据。这个想法是使用两种trans- 4作为会议论文发表在ICLR 2018翻译模型,一种从英语到法语(或任何其他语言)的翻译模型和另一种从法语到英语的翻译模型,以获得文本的意译。这种方法可以帮助自动增加任何基于语言的任务的训练数据量,包括我们感兴趣的阅读理解任务。有了更多的数据,我们希望能更好地规范我们的模型。图2以法语为关键语言说明了增强过程
 

在本研究中,我们考虑了基于注意力的神经机器翻译(NMT)模型Bahdanau等(2015);Luong et al.(2015),其中Wu et al.(2016)翻译质量优秀,是我们数据扩充管道的核心模型。具体来说,我们使用了Luong et al.(2017)提供的公开可用的codebase3,它复制了谷歌的NMT (GNMT)系统Wu et al.(2016)。我们在公开的WMT数据上为英法(36M对)和英德(4500 m对)训练了4层GNMT模型。如Luong et al.(2017)所述,所有数据都被标记化并分解为子词单元。所有的模型都使用相同的超参数,并使用不同的步数进行训练,英语法语为2M,英语德语为340K。我们的英法系统在newstest2014上实现了36.7 BLEU的法文翻译和35.9 BLEU的反向翻译。对于英语德语和newstest2014,我们获得了27.6 BLEU的翻译成德语和29.9 BLEU的相反方向。

 我们的释义过程如下,假设法语是一种关键语言。首先,我们将输入序列输入到英法模式的波束译码器中,得到k个法文翻译。然后将每一个法文翻译通过反向翻译模型的波束译码器,得到输入序列的共k2个释义。

与已存在工作的关系

与现有工程的关系。虽然反向翻译的概念以前已经被引入,但它经常被用来改进相同的翻译任务Sennrich et al.(2016)或内在意译评价Wieting et al. (2017);马林森等(2017)。我们的方法是一种新的应用反向翻译丰富训练数据的下行任务,在这种情况下,问答(QA)任务。值得注意的是(Dong et al., 2017)采用意译技术改进QA;但是,他们只是转述问题,并没有像我们在本文中所做的那样专注于数据扩充方面

处理SQuAD文档和答案

我们现在讨论我处理SQuAD 数据集的具体过程,这是最重要的性能提高。记住,SQuAD 的训练样本都是(d;q;a)其中d文档是一个多句的段落,答案是a。在改述的时候,我们保持问题q不变(为了避免不小心改变它的意思),生成新的三元组(d0;q0;a0)这样新文档d0中就有了新的answe a0。该过程分为两个步骤:

(i)文档释义-将d释义为d0,

(b)答案提取-从d0中提取与a匹配度非常接近的a0。

对于文档释义步骤,我们首先将段落分割成句子,分别进行释义。我们用k = 5,所以每个句子有25个意译选项。一个新的文档d0是通过简单地用随机选择的意译替换d中的每个句子而形成的。一个明显的问题与这个方法最初的回答在d0可能不再存在。答案提取解决了上述问题。让我们以包含原答案a的原句为例,以s0为释义。我们用简单的启发式来识别新释义的答案如下。计算s0中每个单词与a的开始/结束单词之间的字符级2克分数,找出s0中可能答案的开始和结束位置。在所有转述答案中,选择字符2克分数最高的一个作为新的答案a0。表1显示了这个过程找到的新答案的示例。

 意译的质量和多样性是数据增强方法的关键。改进该方法的质量和多样性仍然是有可能的。使用更好的翻译模型可以提高翻译质量。例如,我们发现转述明显长于我们的模型的最大训练序列长度的内容往往在中间被切断。在波束搜索解码过程中,对数据集中出现的问题和答案进行释义和采样,可以提高数据集的多样性。此外,我们还可以将该方法与其他数据增强方法相结合,例如type swap方法(Raiman & Miller, 2017),以获得更多的释义多样性。在我们的实验中,我们观察到所提出的数据扩充可以在准确性方面带来不小的改善。我们认为这种方法也适用于其他受监督的自然语言处理任务,尤其是在训练数据不足的情况下。
 

实验

在这一节中,我们进行了实验来研究我们的模型和数据增强技术的性能。我们将主要在团队数据集(Rajpurkar et al., 2016)上对我们的模型进行基准测试,这被认为是问答中最具竞争力的数据集之一。我们还对另一个Q&A数据集TriviaQA (Joshi et al., 2017)进行了类似的研究,表明我们模型的有效性和效率是一般的。


数据集

我们考虑用于机器阅读理解的斯坦福问答数据集(SQuAD) (Rajpurkar et al., 2016)。SQuAD包含107.7K对查询答案,其中87.5K对用于培训,10.1K对用于验证,10.1K对用于测试。段落的长度通常在250左右,而问题是10个标记,虽然有特别长的情况。只有培训和验证数据是公开可用的,而测试数据是隐藏的,必须将代码提交给Codalab,并与(Rajpurkar et al., 2016)的作者一起检索最终测试

在我们的实验中,我们提交了我们最好的单一模型的测试集结果。为了进一步分析,我们只报告验证集的性能,因为我们不想通过频繁提交来探测不可见的测试集。根据我们实验和前期工作的观察,如s (Seo et al., 2016; Xiong et al., 2016; Wang et al., 2017; Chen et al., 2017),验证得分与测试得分之间存在较好的相关性。
 

数据处理

我们使用NLTK分词对数据进行预处理。最大的上下文长度设置为400,超过400的段落将被丢弃。在训练过程中,我们按长度对例子进行批处理,并动态填充特殊符号< pad >的短句子。最大回答长度设置为30。我们使用训练好的300D单词向量(Pennington et al., 2014),将所有词汇外的单词替换为<UNK>,这个词向量在培训期间进行更新。每个字符嵌入被随机初始化为一个200维的向量,并在训练中进行更新。我们生成两个额外的数据集,其中包含140 k和240 k的例子。
 

训练细节

我们采用两种类型的标准正则化。首先,我们使用L2重量衰变在所有可训练的变量,参数λ= 3×10−7。此外,我们还对word、character embedded和layer之间使用dropout,其中word和character的辍学率分别为0.1和0.05,每两层之间的dropout率为0.1。我们也采用stochastic depth method (layer dropout) (Huang et al., 2016)在每个嵌入或模型编码器层

隐藏的大小和卷积过滤器都是128,批量大小是32,训练步骤是原始数据的150 k,250 k“数据增强×2”,和340 k”数据增强×3”。嵌入和建模编码器的卷积层数分别为4和2,卷积大小分别为7和5,编码器的块号分别为1和7。我们用Adam优化器(Kingma & Ba, 2014)
 β1 = 0:8;β2 = 0:999; e= 10−7。我们使用一个学习速率热身方案,在前1000步从0.0增加到0.001,然后在剩余的训练中保持一个恒定的学习速率。指数移动平均适用于所有衰减率为0.9999的可训练变量。最后,我们使用Tensorflow (Abadi et al., 2016)在Python中实现了我们的模型,并在NVIDIA p100 GPU上进行了实验。


结果

准确性。F1和precision Match (EM)是衡量模型性能准确性的两个指标。F1测量预测结果与groundtruth之间的重叠令牌的比例,如果预测结果与groundtruth完全相同,则精确匹配得分为1,反之为0。我们将结果与表2中的其他方法进行了比较。为了进行公平和全面的比较,我们都在最新的论文/预印本中报告了发表的结果,并在排行榜上报告了更新但没有记录的结果。我们认为后者是未发表的结果。从表中可以看出,我们的模型的精度(EM/F1)性能与最先进的模型是一致的。特别是我们在原始数据集上训练的模型在EM和F1得分上都优于文献中记载的所有结果(见表2第二列),采用适当的采样方案对增强数据进行训练后,我们的模型在EM/F1上可以获得显著的1.5/1.1的增益。最后,我们在正式测试集上的结果是76.2/84.6,显著优于记录最好的结果73.2/81.8。

在RNNs加速。为了测量我们的模型相对于RNN模型的加速,我们还测试了相应的模型体系结构,每个编码器块都被替换为一个双向LSTMs堆栈,就像在大多数现有模型中使用的那样。具体来说,每一个(嵌入和模型)编码器块分别被替换为1层、2层或3层双向LSTMs,因为这些层号属于阅读理解模型的通常范围(Chen et al., 2017)。所有这些LSTMs都隐藏了128大小。加速比的结果如表3所示。我们可以很容易地看到,我们的模型比所有基于RNN的模型都要快得多,并且在训练中,我们的速度差在3到13倍之间,在推理中,我们的速度差在4到9倍之间。

在BiDAF模型上的加速。此外,我们还使用相同的硬件(NVIDIA p100 GPU),并将我们的模型与经典的基于SQuAD模型BiDAF model14(Seo et al., 2016)进行了相同性能的训练时间比较。为了获得最佳性能,我们通常在原始代码中采用默认设置,其中用于训练和推理的批大小都是60。我们唯一改变的部分是优化器,这里使用了Adam with learning 0.001,与Adadelta一样,我们得到了更差的性能。结果如表4所示,我们的模型在训练和推理速度上分别比BiDAF快4.3和7.0倍。此外,我们只需要1 / 5的训练时间就可以在dev set上取得BiDAF F1的最好成绩(77:0)。

 

结论

本文提出了一种快速、准确的机器阅读理解端到端模型QANet。我们的核心创新是完全去除编码器中的重复网络。得到的模型是完全前馈的,完全由可分卷积、注意、线性层和层归一化组成,适用于并行计算。结果模型既快又准确:它超过了在班组数据集上发布的最好结果,同时比训练/推理迭代的竞争性重复模型快13/9倍。此外,我们发现,我们可以利用由翻译上下文和段落对构成的数据扩充来解释问题和上下文,从而获得显著的收获。
 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QANET: COMBINING LOCAL CONVOLUTION WITH GLOBAL SELF-ATTENTION FOR READING COMPREHENSION 的相关文章

  • 如何获取与某个单词相关的相似单词?

    我正在尝试解决一个 nlp 问题 其中我有一个单词字典 例如 list 1 phone android chair netflit charger macbook laptop sony 现在 如果输入是 phone 我可以轻松地使用 in
  • 使用 NLTK python 对使用示例数据或 Web 服务的句子进行情感分析?

    我正在着手一个用于情感分析的 NLP 项目 我已经成功安装了Python的NLTK 看起来是一个很棒的软件 但是 我无法理解如何使用它来完成我的任务 这是我的任务 我从一长条数据开始 假设来自他们的网络服务的数百条关于英国大选主题的推文 我
  • NLTK 中的 FreqDist 未对输出进行排序

    我是 Python 新手 我正在尝试自学语言处理 python 中的 NLTK 有一个名为 FreqDist 的函数 可以给出文本中单词的频率 但由于某种原因它无法正常工作 这是教程让我写的 fdist1 FreqDist text1 vo
  • 日期自然语言解析器(.NET)?

    我希望能够让用户使用自然语言 例如 下周五 每个工作日 输入日期 包括重复日期 很像以下的例子http todoist com Help timeInsert http todoist com Help timeInsert I found
  • 从动词列表中检索动词

    我有一个全是动词的字符串列表 我需要获取每个动词的词频 但我想将 想要 想要 想要 和 想要 等动词计为一个动词 形式上 动词 被定义为 4 个单词的集合 其形式为 X Xs Xed Xing 或形式为 X Xes Xed Xing 其中
  • 使用 nltk 中的meteor_score模块评估模型时如何实现meteor分数?

    我目前有 2 个文件 reference txt 和 model txt 这两个文本文件包含原始字幕和训练后生成的字幕 我可以简单地执行以下操作来获取流星分数 score nltk translate meteor score meteor
  • word2vec gensim 多种语言

    这个问题完全超出了我的想象 我正在使用 gensim 训练 Word2Vec 模型 我提供了多种语言的数据 即英语和印地语 当我试图找到最接近 人 的词时 我得到的是 model wv most similar positive man O
  • 如何在 python-gensim 中使用潜在狄利克雷分配(LDA)来抽象二元组主题而不是一元组?

    LDA 原始输出 一元语法 主题1 水肺 水 蒸汽 潜水 主题2 二氧化物 植物 绿色 碳 所需输出 二元组主题 主题1 水肺潜水 水蒸气 主题2 绿色植物 二氧化碳 任何想法 鉴于我有一个名为docs 包含文档中的单词列表 我可以使用 n
  • NLTK CoreNLPDependencyParser:无法建立连接

    我正在尝试通过 NLTK 使用斯坦福解析器 按照示例here http www nltk org api nltk parse html nltk parse corenlp CoreNLPDependencyParser 20tutori
  • 使用 Hadoop MapReduce 的计算语言学项目构想

    我需要做一个关于计算语言学课程的项目 是否有任何有趣的 语言 问题 其数据密集程度足以使用 Hadoop MapReduce 来解决 解决方案或算法应尝试分析并提供 语言 领域的一些见解 但是它应该适用于大型数据集 以便我可以使用 hado
  • word2vec中单词的向量代表什么?

    word2vec https code google com p word2vec 是 Google 的开源工具 它为每个单词提供一个浮点值向量 它们到底代表什么 还有一篇论文关于段落向量 http cs stanford edu quoc
  • Spacy 中的自定义句子分割

    I want spaCy使用我提供的句子分割边界而不是它自己的处理 例如 get sentences Bob meets Alice SentBoundary They play together gt Bob meets Alice Th
  • 如何提取数字(以及比较形容词或范围)

    我正在用 Python 开发两个 NLP 项目 它们都有类似的任务提取数值和比较运算符来自句子 如下所示 greater than 10 weight not more than 200lbs height in 5 7 feets fas
  • 否定句子的算法

    我想知道是否有人熟悉算法句子否定的任何尝试 例如 给定一个句子 这本书很好 请提供任意数量的意思相反的替代句子 例如 这本书不好 甚至 这本书不好 显然 以高精度实现这一点可能超出了当前 NLP 的范围 但我确信在这个主题上已经有了一些工作
  • 如何确保用户只提交英文文本

    我正在构建一个涉及自然语言处理的项目 由于nlp模块目前只处理英文文本 所以我必须确保用户提交的内容 不长 只有几个单词 是英文的 是否有既定的方法来实现这一目标 首选 Python 或 Javascript 方式 如果内容足够长我会推荐一
  • 如何对德语文本进行词形还原?

    我有一篇德语文本 我想对其应用词形还原 如果不可能进行词形还原 那么我也可以接受词干提取 Data 这是我的德语文本 mails Hallo Ich spielte am fr hen Morgen und ging dann zu ein
  • gensim如何计算doc2vec段落向量

    我正在看这篇论文http cs stanford edu quocle paragraph vector pdf http cs stanford edu quocle paragraph vector pdf 它指出 段落向量和词向量被平
  • 如何检测文本是否可读?

    我想知道是否有一种方法可以告诉给定的文本是人类可读的 我所说的人类可读的意思是 它有一些含义 格式就像某人写的文章 或者至少是由软件翻译器生成的供人类阅读的文章 这是背景故事 最近我正在制作一个应用程序 允许用户将短文本上传到数据库 在部署
  • 缩短文本并仅保留重要句子

    德国网站 nandoo net 提供了缩短新闻文章的可能性 如果使用滑块更改百分比值 文本会发生变化并且某些句子会被遗漏 您可以在这里看到它的实际效果 http www nandoo net read article 299925 http
  • 使用 NLP 进行地址分割

    我目前正在开发一个项目 该项目应识别地址的每个部分 例如来自 str Jack London 121 Corvallis ARAD ap 1603 973130 输出应如下所示 street name Jack London no 121

随机推荐

  • 更换硬盘_「心得」群晖NAS升级硬盘——硬盘篇:硬盘的更换与RAID设置思路

    经过大概一周左右的时间 终于断断续续的把我的群晖NAS的硬盘升级完了 把原来3TB 2的RAID 1 变成3TB 3的RAID 5 同时把额外单独的3TB冷备份硬盘 也升级成了6TB 为什么花费了一周左右的时间 当中包括前期的文件校验 新硬
  • C#中的多线程 - 并行编程

    转载至 https blog gkarch com threading part5 html 1并行编程Permalink 在这一部分 我们讨论 Framework 4 0 加入的多线程 API 它们可以充分利用多核处理器 并行 LINQ
  • 宝塔部署nodejs接口项目及mysql数据库教程

    上传项目文件至宝塔目录文件夹 我这里上传的server文件 在网站菜单添加node项目 填写node项目信息 项目端口需要填写项目真实的启动端口 需要绑定域名的可以添加域名管理 添加域名后需要开启外网映射 新建mysql数据库 导入数据库数
  • Qt窗体背景绘图和图片显示篇

    今天重新研究Qt窗体绘图和图片显示 1 窗体的背景上绘制线段和区域 2 窗体背景显示图片以及图片缩放 3 无边框窗体显示以及无边框窗体的移动 4 自定义widget形状 1 在窗体上执行绘制线段和区域等操作 图1 有时候需要在窗体的背景上绘
  • Pig-使用PigLatin操作员工表和部门表

    前提条件 安装好hadoop2 7 3 Linux系统下 安装好pig Linux系统下 准备源数据 打开终端 新建emp csv文件 nano emp csv 输入内容如下 保存退出 7369 SMITH CLERK 7902 1980
  • JetBrain Rider控制台 输出乱码问题

    JetBrain Rider控制台 输出乱码问题 新安装的Rider默认在Windows下运行控制台输出中文会出现乱码 黑窗口运行不会乱码 想必是控制台编码方式的问题 解决方案 点击help gt Edit Custom VM Option
  • Android screencap截屏指令

    查看帮助 注意 有的网友错误使用 screencap v 结果差不多 因为系统不能识别 v 就自动打印出帮助信息 screencap hscreencap husage screencap hp d display id FILENAME
  • 如何在uniapp中优雅地使用WebView

    这里给大家分享我在网上总结出来的一些知识 希望对大家有所帮助 从webview页面传值到uniapp中 官方文档已经很详细了 这里给大家上我的实战代码 首先在webview页面中引入相关依赖
  • 机器学习——深度学习(Deep Learning)

    Deep Learning是机器学习中一个非常接近AI的领域 其动机在于建立 模拟人脑进行分析学习的神经网络 最近研究了机器学习中一些深度学习的相关知识 本文给出一些很有用的资料和心得 Key Words 有监督学习与无监督学习 分类 回归
  • Cesium 简介

    Cesium 简介 一 Cesium 是什么 Cesium 是一个开源 JavaScript 库 用于 3D 2D 2 5D 地图可视化 Cesium 由 AGI 公司计算机图形开发小组与 2011 年研发的 Cesium 一词来源于化学元
  • 基于照片扫描技术的游戏网格贴图制作的相关(上篇)

    参考来源 Agisoft PhototScna User Manual http www agisoft com pdf photoscan pro 1 4 en pdf Unite 2018 基于照片建模的游戏制作流程 http foru
  • MongoDB批量操作及与MySQL效率对比

    本文主要通过批量与非批量对比操作的方式介绍MongoDB的bulkWrite 方法的使用 顺带与关系型数据库MySQL进行对比 比较这两种不同类型数据库的效率 如果只是想学习bulkWrite 的使用的看第一部分就行 测试环境 win7旗舰
  • firefox 地址栏二维码扩展(官方)

    度娘搜索及扩展搜索总找不到这个官方插件 这里记录一下 别的二维码插件真不用 1 设置方式 2 安装地址 附加组件管理器 Firefox 火狐浏览器 火狐社区 附加组件管理器 火狐社区http mozilla com cn thread 34
  • 程序员如何辞职?

    在很长的一段时间里我都梦想着有一天能够辞掉我的工作 为自己工作 我感到自己被困在公司里工作 我知道 如果我能自己离开会做得更好 问题是 怎么离开 那时 我并不认识任何一位成功逃出牢笼的人 所以我不知道自己需要做什么 我只知道 为别人工作我完
  • 【深度学习实验】前馈神经网络(四):自定义逻辑回归模型:前向传播、反向传播算法

    目录 一 实验介绍 二 实验环境 1 配置虚拟环境 2 库版本介绍 三 实验内容 0 导入必要的工具包 1 逻辑回归Logistic类 a 构造函数 init b call self x 方法 c 前向传播forward d 反向传播bac
  • 2020第十一届蓝桥杯C++省赛B组真题和题解 (10月第二场)

    目录 试题A 门牌制作 题目 题解 试题B 既约分数 题目 题解 试题C 蛇形填数 题目 题解 试题D 跑步锻炼 题目 题解 试题F 成绩统计 题目 题解 试题G 回文日期 题目 题解 试题H 子串分值和 题目 题解 试题I 平面切分 题目
  • Python练习题:第11题 兔子繁衍问题

    题目 有一对兔子 从岀生后第3个月起每个月都生一对兔子 小兔子长到第三个月后每个月又生一对兔子 假如兔子都不部死 问每个月的兔子总数为多少 分析 把兔子分成刚出生的 1个月大的以及2个月及以上大的分别计数即可 coding utf 8 By
  • Xrm.WebApi 多对多关系处理

    primaryId 主实体id childIds 多对多中子实体的ids parentTable 主实体logicalName childTable 子实体logicalName relationShip 主实体和子实体关系字段 priva
  • kubernetes一步一步搭建(一)安装与http访问

    众所周知 kubernetes 简称k8s 是用于管理docker集群的 最近一段时间一直在折腾环境问题 在此写一篇博客 来帮助像我一样的小白 避免走弯路 一 环境 集群环境 角色 IP地址 版本号 Docker版本 系统版本 master
  • QANET: COMBINING LOCAL CONVOLUTION WITH GLOBAL SELF-ATTENTION FOR READING COMPREHENSION

    论文地址 https openreview net pdf id B14TlG RW 摘要 目前的端到端机器阅读和问答模型主要基于包含注意力的循环神经网络 抛开优点 这些模型的主要缺点 在训练和推理方面效率较低 因此我们提出了一种名为QAN