咸阳网站建设费用,树莓派可以做网站的服务器吗,比较好的网站建设企业,官网建站哪个程序最好目录
一、关于word2vec
1、什么是word2vec
2、常用训练算法
1#xff09;CBOW
2#xff09;SkipGram
二、关于npy、npz文件
1、npy文件
1#xff09;定义
2#xff09;特性
3#xff09;用途
4#xff09;保存及读取
运行结果#xff1a;
运行结果#xf…目录
一、关于word2vec
1、什么是word2vec
2、常用训练算法
1CBOW
2SkipGram
二、关于npy、npz文件
1、npy文件
1定义
2特性
3用途
4保存及读取
运行结果
运行结果
2、npz文件
1定义
2用途
3保存及读取
运行结果
运行结果
三、CBOW案例解析
1、获取训练集数据
调试结果
2、生成one-hot
运行结果
3、创建CBOW类
4、cuda、优化器
5、开始训练
运行结果
6、测试
运行结果
7、获取词向量矩阵
运行结果
8、生成词嵌入字典
9、保存为npz文件
运行结果 一、关于word2vec
1、什么是word2vec Word2Vec是一种用于将单词表示为连续向量的技术。它是一种浅层、双层的神经网络模型用于训练单词的分布式表示。 Word2Vec模型将单词映射到一个低维向量空间中使得具有相似含义的单词在向量空间中距离较近。这种表示方法有助于在自然语言处理任务中更好地捕捉和理解单词之间的语义关系。 2、常用训练算法 1CBOW 以上下文词汇预测当前词前后两个单词预测当前词这里的两个单词是自定义个数的 2SkipGram 以当前词预测其上下文词汇即当前词预测前后两个单词这里的两个单词也是自定义个数的 二、关于npy、npz文件
1、npy文件 1定义 npy文件是NumPy库中用于保存数组数据的二进制文件格式。 2特性 二进制存储npy文件以二进制形式存储数据比文本文件如CSV更加高效地保存大型数组数据。二进制格式允许直接映射到内存从而加快了读写速度。 数据完整性npy文件不仅保存数组的数据还包含了数组的形状维度、数据类型以及其他必要的元数据信息。这确保了数据的完整性使得在加载数据时可以完全重现保存时的数组而无需任何额外的转换或解析。 跨平台性npy文件的格式是跨平台的可以在不同的操作系统和硬件环境中进行加载和使用。 3用途 npy文件的设计目的是为了在数据分析和科学计算领域中提供一种高效的存储和读取NumPy数组数据的方式。 4保存及读取
保存为npy文件
a np.random.randint(5,size(2,4))
np.save(test.npy,a)运行结果 读取npy文件
b np.load(test.npy)
print(b) 运行结果 2、npz文件 1定义 npz文件是NumPy用于存储数值数据的压缩格式。它实际上是一个压缩存档文件可以包含一个或多个NumPy数组。 2用途 npz文件通常用于存储和传输大量的数值数据特别是在科学计算和数据分析领域。 3保存及读取
保存为npz文件
a np.random.randint(0,10,(3,),dtypeint)
b np.random.randint(0,10,(3,),dtypeint)
c np.random.randint(0,10,(3,),dtypeint)
np.savez(test.npz,file1a,file2b,file3c) # 压缩储存数组并给数组 分别命名 运行结果 读取npz文件
data np.load(test.npz)
print(data.files) # 读取其内文件名
aa data[data.files[0]] # 读取文件内容
bb data[data.files[1]]
cc data[data.files[2]]
print(read:,aa,bb,cc) # 打印文件内容 运行结果 三、CBOW案例解析
1、获取训练集数据
import torch
import torch.nn as nn # 神经网络
import torch.nn.functional as F
import torch.optim as optim
from tqdm import tqdm,trange # 显示进度条函数
import numpy as npCONTEX_SIZE 2 # 设置词左边和右边选择的个数(即上下文词汇个数)
raw_text
We are about to study the idea of a computational process.
Computational processes are abstract beings that inhabit computers.
As they evolve, processes manipulate other abstract things called data.
The evolution of a process is directed by a pattern of rules
called a program. People create programs to direct processes.
In effect we conjure the spirits of the computer with our spells.
.split() # 语料库# 中文的语句你可以选择分词也可以选择分字
vocab set(raw_text) # 利用集合的唯一性建立词库集合内元素不重复
vocab_size len(vocab) # 打印词库长度# enumerate返回一个可迭代对象的元素内容及其索引
word_to_idx {word:i for i,word in enumerate(vocab)} # for循环的复合写法第1次循环i得到的索引号word 第1个单词
idx_to_word {i:word for i,word in enumerate(vocab)}data [] # 用于存放分割出来的元组元组内有两个元素一个数前后对应的四个单词另一个是中间的词
for i in range(CONTEX_SIZE,len(raw_text)-CONTEX_SIZE): # 遍历值为上述设置的左右两边词长度2到文章总次数-2i从2开始context ([raw_text[i-(2-j)] for j in range(CONTEX_SIZE)] # 获取前两个单词 [raw_text[ij1] for j in range(CONTEX_SIZE)] # 获取后两个单词) # 获取上下文词第一组为([wearetostudy])target raw_text[i] # 获取目标词第一个词为aboutdata.append((context,target)) # 将上下文词和目标词保存到data中第一组格式为(([we,aretostudy]),about) 调试结果 2、生成one-hot
def make_context_vector(context,word_to_idx): # 将上下文词转换为one-hotidxs [word_to_idx[w] for w in context] # 遍历四个词返回四个词对应的索引将索引存入列表return torch.tensor(idxs,dtypetorch.long) # 返回创建的一个torch张量内容为词在词库中对应的索引# 上述函数的示例
print(make_context_vector(data[0][0],word_to_idx)) # 将前后两组单词以及上述定义的字典传入自定义函数返回其在词库中的索引运行结果 3、创建CBOW类
class CBOW(nn.Module): # 定义一个CBOW的类其继承nn.Module,nn.Module是PyTorch中所有神经网络模块的基类提供了模型构建所需的基本功能。def __init__(self,vocab_size,embedding_dim): # 初始化super(CBOW,self).__init__()self.embeddings nn.Embedding(vocab_size,embedding_dim) # vocab_size表示需要训练的词的个数embedding_dim表示每个单词嵌入的维度大小self.proj nn.Linear(embedding_dim,128) # 额外增强的全连接层self.output nn.Linear(128,vocab_size)def forward(self,inputs): # 前向传播传入数据的索引embeds sum(self.embeddings(inputs)).view(1,-1) # 将索引传入上述的Embedding词嵌入层进行处理然后对结果求和最后调整形状为1embedding_dim-1表示根据张量的大小自动计算该位置上的维度out F.relu(self.proj(embeds)) # 将词嵌入的结果进行线性变换然后再进行relu激活函数处理即小于0的变为0大于0的不变out self.output(out) # 输出层nll_prob F.log_softmax(out,dim-1) # 使用softmax激活函数将原始输出值转换为概率分布的对数形式,dim-1 指定了对最后一个维度进行计算return nll_prob 4、cuda、优化器
# m模型在cuda训练
device cuda if torch.cuda.is_available() else mps if torch.backends.mps.is_available() else cpu
print(device)
model CBOW(vocab_size,10).to(device) # 将词库长度和每个单词嵌入的维度大小传入模型然后放入GPU进行运算optimizer optim.Adam(model.parameters(),lr0.001) # 创建一个Adam优化器对模型的参数进行优化
# model.parameters()返回模型中所有可训练参数的迭代器lr表示学习率 5、开始训练
losses [] # 存储损失的集合
loss_function nn.NLLLoss() # NLLLoss损失函数(当分类列表非常多的情况)将多个类别分别分成0、1两个类别。
for epoch in tqdm(range(200)): # 开始训练tqdm表示展示一个进度条200表示循环展示200次total_loss 0 # 用于储存当前epoch的总损失每轮将总损失增加到列表for context,target in data: # 遍历元组中的左右四个词以及中间的一个词context_vecter make_context_vector(context,word_to_idx).to(device) # 通过遍历将所有的四个词以及词组对应的字典传入函数,返回对应的索引然后传入GPUtarget torch.tensor([word_to_idx[target]]).to(device) # 返回中间的词对应的索引然后转换为torch张量传入GPUtrain_predict model(context_vecter) # 将每一组数据的四个索引传入模型进行前向传播model.forward可以不写forward# print(train_predict) # 打印返回的每一个数对应的概率值对数形式loss loss_function(train_predict,target) # 将上述模型返回的预测结果与真实值传入负对数似然损失函数进行计算得到损失值optimizer.zero_grad() # 梯度清零loss.backward() # 反向传播计算得到每个参数梯度值optimizer.step() # 根据梯度更新网络参数total_loss loss.item() # 叠加损失值losses.append(total_loss)
print(losses)运行结果 6、测试
# 测试
context [People,create,to,direct]
context_vector make_context_vector(context,word_to_idx).to(device)# 预测的值
model.eval() # 进入测试模式
predict model(context_vector)
max_idx predict.argmax(1).item() # dim1表示每一行中的最大值对应的索引号dim0表示每一列中最大值对应的索引号
print(f{,.join(context)}中间的单词为,idx_to_word[max_idx]) 运行结果 7、获取词向量矩阵
W model.embeddings.weight.cpu().detach().numpy() # 获取词嵌入层的权重因为模型在GPU训练先将其传入CPUdetach()表示分理处张量然后将其转变为numpy数组类型
print(W) # 打印模型的词嵌入矩阵 运行结果 8、生成词嵌入字典
word_2_vec {}
for word in word_to_idx.keys():# 词向量矩阵中某个词的索引对应的那一列即为该词的词向量word_2_vec[word] W[word_to_idx[word],:]
print(结束) 9、保存为npz文件
np.savez(word2vec实现.npz,file_1W)
data np.load(word2vec实现.npz)
print(data.files) 运行结果 文章转载自: http://www.morning.wwklf.cn.gov.cn.wwklf.cn http://www.morning.pqwrg.cn.gov.cn.pqwrg.cn http://www.morning.tkryt.cn.gov.cn.tkryt.cn http://www.morning.oumong.com.gov.cn.oumong.com http://www.morning.hbpjb.cn.gov.cn.hbpjb.cn http://www.morning.hlxxl.cn.gov.cn.hlxxl.cn http://www.morning.mdpkf.cn.gov.cn.mdpkf.cn http://www.morning.qqbw.cn.gov.cn.qqbw.cn http://www.morning.ybhjs.cn.gov.cn.ybhjs.cn http://www.morning.znmwb.cn.gov.cn.znmwb.cn http://www.morning.slpcl.cn.gov.cn.slpcl.cn http://www.morning.qrmry.cn.gov.cn.qrmry.cn http://www.morning.dfltx.cn.gov.cn.dfltx.cn http://www.morning.nkhdt.cn.gov.cn.nkhdt.cn http://www.morning.wrbf.cn.gov.cn.wrbf.cn http://www.morning.tqqfj.cn.gov.cn.tqqfj.cn http://www.morning.xqkjp.cn.gov.cn.xqkjp.cn http://www.morning.kqpsj.cn.gov.cn.kqpsj.cn http://www.morning.zdfrg.cn.gov.cn.zdfrg.cn http://www.morning.wttzp.cn.gov.cn.wttzp.cn http://www.morning.kwhrq.cn.gov.cn.kwhrq.cn http://www.morning.daxifa.com.gov.cn.daxifa.com http://www.morning.nswcw.cn.gov.cn.nswcw.cn http://www.morning.krnzm.cn.gov.cn.krnzm.cn http://www.morning.tqrjj.cn.gov.cn.tqrjj.cn http://www.morning.gydsg.cn.gov.cn.gydsg.cn http://www.morning.rfwgg.cn.gov.cn.rfwgg.cn http://www.morning.rlxnc.cn.gov.cn.rlxnc.cn http://www.morning.rrgqq.cn.gov.cn.rrgqq.cn http://www.morning.ylklr.cn.gov.cn.ylklr.cn http://www.morning.xqndf.cn.gov.cn.xqndf.cn http://www.morning.wqwbj.cn.gov.cn.wqwbj.cn http://www.morning.tdmr.cn.gov.cn.tdmr.cn http://www.morning.a3e2r.com.gov.cn.a3e2r.com http://www.morning.lzrpy.cn.gov.cn.lzrpy.cn http://www.morning.dwgcx.cn.gov.cn.dwgcx.cn http://www.morning.cjmmt.cn.gov.cn.cjmmt.cn http://www.morning.dxqfh.cn.gov.cn.dxqfh.cn http://www.morning.zrrgx.cn.gov.cn.zrrgx.cn http://www.morning.gfnsh.cn.gov.cn.gfnsh.cn http://www.morning.homayy.com.gov.cn.homayy.com http://www.morning.jiuyungps.com.gov.cn.jiuyungps.com http://www.morning.dnmwl.cn.gov.cn.dnmwl.cn http://www.morning.bwmq.cn.gov.cn.bwmq.cn http://www.morning.blfgh.cn.gov.cn.blfgh.cn http://www.morning.cwjsz.cn.gov.cn.cwjsz.cn http://www.morning.gjqgz.cn.gov.cn.gjqgz.cn http://www.morning.lwxsy.cn.gov.cn.lwxsy.cn http://www.morning.kwdfn.cn.gov.cn.kwdfn.cn http://www.morning.zcnfm.cn.gov.cn.zcnfm.cn http://www.morning.lcbt.cn.gov.cn.lcbt.cn http://www.morning.tnyanzou.com.gov.cn.tnyanzou.com http://www.morning.gsksm.cn.gov.cn.gsksm.cn http://www.morning.rpdmj.cn.gov.cn.rpdmj.cn http://www.morning.ybqlb.cn.gov.cn.ybqlb.cn http://www.morning.rlbg.cn.gov.cn.rlbg.cn http://www.morning.yzxhk.cn.gov.cn.yzxhk.cn http://www.morning.rwpfb.cn.gov.cn.rwpfb.cn http://www.morning.nlqgb.cn.gov.cn.nlqgb.cn http://www.morning.rwzkp.cn.gov.cn.rwzkp.cn http://www.morning.jjxxm.cn.gov.cn.jjxxm.cn http://www.morning.snrbl.cn.gov.cn.snrbl.cn http://www.morning.bqfpm.cn.gov.cn.bqfpm.cn http://www.morning.llmhq.cn.gov.cn.llmhq.cn http://www.morning.kgjyy.cn.gov.cn.kgjyy.cn http://www.morning.kydrb.cn.gov.cn.kydrb.cn http://www.morning.plznfnh.cn.gov.cn.plznfnh.cn http://www.morning.jrrqs.cn.gov.cn.jrrqs.cn http://www.morning.fmkjx.cn.gov.cn.fmkjx.cn http://www.morning.hrpjx.cn.gov.cn.hrpjx.cn http://www.morning.ghwdm.cn.gov.cn.ghwdm.cn http://www.morning.rfxw.cn.gov.cn.rfxw.cn http://www.morning.lprfk.cn.gov.cn.lprfk.cn http://www.morning.wnhgb.cn.gov.cn.wnhgb.cn http://www.morning.zgqysw.cn.gov.cn.zgqysw.cn http://www.morning.rkrl.cn.gov.cn.rkrl.cn http://www.morning.bkppb.cn.gov.cn.bkppb.cn http://www.morning.fbbmg.cn.gov.cn.fbbmg.cn http://www.morning.qfwfj.cn.gov.cn.qfwfj.cn http://www.morning.wrkcw.cn.gov.cn.wrkcw.cn