word2vec原理+代码

word2vec原理&代码 详细全面总结 目录一、统计语言模型---必备基础知识二、词的表示学习类型1. 独热编码 one hot2. 分布式表示学习 distributed representation三、 word2vec1. CBOW2. skip gram训练优化方法四、word2vec代码实现词嵌入技术的发展参考文献 本文介绍word2vec必备基础知识,原理,结构,模型训练及代码。 表示学习:将研究对象的语义信息表示为稠密低维... 阅读详情

网上关于Word2vec的介绍有很多,由于在graph embedding中word2vec的广泛应用以及打算整理一版word embedding的系列内容,这里把word2vec单独拉开来讲。

关于graph embedding的更多内容:
graph embedding第一篇——deepwalk and line
graph embedding 第二篇 node2vec and sdne
graph embedding在大厂中的应用

参考

word2vec数学讲解
Keras版的Word2Vec
【不可思议的Word2Vec】 3.提取关键词
从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史

word2vec 简单解释

word2vec有两个训练方案,分别为CBOW和skip-gram:

  • CBOW使用周围词预测中心词,即 p ( w t ∣ c o n t e x t ) p(w_t|context) p(wt​∣context)
  • skip-gram 使用中心词,预测周围词,即 p ( c o n t e x t ∣ w t ) p(context|w_t) p(context∣wt​)

其架构图如下图所示:
在这里插入图片描述
而不论是CBOW 还是 skip-gram,计算 p p p的时候,其归一化因子要sum整个语料库的内容,计算量巨大,因此提出两种算法提升计算速度,他们分别是Hierarchical Softmax和Negative Sampling。

word2vec的缺陷:
word2vec无法处理同义词,比如bank,可以是银行也可以是河岸,但是使用word2vec得到的结果都是一样的。

这里就不详细去写CBOW和skip-gram架构如何训练,接下来主要介绍两种提速方式。

提速方法

Hierarchical Softmax

以CBOW为例,介绍层次softmax:
在这里插入图片描述

  • 输入层是包含 2 c 2c 2c个词的词向量
  • 投影层, x w = ∑ i = 1 2 c v ( c o n t e x t ( w i ) ) x_w=\sum_{i=1}^{2c} v(context(w_i)) xw​=∑i=12c​v(context(wi​))
  • 输出层,输出层对应一颗二叉树,其叶子节点对应其词,因此,共有 ∣ D ∣ |D| ∣D∣个叶子节点,其非叶子节点的值记为 θ \theta θ,如果 σ ( x w θ ) \sigma(x_w \theta) σ(xw​θ)为1,则进入左节点,否则进入右节点。

举例说明,比如说,使用【足球】的周围词预测【足球】:
在这里插入图片描述
令 d j w d_j^w djw​表示词 w w w的Huffman编码,他是一个非0即1的值。
我们不难写出其条件概率为:
p ( d j w ∣ x w , θ j − 1 w ) = [ σ ( x w T θ j − 1 w ) ] 1 − d j w ⋅ [ 1 − σ ( x w T θ j − 1 w ) ] d j w ] p(d_j^w|x_w,\theta_{j-1}^w)=[\sigma(x_w^T\theta_{j-1}^w)]^{1-d_j^w} \cdot [1-\sigma(x_w^T\theta_{j-1}^w)]^{d_j^w}] p(djw​∣xw​,θj−1w​)=[σ(xwT​θj−1w​)]1−djw​⋅[1−σ(xwT​θj−1w​)]djw​]
那么目标函数就出来了:
在这里插入图片描述
接下来要做的就是求梯度等等操作了。skip-gram和这个类似,就不细说了。

Negative Sampling

Negative sampling用于提高训练速度和改善所得词向量的质量。可以作为层次softmax的一种替代。该想法主要是抽取负样本的想法。那么对于给定的词 w w w,如何抽取其负样本呢?

词典 D D D中的词在语料库 C C C中出现的频次有高有低,我们希望,那么高频词被负采样的概率高,低频次被负采样的概率低。

令 l e n ( w ) = c o u n t e r ( w ) α ∑ i c o u n t e r ( w i ) α , α = 0.75 len(w)=\frac{counter(w)^\alpha}{\sum_i counter(w_i)^\alpha}, \alpha=0.75 len(w)=∑i​counter(wi​)αcounter(w)α​,α=0.75,记 l 0 = 0 , l k = ∑ j = 0 k l e n ( w j ) l_0=0,l_k=\sum_{j=0}^k len(w_j) l0​=0,lk​=∑j=0k​len(wj​), w j w_j wj​ 表示词典D的第j个词,不难得知, l l l为[0,1]区间的递增序列,并令 I i = ( l i − 1 , l i ] , i = 1 , 2 , ⋯   , N I_i=(l_{i-1},l_i],i=1,2,\cdots,N Ii​=(li−1​,li​],i=1,2,⋯,N为其中的一个区间,该划分是非等距的。进一步,引入等距剖分,划分 M M M个等距点,有 M > > N M>>N M>>N。具体见下图:
在这里插入图片描述
可以得到 m i m_i mi​到 I j I_j Ij​的映射关系,接下来就是每次从 [ 1 , M − 1 ] [1,M-1] [1,M−1]生成一个随机整数 r r r, m r m_r mr​对应的 I k ⇒ w k I_k⇒ w_k Ik​⇒wk​即为所采样的样本。

word2vec提取关键词

来源于苏神的思路

更多关于关键词提取的算法:
关键词提取技术——无监督方法
关键词提取——有监督方法

关键词提取技术本质上是可以通过关键词获取到文章大意,也就是说,我们的目标是让 p ( s ∣ w i ) p(s|w_i) p(s∣wi​)越大越好。
p ( s ∣ w i ) = p ( w 1 , w 2 , ⋯   , w n ∣ w i ) = ∏ k p ( w k ∣ w i ) p(s|w_i)=p(w_1,w_2,\cdots,w_n|w_i)=\prod_k p(w_k|w_i) p(s∣wi​)=p(w1​,w2​,⋯,wn​∣wi​)=k∏​p(wk​∣wi​)
这样我们只需要计算出 p ( w k ∣ w i ) p(w_k|w_i) p(wk​∣wi​)就可以了。上面我们介绍了huffman树,想要求 p ( w k ∣ w j ) p(w_k|w_j) p(wk​∣wj​),就是求路径上每个节点的概率,我们有:
在这里插入图片描述
因此,我们可以将计算的最大的概率,作为关键词。
苏神给的链接:

链接: https://pan.baidu.com/s/1htC495U 密码: 4ff8
包含文件:word2vec_wx, word2vec_wx.syn1neg.npy, word2vec_wx.syn1.npy, word2vec_wx.wv.syn0.npy,4个文件都是Gensim加载模型所必需的。具体每个文件的含义我也没弄清楚,word2vec_wx大概是模型声明,word2vec_wx.wv.syn0.npy应该就是我们所说的词向量表,word2vec_wx.syn1.npy是隐层到输出层的参数(Huffman树的参数),word2vec_wx.syn1neg.npy就不大清楚了~
如果你只关心词向量,也可以下载C版本的格式(跟C版本Word2Vec兼容,只包含词向量):
链接: https://pan.baidu.com/s/1nv3ANLB 密码: dgfw

import numpy as np
import gensim
from collections import Counter
import pandas as pd 
import jieba

model = gensim.models.word2vec.Word2Vec.load('your model path')

def predict_proba(oword, iword):
    iword_vec = model[iword]
    oword = model.wv.vocab[oword]
    oword_l = model.syn1[oword.point].T # syn1有Huffman树的参数
    dot = np.dot(iword_vec, oword_l)
    lprob = -sum(np.logaddexp(0, -dot) + oword.code*dot) 
    return lprob

def keywords(s):
    s = [w for w in s if w in model]
    ws = {w:sum([predict_proba(u, w) for u in s]) for w in s}
    return Counter(ws).most_common()


s = u'太阳是一颗恒星'
pd.Series(keywords(jieba.cut(s)))

word2vec keras 版代码

#! -*- coding:utf-8 -*-
#Keras版的Word2Vec,作者:苏剑林,http://kexue.fm
#Keras 2.0.6 + Tensorflow 测试通过

import numpy as np
from keras.layers import Input,Embedding,Lambda
from keras.models import Model
import keras.backend as K

word_size = 128 #词向量维度
window = 5 #窗口大小
nb_negative = 16 #随机负采样的样本数
min_count = 10 #频数少于min_count的词将会被抛弃
nb_worker = 4 #读取数据的并发数
nb_epoch = 2 #迭代次数,由于使用了adam,迭代次数1~2次效果就相当不错
subsample_t = 1e-5 #词频大于subsample_t的词语,会被降采样,这是提高速度和词向量质量的有效方案
nb_sentence_per_batch = 20
#目前是以句子为单位作为batch,多少个句子作为一个batch(这样才容易估计训练过程中的steps参数,另外注意,样本数是正比于字数的。)

import pymongo
class Sentences: #语料生成器,必须这样写才是可重复使用的
    def __init__(self):
        self.db = pymongo.MongoClient().weixin.text_articles
    def __iter__(self):
        for t in self.db.find(no_cursor_timeout=True).limit(100000):
            yield t['words'] #返回分词后的结果

sentences = Sentences()
words = {} #词频表
nb_sentence = 0 #总句子数
total = 0. #总词频

for d in sentences:
    nb_sentence += 1
    for w in d:
        if w not in words:
            words[w] = 0
        words[w] += 1
        total += 1
    if nb_sentence % 10000 == 0:
        print u'已经找到%s篇文章'%nb_sentence

words = {i:j for i,j in words.items() if j >= min_count} #截断词频
id2word = {i+1:j for i,j in enumerate(words)} #id到词语的映射,0表示UNK
word2id = {j:i for i,j in id2word.items()} #词语到id的映射
nb_word = len(words)+1 #总词数(算上填充符号0)

subsamples = {i:j/total for i,j in words.items() if j/total > subsample_t}
subsamples = {i:subsample_t/j+(subsample_t/j)**0.5 for i,j in subsamples.items()} #这个降采样公式,是按照word2vec的源码来的
subsamples = {word2id[i]:j for i,j in subsamples.items() if j < 1.} #降采样表

def data_generator(): #训练数据生成器
    while True:
        x,y = [],[]
        _ = 0
        for d in sentences:
            d = [0]*window + [word2id[w] for w in d if w in word2id] + [0]*window
            r = np.random.random(len(d))
            for i in range(window, len(d)-window):
                if d[i] in subsamples and r[i] > subsamples[d[i]]: #满足降采样条件的直接跳过
                    continue
                x.append(d[i-window:i]+d[i+1:i+1+window])
                y.append([d[i]])
            _ += 1
            if _ == nb_sentence_per_batch:
                x,y = np.array(x),np.array(y)
                z = np.zeros((len(x), 1))
                yield [x,y],z
                x,y = [],[]
                _ = 0

#CBOW输入
input_words = Input(shape=(window*2,), dtype='int32')
input_vecs = Embedding(nb_word, word_size, name='word2vec')(input_words)
input_vecs_sum = Lambda(lambda x: K.sum(x, axis=1))(input_vecs) #CBOW模型,直接将上下文词向量求和

#构造随机负样本,与目标组成抽样
target_word = Input(shape=(1,), dtype='int32')
negatives = Lambda(lambda x: K.random_uniform((K.shape(x)[0], nb_negative), 0, nb_word, 'int32'))(target_word)
samples = Lambda(lambda x: K.concatenate(x))([target_word,negatives]) #构造抽样,负样本随机抽。负样本也可能抽到正样本,但概率小。

#只在抽样内做Dense和softmax
softmax_weights = Embedding(nb_word, word_size, name='W')(samples)
softmax_biases = Embedding(nb_word, 1, name='b')(samples)
softmax = Lambda(lambda x: 
                    K.softmax((K.batch_dot(x[0], K.expand_dims(x[1],2))+x[2])[:,:,0])
                )([softmax_weights,input_vecs_sum,softmax_biases]) #用Embedding层存参数,用K后端实现矩阵乘法,以此复现Dense层的功能

#留意到,我们构造抽样时,把目标放在了第一位,也就是说,softmax的目标id总是0,这可以从data_generator中的z变量的写法可以看出

model = Model(inputs=[input_words,target_word], outputs=softmax)
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
#请留意用的是sparse_categorical_crossentropy而不是categorical_crossentropy

model.fit_generator(data_generator(), 
                    steps_per_epoch=nb_sentence/nb_sentence_per_batch, 
                    epochs=nb_epoch,
                    workers=nb_worker,
                    use_multiprocessing=True
                   )

model.save_weights('word2vec.model')

#通过词语相似度,检查我们的词向量是不是靠谱的
embeddings = model.get_weights()[0]
normalized_embeddings = embeddings / (embeddings**2).sum(axis=1).reshape((-1,1))**0.5

def most_similar(w):
    v = normalized_embeddings[word2id[w]]
    sims = np.dot(normalized_embeddings, v)
    sort = sims.argsort()[::-1]
    sort = sort[sort > 0]
    return [(id2word[i],sims[i]) for i in sort[:10]]

import pandas as pd
pd.Series(most_similar(u'科学'))
Word2vec 原理公式推到和代码实现 本文摘录整编了一些理论介绍,推导了word2vec中的数学原理;并考察了一些常见的word2vec实现,评测其准确率等性能,最后分析了word2vec原版C代码;针对没有好用的Java实现的现状,移植了原版C程序到Java。时间和水平有限,本文没有就其发展历史展开多谈,只记录了必要的知识点,并着重关注工程实践。 虽然我的Java方案速度比原版C程序高出1倍,在算法代码与原版C程序一致的情况下 阅读详情

相关推荐

word2vec模型原理(附python实现代码)

•LDA是一种文档主题生成模型,也称为三层贝叶斯概率模型,包含词、主题和文档三层结构。利用文档中单词的共现关系来对单词按主题聚类,得到“文档-主题”和“主题-单词”2个概率分布。 •LDA认为一篇文章的每个词都是通过以一定概率选择了某个主题,并从这个主题中以一定概率选择某个词语。 •LDA是一种非监督机器学习技术,可以用来识别大规模文档集或语料库中潜藏的主题信息。它采用了词袋(bag of words)的方法,将每一篇文档视为一个词频向量,从而将文本信息转化为易于建模的数字信息。每一篇文档代表了一些主题

咕噜君的博客 3270

NLP | word2vec图文详解及代码

在一个常规的 one-hot 编码向量中,所有单词之间的距离都相同,即使它们的含义完全不同,丢了编码中的位置信息使用 Word2Vec 等词嵌入方法,生成的向量可以更好地维护上下文。例如,猫和狗比鱼和鲨鱼更相似。Word2vec 是一个两层神经网络,通过“向量化”单词来处理文本。它的,它的:表示该语料库中单词的特征向量。虽然 Word2vec 不是,但它将文本转换为深度神经网络可以理解的数字形式。词嵌入(word Embeding)词嵌入是一种将单个词转换为词的数字表示(向量)的技术。

weixin_44649780的博客 3759

深度学习笔记——Word2vec和Doc2vec原理理解并结合代码分析

一直在用Word2vec和Doc2vec做Embedding,但是刚开始用的时候对其原理一直是一知半解,只是知道怎么用而已。古人云:既要知其然,也要知其所以然。所以,结合作者论文,以及网上各位前辈的博客和开源代码之后,抽空写写自己对Word2vec和Doc2vec原理的理解,以及结合代码做一些分析。希望能够有用,有错误也请各位朋友批评指正!

mpk_no1的博客 4万+

【自然语言处理】Word2Vec 词向量模型详解 + Python代码实战

如下图所示,在神经网络初始化的时候,我们会随机初始化一个 N×K 的矩阵,其中 N 是 词典的大小,K 是词向量的维数(一个自行设定的超参数)。下面提出了一个初始解决方案:假设,传统模型中,我们输入 not ,希望输出是 thou,但是由于语料库庞大,最后一层 SoftMax 太过耗时,所以我们可以改为:将 not 和 thou 同时作为输入,做一个二分类问题,类别 1 表示 not 和 thou 是邻居,类别 0 表示它们不是邻居。如下图所示,在词向量模型中,输入可以是多个词。

知不足而奋进,望远山而前行 5万+

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

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

KdpdCode的博客 488

Word2Vec原理与代码实例讲解

Word2Vec原理与代码实例讲解 作者:禅与计算机程序设计艺术 / Zen and the Art of Computer Programming 1. 背景介绍 1.1 问题的由来 在自然语言处理(NLP)领域,如何将文本数

AI大模型应用之禅 824

Word2vec详解(附Gensim代码)

简单讲解word2vec及其代码

m0_62965652的博客 5820

Word2Vec 算法原理和具体的代码实现

在 Skip-Gram 模型中,我们的目标是给定一个输入单词,预测在其上下文中出现的其他单词。例如,如果我们将窗口大小设置为 2,则对于输入单词 “playing”,其上下文单词为 “love”、“soccer”、“with” 和 “my”。例如,如果我们将窗口大小设置为 2,则对于输入单词 “playing”,其上下文单词为 “love”、“soccer”、“with” 和 “my”。Skip-Gram 通过预测给定词周围的词来学习词向量,而 CBOW 通过预测给定词周围词的中心词来学习词向量。

AI天才研究院 7313

Word2Vec理解与代码演示

Word2Vec理解与与演示简介新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 简介 Word2Vec被认为是自然语言处理(NLP)领域最大的、最近的突破之一。在谷歌、百度等搜索引擎搜索时会返回多个关于如何在标准库(如Ge

lengxuelianhan的博客 1665

新手必看:瑞萨MCU选型时,QFP、QFN、BGA这些封装到底该怎么选?(附选型避坑指南)

本文详细解析了瑞萨MCU选型中QFP、QFN、BGA等封装的特点与适用场景,提供实战避坑指南。通过对比封装的空间占用、散热能力、焊接难度等核心维度,帮助工程师根据具体需求选择最合适的芯片封装,避免因选型不当导致的高成本与生产问题。

weixin_26965807的博客 421

AirSim中图像API的应用

解析Airsim图像获取保存的api

fegxg的博客 1605

NLP系列(一) 解读Word2Vec原理与代码复现

本文概览:Word2Vec是语言模型中的一种,它是从大量文本预料中以无监督方式学习语义知识的模型,被广泛地应用于自然语言处理中。Word2Vec是用来生成词向量的工具,而词向量与语言模型有着密切的关系。因此,我们先来了解一些语言模型方面的知识。1.1 统计语言模型统计语言模型是用来计算一个句子的概率的概率模型,它通常基于一个语料库来构建。那什么叫做一个句子的概率呢?假设W=(w1,w2,…,wT)W=(w_1,w_2,\ldots,w_T)W=(w1​,w2​,…,wT​) 表示由T个词w1,w2,…,wT

专注于人工智能学习,总结 3936

TLSv1.0与TLSv1.1安全漏洞深度解析与实战修复指南

本文深度解析TLSv1.0与TLSv1.1的安全漏洞,包括POODLE和BEAST攻击原理,并提供实战修复指南。通过禁用老旧协议、配置安全加密套件和网络层防护措施,有效提升系统安全性。文章还针对无法立即升级的场景,给出了补偿性防御方案,帮助管理员全面应对传输层安全风险。

weixin_29322855的博客 206

Word2Vec原理及代码

一、Word2Vec简介   Word2Vec 是 Google 于 2013 年开源推出的一款将词表征为实数值向量的高效工具,采用的模型有CBOW(Continuous Bag-Of-Words,连续的词袋模型)和Skip-gram两种。Word2Vec通过训练,可以把对文本内容的处理简化为K维向量空间中的向量运算,而向量空间上的相似度可以用来表示文本语义上的相似度。因此,Word2Vec输出...

weixin_33982670的博客 798

《AFSim 2.9中文参考手册》

本栏目将对《AFSim 2.9中文参考手册》进行持续更新,欢迎关注交流!对本文或者AFSIM相关内容感兴趣的朋友,可私心联系作者。《AFSim 2.9中文参考手册》内容概览。

henggesim的博客 1万+

手把手教你用X-AnyLabeling实现医学图像标注:从SAM模型选择到多边形优化全流程

本文详细介绍了如何使用X-AnyLabeling平台结合Med-SAM等专业模型实现医学图像的高效标注。从环境配置、模型部署到实战工作流,涵盖智能辅助标注、低对比度解决方案及团队协作方案,帮助医疗从业者大幅提升标注效率与质量。特别适合处理CT/MRI等医学影像的复杂标注需求。

weixin_29251131的博客 456

Word2Vec原理+代码

代码方面据说有两种方法使用word2Vec gensim应该是比较常用的 Gensim中 Word2Vec 模型的期望输入是进过分词的句子列表,即是某个二维数组 原理方面 :两个模型: 总而言之就是这样的 在CBOW和skip-gram讲解完成后,我们会发现Word2Vec模型是一个超级大的神经网络(权重矩阵规模非常大)。 举个例子,我们拥有10000个单词的词汇表,我们如果想嵌入300维的词向量,那么我们的输入-隐层权重矩阵和隐层-输出层的权重矩阵都会有 10000 x 300 = 300万个权重,

qq_33837905的博客 322

微信公众号 - 超详细 H5 网页接入微信支付功能,开发网站微信支付最详细的教程示例代码(微信公众号前端支付 JS-SDK / JSAPI 微信H5授权登录支付,唤起微信支付)最新超级详细教程

H5页面接入微信支付功能,前端网页端怎么做微信JSAPI支付,vue网站接入微信JSSDK支付,vueH5项目如何做使用微信支付,端h5调用微信支付jsapi方法,前端vue开发的H5网站怎么微信支付最详细的教程示例代码,vue怎么调取微信支付流程,将H5接入微信支付退款,vue网站怎么搞微信支付,H5前端开发网站在微信环境内H5调起微信支付,react项目h5如何调用微信支付的方法,nuxt.js项目vueH5集成微信JS支付,网站怎么做出H5微信公众号支付,请问vue.js这个框

🏆 前端领域优质创作者 8126

word2vec的原理及实现(附github代码)

目录 一、word2vec原理 二、word2vec代码实现 (1)获取文本语料 (2)载入数据,训练并保存模型 ① # 输出日志信息 ② # 将语料保存在sentence中 ③ # 生成词向量空间模型 ④ # 保存模型 (3)加载模型,实现功能 (4)增量训练 最近要用到文本词向量,借此机会重温一下word2vec。本文会讲解word2vec的原理和代码实现。 本...

yip的个人博客 2万+

关于红队方面的学习资料

关于红队方面的学习资料

Sumarua的博客 1084

霜冰优化算法(RIME)详解:从自然现象到智能优化

霜冰优化算法(RIME)是一种新型元启发式优化算法,灵感源于自然界中霜冰的形成过程。该算法通过模拟软霜和硬霜的不同生长特性,实现了高效的全局探索和局部开发平衡。RIME算法包含三个核心机制:软霜搜索策略模拟随机覆盖特性实现全局探索;硬霜穿刺机制模拟定向生长特性进行局部开发;正向贪婪选择机制确保解的持续优化。与遗传算法、粒子群算法相比,RIME具有参数少、收敛快、自适应平衡等优势,特别适合处理高维复杂优化问题。算法已在工程优化、机器学习等领域获得广泛应用,发表一年内即成为高被引论文。

qq_42212808的博客 783

word2vec原理推导与代码分析

为什么80%的码农都做不了架构师?>>> ...

weixin_34072857的博客 232

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【手撕算法】【NLP】【Embedding】word2vec原理,代码实现

word2vec原理,逐步图解工作流程,代码实战

weixin_42279212的博客 3234

OV9734 DATASHEET,完整规格书

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

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

word2vec原理及论文代码复现

把手写笔记搬上来,以后就用博客进行学习记录了,加油! word2vec 总结 1、两种方式:CBOW(context(w) --->w), skip-gram(w--->context(w)) 但其实这两个的区别只是CBOW中的center word作为context的mean,梯度下降法更新center word后,再以同尺度、同时更新所有context words;而sk...

Clairezcy的博客 940

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: graph embedding在大厂中的应用
下一篇: 常用word embedding简介
一只小菜狗:D
博客等级 码龄7年 4658粉丝 25原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值