当前位置: 首页 > news >正文

做汽车新闻哪个网站好广西柳州网站建设公司

做汽车新闻哪个网站好,广西柳州网站建设公司,淘宝营销推广方案,seo分析师系列文章目录 提示#xff1a;这里可以添加系列文章的所有文章的目录#xff0c;目录需要自己手动添加 例如#xff1a;第一章 Python 机器学习入门之pandas的使用 提示#xff1a;写完文章后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 文章目…系列文章目录 提示这里可以添加系列文章的所有文章的目录目录需要自己手动添加 例如第一章 Python 机器学习入门之pandas的使用 提示写完文章后目录可以自动生成如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、使用SkipGram 模型1. 构建实验语料库2. 生成Skip-Gram训练数据3. 对Skip-Gram数据进行One-Hot编码4. 定义Skip-Gram模型5. 训练Skip-Gram模型6. 输出Skip-Gram词向量 二、使用CBOW 模型1. 构建实验语料库2. 生成CBOW训练数据3. CBOW数据进行One-Hot编码4. 定义CBOW模型5. 训练CBOW模型6. 输出CBOW词向量 前言 提示这里可以添加本文要记录的大概内容 例如随着人工智能的不断发展机器学习这门技术也越来越重要很多人都开启了学习机器学习本文就介绍了机器学习的基础内容。 提示以下是本篇文章正文内容下面案例可供参考 一、使用SkipGram 模型 1. 构建实验语料库 # 定义一个句子列表后面会用这些句子来训练CBOW和Skip-Gram模型 sentences [Kage is Teacher, Mazong is Boss, Niuzong is Boss,Xiaobing is Student, Xiaoxue is Student,] # 将所有句子连接在一起然后用空格分隔成词汇 words .join(sentences).split() # 构建词汇表去除重复的词 word_list list(set(words)) # 创建一个字典将每个词汇映射到一个唯一的索引 word_to_idx {word: idx for idx, word in enumerate(word_list)} # 创建一个字典将每个索引映射到对应的词汇 idx_to_word {idx: word for idx, word in enumerate(word_list)} voc_size len(word_list) # 计算词汇表的大小 print(词汇表, word_list) # 输出词汇表 print(词汇到索引的字典, word_to_idx) # 输出词汇到索引的字典 print(索引到词汇的字典, idx_to_word) # 输出索引到词汇的字典 print(词汇表大小, voc_size) # 输出词汇表大小2. 生成Skip-Gram训练数据 # 生成Skip-Gram训练数据 def create_skipgram_dataset(sentences, window_size2):data []for sentence in sentences:sentence sentence.split() # 将句子分割成单词列表for idx, word in enumerate(sentence): # 遍历单词及其索引# 获取相邻的单词将当前单词前后各N个单词作为相邻单词for neighbor in sentence[max(idx - window_size, 0): min(idx window_size 1, len(sentence))]:if neighbor ! word: # 排除当前单词本身# 将相邻单词与当前单词作为一组训练数据data.append((neighbor, word))return data # 使用函数创建Skip-Gram训练数据 skipgram_data create_skipgram_dataset(sentences) # 打印未编码的Skip-Gram数据样例 print(Skip-Gram数据样例未编码, skipgram_data)3. 对Skip-Gram数据进行One-Hot编码 # 定义One-Hot编码函数 import torch # 导入torch库 def one_hot_encoding(word, word_to_idx):# 创建一个全为0的张量长度与词汇表大小相同tensor torch.zeros(len(word_to_idx)) tensor[word_to_idx[word]] 1 # 将对应词汇的索引位置置为1return tensor # 返回生成的One-Hot向量# 展示One-Hot编码前后的数据 word_example Teacher print(One-Hot编码前的单词, word_example) print(One-Hot编码后的向量, one_hot_encoding(word_example, word_to_idx))# 展示编码后的Skip-Gram数据样例 print(Skip-Gram数据样例已编码, [(one_hot_encoding(context, word_to_idx), word_to_idx[target]) for context, target in skipgram_data[:3]])4. 定义Skip-Gram模型 # 定义Skip-Gram模型 import torch.nn as nn # 导入neural network class SkipGram(nn.Module):def __init__(self, voc_size, embedding_size):super(SkipGram, self).__init__()# 从词汇表大小到嵌入大小的线性层权重矩阵self.input_to_hidden nn.Linear(voc_size, embedding_size, biasFalse) # 从嵌入大小到词汇表大小的线性层权重矩阵self.hidden_to_output nn.Linear(embedding_size, voc_size, biasFalse) def forward(self, X): # X : [batch_size, voc_size] # 生成隐藏层[batch_size, embedding_size]hidden_layer self.input_to_hidden(X) # 生成输出层[batch_size, voc_size]output_layer self.hidden_to_output(hidden_layer) return output_layerembedding_size 2 # 设定嵌入层的大小这里选择2是为了方便展示 skipgram_model SkipGram(voc_size,embedding_size) # 实例化SkipGram模型 print(Skip-Gram模型, skipgram_model)##建立skipgram模型--使用nn.embedding层替代线性层import torch.nn as nn class SkipGram(nn.Module):def __init__(self,voc_size,embeding_size):super(SkipGram,self).__init__()self.input_to_hiddennn.Embedding(voc_size,embeding_size)self.hidden_to_outputnn.Linear(embeding_size,voc_size,biasFalse)def forward(self,X):hidden_layerself.input_to_hidden(X)output_layerself.hidden_to_output(hidden_layer)return output_layervoc_sizelen(words_list) skipgram_modelSkipGram(voc_size,embeding_size2)5. 训练Skip-Gram模型 # 训练Skip-Gram模型 learning_rate 0.001 # 设置学习速率 epochs 1000 # 设置训练轮次 criterion nn.CrossEntropyLoss() # 定义交叉熵损失函数 import torch.optim as optim # 导入随机梯度下降优化器 optimizer optim.SGD(skipgram_model.parameters(), lrlearning_rate) # 开始训练循环 loss_values [] # 用于存储每轮的平均损失值 for epoch in range(epochs):loss_sum 0 # 初始化损失值for context, target in skipgram_data: X one_hot_encoding(target, word_to_idx).float().unsqueeze(0) # 将中心词转换为One-Hot向量 y_true torch.tensor([word_to_idx[context]], dtypetorch.long) # 将周围词转换为索引值 y_pred skipgram_model(X) # 计算预测值loss criterion(y_pred, y_true) # 计算损失loss_sum loss.item() # 累积损失optimizer.zero_grad() # 清空梯度loss.backward() # 反向传播optimizer.step() # 更新参数if (epoch1) % 100 0: # 输出每100轮的损失并记录损失print(fEpoch: {epoch1}, Loss: {loss_sum/len(skipgram_data)}) loss_values.append(loss_sum / len(skipgram_data))# 绘制训练损失曲线 import matplotlib.pyplot as plt # 导入matplotlib plt.plot(range(1, epochs//100 1), loss_values) # 绘图 plt.title(Training Loss) # 图题 plt.xlabel(Epochs) # X轴Label plt.ylabel(Loss) # Y轴Label plt.show() # 显示图6. 输出Skip-Gram词向量 # 输出Skip-Gram习得的词嵌入 print(\nSkip-Gram词嵌入:) for word, idx in word_to_idx.items(): # 输出每个单词的嵌入向量print(f{word}: \{skipgram_model.input_to_hidden.weight[:, idx].detach().numpy()}) plt.rcParams[font.family][SimHei] # 用来设定字体样式 plt.rcParams[font.sans-serif][SimHei] # 用来设定无衬线字体样式 plt.rcParams[axes.unicode_minus]False # 用来正常显示负号 # 绘制二维词向量图 fig, ax plt.subplots() for word, idx in word_to_idx.items():vec skipgram_model.input_to_hidden.weight[:, \idx].detach().numpy() # 获取每个单词的嵌入向量ax.scatter(vec[0], vec[1]) # 在图中绘制嵌入向量的点ax.annotate(word, (vec[0], vec[1]), fontsize12) # 点旁添加单词标签 plt.title(2维词嵌入) # 图题 plt.xlabel(向量维度1) # X轴Label plt.ylabel(向量维度2) # Y轴Label plt.show() # 显示图二、使用CBOW 模型 1. 构建实验语料库 # 定义一个句子列表后面会用这些句子来训练CBOW和CBOW模型 sentences [Kage is Teacher, Mazong is Boss, Niuzong is Boss,Xiaobing is Student, Xiaoxue is Student,] # 将所有句子连接在一起然后用空格分隔成词汇 words .join(sentences).split() # 构建词汇表去除重复的词 word_list list(set(words)) # 创建一个字典将每个词汇映射到一个唯一的索引 word_to_idx {word: idx for idx, word in enumerate(word_list)} # 创建一个字典将每个索引映射到对应的词汇 idx_to_word {idx: word for idx, word in enumerate(word_list)} voc_size len(word_list) # 计算词汇表的大小 print(词汇表, word_list) # 输出词汇表 print(词汇到索引的字典, word_to_idx) # 输出词汇到索引的字典 print(索引到词汇的字典, idx_to_word) # 输出索引到词汇的字典 print(词汇表大小, voc_size) # 输出词汇表大小 2. 生成CBOW训练数据 # 生成CBOW训练数据 def create_cbow_dataset(sentences, window_size2):data []for sentence in sentences:sentence sentence.split() # 将句子分割成单词列表for idx, word in enumerate(sentence): # 遍历单词及其索引# 获取上下文词汇将当前单词前后各window_size个单词作为上下文词汇context_words sentence[max(idx - window_size, 0):idx] \ sentence[idx 1:min(idx window_size 1, len(sentence))]# 将当前单词与上下文词汇作为一组训练数据data.append((word, context_words))return data# 使用函数创建CBOW训练数据 cbow_data create_cbow_dataset(sentences) # 打印未编码的CBOW数据样例前三个 print(CBOW数据样例未编码, cbow_data[:3]) 3. CBOW数据进行One-Hot编码 # 定义One-Hot编码函数 import torch # 导入torch库 def one_hot_encoding(word, word_to_idx):# 创建一个全为0的张量长度与词汇表大小相同tensor torch.zeros(len(word_to_idx)) tensor[word_to_idx[word]] 1 # 将对应词汇的索引位置置为1return tensor # 返回生成的One-Hot向量# 展示One-Hot编码前后的数据 word_example Teacher print(One-Hot编码前的单词, word_example) print(One-Hot编码后的向量, one_hot_encoding(word_example, word_to_idx))# 展示编码后的CBOW数据样例 # 展示编码后的CBOW数据样例 print(CBOW数据样例已编码, [(one_hot_encoding(target, word_to_idx), [one_hot_encoding(context, word_to_idx) for context in context_words]) for target, context_words in cbow_data[:3]]) 4. 定义CBOW模型 # 定义CBOW模型 import torch.nn as nn # 导入neural network# 定义CBOW模型 class CBOW(nn.Module):def __init__(self, voc_size, embedding_size):super(CBOW, self).__init__()# 从词汇表大小到嵌入大小的线性层权重矩阵self.input_to_hidden nn.Linear(voc_size, embedding_size, biasFalse) # 从嵌入大小到词汇表大小的线性层权重矩阵self.hidden_to_output nn.Linear(embedding_size, voc_size, biasFalse) def forward(self, X): # X: [num_context_words, voc_size]# 生成嵌入[num_context_words, embedding_size]embeddings self.input_to_hidden(X) # 计算隐藏层求嵌入的均值[embedding_size]hidden_layer torch.mean(embeddings, dim0) # 生成输出层[1, voc_size]output_layer self.hidden_to_output(hidden_layer.unsqueeze(0)) return output_layerembedding_size 2 # 设定嵌入层的大小这里选择2是为了方便展示 cbow_model CBOW(voc_size,embedding_size) # 实例化cbow模型 print(CBOW模型, cbow_model) 5. 训练CBOW模型 # 训练CBOW模型 learning_rate 0.001 # 设置学习速率 epochs 1000 # 设置训练轮次 criterion nn.CrossEntropyLoss() # 定义交叉熵损失函数 import torch.optim as optim # 导入随机梯度下降优化器 optimizer optim.SGD(cbow_model.parameters(), lrlearning_rate) # 开始训练循环 loss_values [] # 用于存储每轮的平均损失值 for epoch in range(epochs):loss_sum 0for target, context_words in cbow_data:# 将上下文词转换为One-hot向量并堆叠X torch.stack([one_hot_encoding(word, word_to_idx) for word in context_words]).float() y_true torch.tensor([word_to_idx[target]], dtypetorch.long) # 将目标词转换为索引值y_pred cbow_model(X) # 计算预测值loss criterion(y_pred, y_true) # 计算损失loss_sum loss.item()optimizer.zero_grad() # 清空梯度loss.backward() # 反向传播optimizer.step() # 更新参数if (epoch1) % 100 0: # 输出每100轮的损失并记录损失print(fEpoch: {epoch1}, Loss: {loss_sum/len(cbow_data)}) loss_values.append(loss_sum / len(cbow_data)) # 绘制训练损失曲线 import matplotlib.pyplot as plt # 导入matplotlib plt.plot(range(1, epochs//100 1), loss_values) # 绘图 plt.title(Training Loss) # 图题 plt.xlabel(Epochs) # X轴Label plt.ylabel(Loss) # Y轴Label plt.show() # 显示图 6. 输出CBOW词向量 # 输出CBOW习得的词嵌入 print(\nCBOW词嵌入:) for word, idx in word_to_idx.items(): # 输出每个单词的嵌入向量print(f{word}: \{cbow_model.input_to_hidden.weight[:, idx].detach().numpy()}) plt.rcParams[font.family][SimHei] # 用来设定字体样式 plt.rcParams[font.sans-serif][SimHei] # 用来设定无衬线字体样式 plt.rcParams[axes.unicode_minus]False # 用来正常显示负号 # 绘制二维词向量图 fig, ax plt.subplots() for word, idx in word_to_idx.items():vec cbow_model.input_to_hidden.weight[:, \idx].detach().numpy() # 获取每个单词的嵌入向量ax.scatter(vec[0], vec[1]) # 在图中绘制嵌入向量的点ax.annotate(word, (vec[0], vec[1]), fontsize12) # 点旁添加单词标签 plt.title(2维词嵌入) # 图题 plt.xlabel(向量维度1) # X轴Label plt.ylabel(向量维度2) # Y轴Label plt.show() # 显示图
http://www.hkea.cn/news/14358194/

相关文章:

  • 营销型网站工程优化公司内部流程
  • 建设三类人员报考网站网站内容管理
  • 各大网站平台发布信息怎么做简单的视频网站
  • 有没类似建设通的免费网站网站硬件方案
  • 织梦网站定制深圳建站费用
  • 网站开发时间计划网站手机版
  • 天津城乡住房建设厅网站首页什么都能买到的网站
  • 做网站设计的广告公司自己动手的网站
  • 百度怎么注册自己的网站简易的在线数据库网站模板
  • 泰州专业做网站的公司263网站建设
  • 横店影视城网站建设山西建工网登录
  • win2008 iis7创建网站管理员网站后台上传本地视频
  • 国内企业建站模板做iframe跳转怎么自适应网站
  • 杭州网站建设app蒙古文政务网站建设工作汇报
  • 网站建设行业2017东莞网络推广
  • 网站运营代理柘城县网站建设
  • 苏州市住房建设局网站淘宝装修免费模板有哪些网站
  • 2008vps做网站外链建设给网站起的作用
  • 做百度网站还是安居客网站深圳高端商场排名
  • 建设项目银行网站兴国电商网站建设
  • 网站策划的最终体现是什么wordpress单本小说源码
  • 早教网站模板安徽建设工程信息网官
  • 先备案还是先做网站珠海建设工程监督站网站
  • 新郑网站开发WordPress小程序导航主题
  • 免费生成图片的网站手机网络不稳定怎么解决
  • 汕头网站建设网站建设基于django的电子商务网站设计
  • 做的网站有广告共享影院 wordpress
  • 建站公司合同模板ih5 wordpress
  • 个人网站设计要求营销公司取名字大全
  • 接口网站开发有app怎么做网站