doc2vec原理及实践

Word2Vec demo,语料库处理以及word2vec训练 (Win10环境) 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 参考链接 word2vec实战:获取和预处理中文维基百科(Wikipedia)语料库,并训练成word2vec模型 nlp语料库相关资源:A curated list of resources for NLP (Natural Language Processing) for Chinese windows使用o.. 阅读详情

1.“句向量”简介

word2vec提供了高质量的词向量,并在一些任务中表现良好。
关于word2vec的原理可以参考这几篇论文:

关于如何使用第三方库gensim训练word2vec可以参考这篇博客:

尽管word2vec提供了高质量的词汇向量,仍然没有有效的方法将它们结合成一个高质量的文档向量。对于一个句子、文档或者说一个段落,怎么把这些数据投影到向量空间中,并具有丰富的语义表达呢?过去人们常常使用以下几种方法:

  • bag of words
  • LDA
  • average word vectors
  • tfidf-weighting word vectors

就bag of words而言,有如下缺点:1.没有考虑到单词的顺序,2.忽略了单词的语义信息。因此这种方法对于短文本效果很差,对于长文本效果一般,通常在科研中用来做baseline。

average word vectors就是简单的对句子中的所有词向量取平均。是一种简单有效的方法,但缺点也是没有考虑到单词的顺序

tfidf-weighting word vectors是指对句子中的所有词向量根据tfidf权重加权求和,是常用的一种计算sentence embedding的方法,在某些问题上表现很好,相比于简单的对所有词向量求平均,考虑到了tfidf权重,因此句子中更重要的词占得比重就更大。但缺点也是没有考虑到单词的顺序

LDA模型当然就是计算出一片文档或者句子的主题分布。也常常用于文本分类任务,后面会专门写一篇文章介绍LDA模型和doc2vec的本质不同

2. doc2vec原理

doc2vec是google的两位大牛Quoc Le和Tomas Mikolov在2014年提出的,原始论文地址如下:https://cs.stanford.edu/~quocle/paragraph_vector.pdf

Doc2Vec 或者叫做 paragraph2vec, sentence embeddings,是一种非监督式算法,可以获得 sentences/paragraphs/documents 的向量表达,是 word2vec 的拓展。学出来的向量可以通过计算距离来找 sentences/paragraphs/documents 之间的相似性,可以用于文本聚类,对于有标签的数据,还可以用监督学习的方法进行文本分类,例如经典的情感分析问题。

在介绍doc2vec原理之前,先简单回顾下word2vec的原理

word2vec基本原理

熟悉word2vec的同学都知道,下图是学习词向量表达最经典的一幅图。在下图中,任务就是给定上下文,预测上下文的其他单词。

这里写图片描述

其中,每个单词都被映射到向量空间中,将上下文的词向量级联或者求和作为特征,预测句子中的下一个单词。一般地:给定如下训练单词序列 w1,w2,w3,...,wT w 1 , w 2 , w 3 , . . . , w T , 目标函数是

1T∑T−kt=klogp(wt|wt−k,...,wt+k) 1 T ∑ t = k T − k l o g p ( w t | w t − k , . . . , w t + k )

当然,预测的任务是一个多分类问题,分类器最后一层使用softmax,计算公式如下:
p(wt|wt−k,...,wt+k)=eywt∑ieyi p ( w t | w t − k , . . . , w t + k ) = e y w t ∑ i e y i

这里的每一个 yi y i 可以理解为预测出每个 word w o r d 的概率。因为在该任务中,每个词就可以看成一个类别。计算 yi y i 的公式如下:

y=b+Uh(wt−k,...,wt+k;W) y = b + U h ( w t − k , . . . , w t + k ; W )

这里 U U 和b都是参数,h是将 wt−k,...,wt+k w t − k , . . . , w t + k 级联或者求平均。
因为每个单词都是一类,所以类别众多,在计算softmax归一化的时候,效率很低。因此使用hierarical softmax加快计算速度,其实就是huffman树,这个不再赘述,有兴趣的同学可以看word2vec的paper。

doc2vec基本原理

1. A distributed memory model

训练句向量的方法和词向量的方法非常类似。训练词向量的核心思想就是说可以根据每个单词 wi w i 的上下文预测 wi w i ,也就是说上下文的单词对 wi w i 是有影响的。那么同理,可以用同样的方法训练doc2vec。例如对于一个句子 s: s : i want to drink water,如果要去预测句子中的单词want,那么不仅可以根据其他单词生成feature, 也可以根据其他单词和句子 s s 来生成feature进行预测。因此doc2vec的框架如下所示:

这里写图片描述

每个段落/句子都被映射到向量空间中,可以用矩阵D的一列来表示。每个单词同样被映射到向量空间,可以用矩阵 W W 的一列来表示。然后将段落向量和词向量级联或者求平均得到特征,预测句子中的下一个单词。

这个段落向量/句向量也可以认为是一个单词,它的作用相当于是上下文的记忆单元或者是这个段落的主题,所以我们一般叫这种训练方法为Distributed Memory Model of Paragraph Vectors(PV-DM)

在训练的时候我们固定上下文的长度,用滑动窗口的方法产生训练集。段落向量/句向量 在该上下文中共享。

总结doc2vec的过程, 主要有两步:

  • 训练模型,在已知的训练数据中得到词向量W, softmax的参数 U U 和b,以及段落向量/句向量 D D
  • 推断过程(inference stage),对于新的段落,得到其向量表达。具体地,在矩阵D中添加更多的列,在固定 W W ,U, b b 的情况下,利用上述方法进行训练,使用梯度下降的方法得到新的D,从而得到新段落的向量表达

    2. Paragraph Vector without word ordering: Distributed bag of words

    还有一种训练方法是忽略输入的上下文,让模型去预测段落中的随机一个单词。就是在每次迭代的时候,从文本中采样得到一个窗口,再从这个窗口中随机采样一个单词作为预测任务,让模型去预测,输入就是段落向量。如下所示:

    这里写图片描述

    我们称这种模型为 Distributed Bag of Words version of Paragraph Vector(PV-DBOW)

    在上述两种方法中,我们可以使用PV-DM或者PV-DBOW得到段落向量/句向量。对于大多数任务,PV-DM的方法表现很好,但我们也强烈推荐两种方法相结合。

    3. 基于gensim的doc2vec实践

    我们使用第三方库gensim进行doc2vec模型的训练

    # -*- coding: utf-8 -*-
    import sys
    import logging
    import os
    import gensim
    # 引入doc2vec
    from gensim.models import Doc2Vec
    curPath = os.path.abspath(os.path.dirname(__file__))
    rootPath = os.path.split(curPath)[0]
    sys.path.append(rootPath)
    from utilties import ko_title2words
    
    # 引入日志配置
    logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
    
    # 加载数据
    documents = []
    # 使用count当做每个句子的“标签”,标签和每个句子是一一对应的
    count = 0
    with open('../data/titles/ko.video.corpus','r') as f:
        for line in f:
            title = unicode(line, 'utf-8')
            # 切词,返回的结果是列表类型
            words = ko_title2words(title)
            # 这里documents里的每个元素是二元组,具体可以查看函数文档
            documents.append(gensim.models.doc2vec.TaggedDocument(words, [str(count)]))
            count += 1
            if count % 10000 == 0:
                logging.info('{} has loaded...'.format(count))
    
    # 模型训练
    model = Doc2Vec(documents, dm=1, size=100, window=8, min_count=5, workers=4)
    # 保存模型
    model.save('models/ko_d2v.model')

    接下来看看训练好的模型可以做什么

    def test_doc2vec():
        # 加载模型
        model = doc2vec.Doc2Vec.load('models/ko_d2v.model')
        # 与标签‘0’最相似的
        print(model.docvecs.most_similar('0'))
        # 进行相关性比较
        print(model.docvecs.similarity('0','1'))
        # 输出标签为‘10’句子的向量
        print(model.docvecs['10'])
        # 也可以推断一个句向量(未出现在语料中)
        words = u"여기 나오는 팀 다 가슴"
        print(model.infer_vector(words.split()))
        # 也可以输出词向量
        print(model[u'가슴'])

    以上都是一些比较常见的用法,更多的用法请参https://radimrehurek.com/gensim/models/doc2vec.html

关于命名实体识别的方法对比总结与原理初探 主要作用 优点 缺点 BERT BILSTM BIGRU BERT中demo:如图两个句子的分类任务(MNLI\QQP\QNLI\STS-B\MRPC\RTE\SWAG),单句的分类任务(SST-2\CoLA);问答任务(SQuAD v1.1);单句序列标注任务(CoNLL-2003 NER) 一、BERT 原理初探 原文下载地址:https://arxiv.org... 阅读详情

相关推荐

word2vec、doc2vec的使用

word2vec

静心净气的博客 6173

NLP基础--word2vec的使用Demo

文章目录1.python自带word2vec包的使用1.1 中文分词1.2 word2vec2. gensim之word2vec的使用参考 在网上搜到有直接使用python自带word2vec包,也有使用gensim中的word2vec包。下面就介绍这两种方法。 首先说明我的环境:使用Ubuntu16,python2. 1.python自带word2vec包的使用 数据:来源于搜狗实验室的搜狐新闻数据。下载的是完整版,如下图。 下载下来的文件名为news_sohusite_xml.full.tar.gz。

maqian5的博客 1191

Doc2Vec实战指南:从文档向量化到业务落地

文档向量化是文本语义理解的基础能力,其核心在于将非结构化文本映射为稠密、可计算的向量表示。原理上,它超越词袋模型与平均词向量,通过联合学习文档ID与词汇的分布式表示,捕获上下文、主题及隐式逻辑关系。技术价值体现在语义鲁棒性高、支持无监督聚类与跨文档检索,显著缓解同义词不同形、否定转折等NLP痛点。典型应用场景包括电商评论聚类、法律文书比对、客服对话归因和医疗报告编码。本文聚焦Doc2Vec——这一成熟稳定、轻量可部署的文档向量技术,结合PV-DM与PV-DBOW双路径设计、Gensim工业级实现及中文预处理

weixin_33924220的博客 431

关于doc2vec

原文地址:https://blog.youkuaiyun.com/john_xyz/article/details/79208564   1.“句向量”简介 word2vec提供了高质量的词向量,并在一些任务中表现良好。  关于word2vec的原理可以参考这几篇论文: https://arxiv.org/pdf/1310.4546.pdf https://arxiv.org/pdf/1301.37...

大脸猫的博客 1112

【LangChain编程:从入门到实践】文本嵌入

1. 背景介绍 文本嵌入(Text Embedding)是自然语言处理(NLP)的一个核心技术,用于将文本转换为连续的向量表示,以便在计算机上进行处理。文本嵌入可以帮助我们理解和分析文本数据,进行各种自然语言处理任务,如文本分类、文本聚类、文本搜索等。 LangChain是一个开源的Python框架,提供了许多用于构建自然语言处理应用程

AI天才研究院 548

Word2Vec和Doc2Vec模型:原理、应用及代码示例

Word2Vec和Doc2Vec是两种常用的词向量模型,它们可以将文本中的词语表示为连续向量,从而实现文本的语义建模和相似度计算。Doc2Vec模型是在Word2Vec的基础上扩展而来的,它可以学习到文档的向量表示。在Doc2Vec模型中,每个文档对应一个特定的向量,而每个单词也有自己的向量。在Word2Vec模型中,词向量的训练目标是使得具有相似上下文的词在向量空间中距离较近。句子匹配:将句子表示为向量后,可以通过计算向量之间的相似度来衡量句子之间的语义相似度,从而实现句子匹配和语义匹配等任务。

KdpdCode的博客 488

doc2vec原理

doc2vec和word2vec类似,Doc2vec也有两种训练方式,分别是Distributed Memory(DM) 和 Distributed Bag of Words(DBOW)。 DM 试图在给定上下文和段落向量的情况下预测单词的概率,与word2vec中CBOW类似,在一个句子或者文档的训练过程中,段落 ID 保持不变,共享着同一个段落向量; DBOW 则在仅给定段落向量的情况下预测段落中一组随机单词的概率,与word2vec中skip-gram类似。 1.DM模型 训练过程中新增了paragr

orangerfun的博客 1414

38、深入理解词嵌入:从理论到实践

本文深入探讨了词嵌入技术的核心模型与实践应用,涵盖Word2vec的CBOW和Skip-Gram架构、GloVE与Doc2vec模型原理,并详细解析了负采样、分层softmax等优化方法。通过SEC文件分析和Yelp评论情感分类等实际案例,展示了词向量在金融算法交易和文本分类中的价值。文章还介绍了使用gensim和Keras进行模型训练、TensorBoard可视化以及参数调优策略,最后展望了词嵌入在Transformer架构、多模态融合与领域自适应方面的未来趋势,为自然语言处理任务提供了全面的技术参考。

sky77的博客 53

【NLP】doc2vec原理及实践

点击上方,选择星标或置顶,每天给你送干货!阅读大概需要7分钟跟随小博主,每天进步一丢丢作者:Johnson0722链接:https://blog.youkuaiyun.com/John_xyz/a...

zenRRan的博客 668

告别WSL!用AMD ROCm7在Windows上跑ComfyUI,我的幻x2025 AI Max+ 395体验与性能调优心得

本文详细介绍了在搭载AMD Ryzen AI Max+ 395处理器的幻x2025笔记本上,如何通过ROCm7在Windows原生环境下高效运行ComfyUI,并分享了一系列性能调优技巧和实战经验,帮助开发者摆脱WSL束缚,提升AI创作效率。

weixin_29102619的博客 1115

Unity URP半透明物体深度排序优化:解决自交叠渲染瑕疵

本文深入探讨了Unity URP管线中半透明物体深度排序的优化方法,重点解决自交叠区域的渲染瑕疵问题。通过双通道渲染、深度预写入、多通道渲染等核心技术,结合实战案例和性能数据,帮助开发者实现高质量的透明效果渲染。

weixin_30879169的博客 419

Doc2vec原理解析及代码实践

本文概览:1. 句子向量简介Word2Vec提供了高质量的词向量,并在一些任务中表现良好。虽然Word2Vec提供了高质量的词汇向量,但是仍然没有有效的方法将它们结合成一个高质量的文档向...

abcdefg90876的博客 1378

用逐飞STC32G库做个智能小车:编码器测速、PWM调电机、ADC读电池电压(完整项目)

本文详细介绍了如何使用逐飞科技的STC32G12K128开源库构建智能小车项目,涵盖编码器测速、PWM电机控制和电池电压监测等核心功能。通过硬件选型、开发环境搭建、代码实现及调试技巧的全流程讲解,帮助开发者快速掌握基于STC32G的嵌入式系统开发,实现高性能的智能小车控制。

weixin_42526417的博客 195

【NLP】Doc2vec原理解析及代码实践

本文概览:1. 句子向量简介Word2Vec提供了高质量的词向量,并在一些任务中表现良好。虽然Word2Vec提供了高质量的词汇向量,但是仍然没有有效的方法将它们结合成一个高质量的文档向...

fengdu78的博客 2221

避坑指南:C#用S7NetPlus读写西门子PLC字符串(String/WString)的完整方案

本文详细解析了C#通过S7NetPlus读写西门子PLC字符串(String/WString)的完整方案,包括内存布局、编码差异和字节序处理等关键技术细节。提供了实战优化的代码示例和常见问题排查指南,帮助开发者避免乱码、截断等常见陷阱,提升工业自动化项目的开发效率。

weixin_32956805的博客 322

论文理解【LLM-Agent】——【SkillOpt】Executive Strategy for Self-Evolving Agent Skills

SkillOpt 将 agent skill 从人工或一次性 prompt artifact 转化为可验证、可控、可迁移的文本空间“可训练状态”,通过有界编辑、验证门控、拒绝编辑反馈和 slow/meta update,在不更新模型权重的情况下显著提升多类 agent 任务表现

佚失的诗篇 594

Gensim Doc2Vec 教程:把文档变成向量,轻松实现文档相似度搜索与分类

Gensim 是 Python 中最流行的自然语言处理库,而它的 **Doc2Vec(段落向量)** 模块可以把任意文档转换成一串数字组成的向量,从而实现**文档相似度搜索**与**文档分类**。本文面向新手,用最少代码带你走完「训练模型 → 搜相似文档 → 做分类」完整流程,并给出关键参数速查表和官方示例入口。 ## Doc2Vec 是什么:30秒看懂文档向量原理 想象每篇文档都有一把「语义

gitblog_01195的博客 316

Vivado 18.3安装全攻略:从下载到配置的完整指南

本文详细介绍了Vivado 18.3的安装全流程,从下载准备到配置优化,特别适合FPGA开发者。文章包含硬件要求、版本选择、组件配置等实用技巧,帮助用户避免常见安装问题,确保稳定运行。重点解析了License配置和系统优化设置,提升开发效率。

weixin_28331555的博客 567

Doc2vec

Doc2vec是Mikolov2014年提出的论文,也被成为Paragraph Vector,下面的内容分为三方面进行介绍,分别为: Doc2vec的原理 Doc2vec在推荐系统中的应用启发 Doc2vec的算法实现 1、Doc2vec的算法原理 如何学习得到Word的Vector表示 一个非常流行的学习Word Vector的方法如下图所示: Doc2vec的两种算法 Doc2vec其实包含了两种算法: PV-DM(Distributed Mem...

mudan97的博客 1075

1. 如何使用扣子工作流一键生成儿童绘本(可以发到小红书,微信公众号图文等)

本文介绍了使用扣子智能体一键生成儿童绘本的工作流。用户只需输入绘本主题,系统会自动生成Markdown格式内容,可直接发布到优快云、小红书等平台,还支持推送至微信公众号草稿箱。操作步骤包括:访问扣子网站导入工作流源代码,输入主题试运行,查看实时进度和最终输出结果。工作流编辑器会显示每个节点的执行状态和耗时,支持通过"查看日志"功能回溯历史运行记录。文末附有工作流源代码下载链接。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1248

Python 爬虫进阶:淘宝热卖商品价格走势抓取、反爬与分析全流程

在大数据时代,数据是商业决策的重要依据。电商平台上的商品价格走势,对于商家调整经营策略、消费者选择购买时机都有着关键的参考价值。本篇文章将深入解析如何利用 Python 爬虫抓取淘宝热卖商品的价格走势数据,并应对其中的反爬机制,最后对数据进行分析,带领大家领略 Python 爬虫在电商领域的强大应用。

yansideyucsdn的博客 1058

Doc2Vec实战指南:从文档向量化到业务决策落地

文档向量化是处理非结构化文本的核心技术,其原理在于为整篇文档学习一个可训练的语义ID向量,而非简单平均词向量。相比TF-IDF或词向量拼接,Doc2Vec能建模词序、上下文共现与文档级语义结构,具备天然的相似性度量能力。该技术在用户反馈聚类、知识库语义检索、客服工单路由等场景中展现出显著工程价值,尤其适用于中短文本密集型任务。本文聚焦PV-DM与PV-DBOW两种主流实现的选型逻辑、预处理关键细节(如专业词保留、长度归一化)、模型参数调优经验(vector_size=200、dbow_words=1),并结

weixin_29051811的博客 337

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

doc2vec 简介

1.简介word2vec 是词汇级别的, 那么如何延伸下去, 得到句子, 段落, 文档级别的分布式向量表示呢? Sentences vector, Paragraph Vector, Documents vector 几个概念差不多, 很多时候可以混用. Quoc Le 和 Tomas Mikolov(搞出Word2vec的家伙)两位大牛在2014年的《Distributed Represent

yichudu 2977

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

视频教程-NLP——实战文本向量-NLP

NLP——实战文本向量 从事软件开发行业二十余年,创业公司做过,上市公司也干...

weixin_33530096的博客 137

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: thrift实战教程
下一篇: TextCnn原理及实践
Johnson0722
博客等级 码龄10年 459粉丝 108原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值