Word2Vec基本实践
系列文章目录
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 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_size=2):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, bias=False) # 从嵌入大小到词汇表大小的线性层(权重矩阵)self.hidden_to_output = nn.Linear(embedding_size, voc_size, bias=False) 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_hidden=nn.Embedding(voc_size,embeding_size)self.hidden_to_output=nn.Linear(embeding_size,voc_size,bias=False)def forward(self,X):hidden_layer=self.input_to_hidden(X)output_layer=self.hidden_to_output(hidden_layer)return output_layervoc_size=len(words_list)
skipgram_model=SkipGram(voc_size,embeding_size=2)
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(), lr=learning_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]], dtype=torch.long) # 将周围词转换为索引值 y_pred = skipgram_model(X) # 计算预测值loss = criterion(y_pred, y_true) # 计算损失loss_sum += loss.item() # 累积损失optimizer.zero_grad() # 清空梯度loss.backward() # 反向传播optimizer.step() # 更新参数if (epoch+1) % 100 == 0: # 输出每100轮的损失,并记录损失print(f"Epoch: {epoch+1}, 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]), fontsize=12) # 点旁添加单词标签
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_size=2):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, bias=False) # 从嵌入大小到词汇表大小的线性层(权重矩阵)self.hidden_to_output = nn.Linear(embedding_size, voc_size, bias=False) 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, dim=0) # 生成输出层:[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(), lr=learning_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]], dtype=torch.long) # 将目标词转换为索引值y_pred = cbow_model(X) # 计算预测值loss = criterion(y_pred, y_true) # 计算损失loss_sum += loss.item()optimizer.zero_grad() # 清空梯度loss.backward() # 反向传播optimizer.step() # 更新参数if (epoch+1) % 100 == 0: # 输出每100轮的损失,并记录损失print(f"Epoch: {epoch+1}, 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]), fontsize=12) # 点旁添加单词标签
plt.title('2维词嵌入') # 图题
plt.xlabel('向量维度1') # X轴Label
plt.ylabel('向量维度2') # Y轴Label
plt.show() # 显示图
相关文章:
![](https://img-blog.csdnimg.cn/img_convert/51beceda88eaf8dc7942bc8aa05982d9.png)
Word2Vec基本实践
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目…...
![](https://img-blog.csdnimg.cn/direct/344135e7cb974469ae859366e4e2bf37.png)
IIS配置網站登錄驗證,禁止匿名登陸
需要維護一個以前的舊系統,這個系統在內網運行,需要抓取電腦的登陸賬號,作為權限管理的一部分因此需要在IIS配置一下...
![](https://img-blog.csdnimg.cn/direct/b2d7b5c39261455c9491ca30f1431385.png)
抖音矩阵系统搭建,AI剪辑短视频,一键管理矩阵账号
目录 前言: 一、抖音矩阵系统有哪些功能? 1.AI智能文案 2.多平台账号授权 3.多种剪辑模式 4. 矩阵一键发布,智能发布 5.抖音爆店码功能 6.私信实时互动 7.去水印及外链 二、抖音矩阵系统可以解决哪些问题? 总结ÿ…...
![](https://img-blog.csdnimg.cn/direct/ce56741fcaf94e3192fee4d3190fcf4d.jpeg)
山东大学软件学院创新项目实训开发日志——收尾篇
山东大学软件学院创新项目实训开发日志——收尾篇 项目名称:ModuFusion Visionary:实现跨模态文本与视觉的相关推荐 -------项目目标: 本项目旨在开发一款跨模态交互式应用,用户可以上传图片或视频,并使用文本、点、…...
![](https://www.ngui.cc/images/no-images.jpg)
vue2.7支持组合式API,但是对应的vue-router3并不支持useRoute、useRouter。
最近在做一个项目,因为目标用户浏览器版本并不确定,可能会有较旧版本,于是采用vue2.7而不是vue3,最近一年多使用vue3开发的项目都碰到了很多chrome 63-73版本,而对应UI 库 element plus又问题很多。 为了不碰到这些问…...
![](https://img-blog.csdnimg.cn/img_convert/a892f6f400721f08b40c4ebebf3886fa.png)
摊位纠纷演变肢体冲突,倒赔了500:残疾夫妇与摊主谁之过?
在一个小商贩密集的街区,一起由摊位纠纷引发的肢体冲突事件在当地社区和网络上引起了热议。涉事双方为一名摊主和一对残疾夫妇,他们的争执源自对一个摊位的使用权。本是口头上的争吵,却由于双方情绪激动,迅速升级为肢体冲突&#…...
![](https://img-blog.csdnimg.cn/img_convert/8cd716831d1d7c6eda4ea4c7d4d43540.png)
深入理解和实现Windows进程间通信(消息队列)
常见的进程间通信方法 常见的进程间通信方法有: 管道(Pipe)消息队列共享内存信号量套接字 下面,我们将详细介绍消息队列的原理以及具体实现。 什么是消息队列? Windows操作系统使用消息机制来促进应用程序与操作系…...
![](https://www.ngui.cc/images/no-images.jpg)
Web网页前端教程免费:引领您踏入编程的奇幻世界
Web网页前端教程免费:引领您踏入编程的奇幻世界 在当今数字化时代,Web前端技术已成为互联网发展的重要驱动力。想要踏入这一领域,掌握相关技能,却苦于找不到合适的教程?别担心,本文将为您带来一份免费的We…...
![](https://img-blog.csdnimg.cn/direct/ab8b88cb3f29496f81661ad60de957c5.jpeg)
北斗短报文终端在应急消防通信场景中的应用
在应对自然灾害和紧急情况时,北斗三号短报文终端以其全球覆盖、实时通信和精准定位的能力,成为应急消防通信的得力助手。它不仅能够在地面通信中断的极端条件下保障信息传递的畅通,还能提供精准的位置信息,为救援行动提供有力支持…...
![](https://www.ngui.cc/images/no-images.jpg)
Java跳动爱心代码
1.计算爱心曲线上的点的公式 计算爱心曲线上的点的公式通常基于参数方程。以下是两种常见的参数方程表示方法,用于绘制爱心曲线: 1.1基于 (x, y) 坐标的参数方程 x a * (2 * cos(θ) - sin(θ))^3 y a * (2 * sin(θ) - cos(θ))^3 其中ÿ…...
![](https://www.ngui.cc/images/no-images.jpg)
Swift Combine — Operators(常用Filtering类操作符介绍)
目录 filter(_: )tryFilter(_: )compactMap(_: )tryCompactMap(_: )removeDuplicates()first(where:)last(where:) Combine中对 Publisher的值进行操作的方法称为 Operator(操作符)。 Combine中的 Operator通常会生成一个 Publisher,该 …...
![](https://img-blog.csdnimg.cn/direct/64796c996fac4d67b143a62d5fea4c37.png)
Windows11+CUDA12.0+RTX4090如何配置安装Tensorflow2-GPU环境?
1 引言 电脑配置 Windows 11 cuda 12.0 RTX4090 由于tensorflow2官网已经不支持cuda11以上的版本了,配置cuda和tensorflow可以通过以下步骤配置实现。 2 步骤 (1)创建conda环境并安装cuda和cudnn,以及安装tensorflow2.10 con…...
![](https://img-blog.csdnimg.cn/direct/80db7d440d9041e59d123b27a39beef7.png)
韩顺平0基础学Java——第27天
p548-568 明天开始坦克大战 Entry 昨天没搞明白的Map、Entry、EntrySet://GPT教的 Map 和 Entry 的关系 1.Map 接口:它定义了一些方法来操作键值对集合。常用的实现类有 HashMap、TreeMap 等。 2. Entry接口:Entry 是 Map 接口的一个嵌…...
![](https://img-blog.csdnimg.cn/direct/a98fac722f33469c85937ca096e72edf.png)
YesPMP探索Python在生活中的应用,助力提升开发效率
Python是一种简单易学、高效强大的编程语言,正变成越来越多人选择的热门技能。学习Python不仅可以提供更多就业机会,还能让自己在职场更加有竞争力,那可以去哪里拓展自己的技能呢? YesPMP平台 为熟练掌握Python语言的程序员提供了…...
![](https://img-blog.csdnimg.cn/img_convert/df071cc3a3dd5b210e8c281e786768d7.jpeg)
TikTok账号运营:静态住宅IP为什么可以防封?
静态住宅IP代理服务是一种提供稳定、静态IP地址并可隐藏用户真实IP地址的网络代理服务。此类代理服务通常使用高速光纤网络来提供稳定、高速的互联网体验。与动态IP代理相比,静态住宅IP代理的IP地址更稳定,被封的可能性更小,因此更受用户欢迎…...
![](https://img-blog.csdnimg.cn/direct/029c06d04e5c412d862ebe4cbaebbf06.png)
linux系统宝塔服务器temp文件夹里总是被上传病毒php脚本
目录 简介 上传过程 修复上传漏洞 tmp文件夹总是被上传病毒文件如下图: 简介 服务器时不时的会发送短信说你服务器有病毒, 找到了这个tmp文件, 删除了之后又有了。 确实是有很多人就这么无聊, 每天都攻击你的服务器。 找了很久的原因, 网上也提供了一大堆方法,…...
![](https://img-blog.csdnimg.cn/direct/8d8e22dfce9847448c6ddc8dca1f69d6.jpeg)
HTML+CSS+PHP实现网页留言板功能(需要创建数据库)
话说前头,我这方面很菜滴。这是我网页作业的一部分。 1.body部分效果展示(不包括footer) 2、代码 2.1 leaving.php(看到的网页) <!DOCTYPE html> <html lang"en"> <head> <met…...
![](https://www.ngui.cc/images/no-images.jpg)
【谷歌】实用的搜索技巧
1、使用正确的谷歌网址 我们知道https://www.google.com是谷歌的网址。但根据国家,用户可能会被重定向到 google.fr(法国)或google.co.in(印度)。 最主要的URL——google.com是为美国用户准备的(或是针对全世界所有用户的唯一URL))。当你在谷歌上搜索时,了解这一点是相…...
![](https://img-blog.csdnimg.cn/direct/4649ecdb5ad5484184a364be446b973e.png)
打造完美启动页:关键策略与设计技巧
启动页(Splash Screen)设计是指在应用程序启动时,首先展示给用户的界面设计。这个界面通常在应用加载或初始化期间显示,其主要目的是为用户提供一个视觉缓冲,展示品牌标识,并减少用户在等待过程中的焦虑感。…...
![](https://img-blog.csdnimg.cn/direct/52acab7501b1451391236e80665ed178.png)
电子书(chm)-加载JS--CS上线
免责声明: 本文仅做技术交流与学习... 目录 cs--web投递 html(js)代码 html生成chm工具--EasyCHM 1-选择powershell 模式 生成 2-选择bitsadmin模式生成 chm反编译成html cs--web投递 cs配置监听器--->攻击---->web投递---> 端口选择没占用的, URL路径到时候会在…...
![](https://img-blog.csdnimg.cn/direct/073859d10b514a319b6c508a01448375.png)
理解HTTP请求格式
HTTP概念 HTTP全称HyperTextTransfer Protocol(超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议;HTTP是一个客户端(用户)和服务端(网站)之间请求和响应的标准。 HTTP 协议是以 ASCII 码传输&…...
![](https://img-blog.csdnimg.cn/f95ddae62a4e43a68295601c723f92fb.gif#pic_center)
差分数组汇总
本文涉及知识点 算法与数据结构汇总 差分数组 令 a[i] ∑ j : 0 i v D i f f [ i ] \sum_{j:0}^{i}vDiff[i] ∑j:0ivDiff[i] 如果 vDiff[i1],则a[i1…]全部 如果vDiff[i2]–,则a[i2…]全部–。 令11 < i2 ,则: { a [ i ] 不变&…...
![](https://img-blog.csdnimg.cn/direct/f84b10800fe74045ac94f28f234b2b20.png)
SpringBoot | 实现邮件发送
运行环境: IntelliJ IDEA 2022.2.5 (Ultimate Edition) (注意:idea必须在2021版本以上)JDK17 项目目录: 该项目分为pojo,service,controller,utils四个部分, 在pojo层里面写实体内容(发邮件需要的发件人邮…...
![](https://img-blog.csdnimg.cn/direct/ff1018bad6e341efb0619b38adaa9dd7.png)
spring boot接入nacos 配置中心
再接入nacos配置中心时,需要确认几点: 1. spring boot 版本 (spring boot 2.x ) 2. nacos 配置中心 服务端 版本 (1.1.4) 3. nacos client 客户端版本 (1.1.4) 方式一 1. 启动 nacos 服务端,这里不做解释 在配置中心中加入几个配置 2. 在…...
![](https://img-blog.csdnimg.cn/direct/6bf029949c76413ea68220b5b52cd0ac.png)
产品应用 | 小盒子跑大模型!英码科技基于算能BM1684X平台实现大模型私有化部署
当前,在人工智能领域,大模型在丰富人工智能应用场景中扮演着重要的角色,经过不断的探索,大模型进入到落地的阶段。而大模型在落地过程中面临两大关键难题:对庞大计算资源的需求和对数据隐私与安全的考量。为应对这些挑…...
![](https://img-blog.csdnimg.cn/direct/049b02fe77594e8a8273a0b3c37ba02b.png)
uniapp中u-input点击事件失效
当给u-input设置了disabled/readonly属性后,pc浏览器中点击事件失效,但是app/移动端h5中却仍有效 解决办法 给外边包上一个盒子设置点击事件,给input加上css属性:pointer-events:none pointer-events CSS 属性指定在什…...
![](https://www.ngui.cc/images/no-images.jpg)
[机器学习] 监督学习和无监督学习
监督学习和无监督学习是机器学习的两种主要方法,它们之间有几个关键区别: 1. 定义 监督学习(Supervised Learning): 使用带标签的数据进行训练。数据集包括输入特征和对应的输出标签。目标是学习从输入特征到输出标签…...
![](https://www.ngui.cc/images/no-images.jpg)
使用Python进行自然语言处理:从基础到实战
使用Python进行自然语言处理:从基础到实战 自然语言处理(Natural Language Processing, NLP)是人工智能的重要领域,旨在处理和分析自然语言数据。Python凭借其丰富的库和社区支持,成为NLP的首选编程语言。本文将介绍自然语言处理的基础概念、常用的Python库以及一个实战项…...
![](https://www.ngui.cc/images/no-images.jpg)
Hadoop面试题总结
一 、介绍一下hadoop 综述:hadoop是一个适合海量数据的分布式存储和分布式计算的平台 分述:hadoop包含三大组件,分别是HDFS、MapReduce和YARN --HDFS(分布式文件系统) HDFS集群由NameNode,DataNode,SecondaryNameNode构成NameNode:主要负责接受用户请求…...
![](https://img-blog.csdnimg.cn/direct/353f413acff84348a9f01e990694106a.png)
关于IntelliJ IDEA 2024.1版本更新的问题
希望文章能给到你启发和灵感~ 感谢支持和关注~ 阅读指南 序幕一、基础环境说明1.1 硬件环境1.2 软件环境 二、起因三、解决四、总结 序幕 近期,IntelliJ IDEA 推出了全新2024版本,相信很多编程的爱好者或者刚接触编程的小伙伴都会…...
![](https://img-blog.csdnimg.cn/img_convert/bbef5cf78ef116ddd214de3a2a6e151f.png)
ps做网站字体用多大的/b2b推广网站
我拿到票据了, 可以卖肉了吗? SSO: 只能买一两, 不能再多了 单点登录的认证过程是如何的, 比方说单点登录服务D, 子系统A和B, A B D和浏览器之间是如何通信的 以下是单点登录(SSO)过程的详细步骤: 用户尝试访问子系统A。子系统A检查用户是否…...
成都专业建设网站/免费的网站域名查询565wcc
一、摄像头工作原理 上一篇我们讲了摄像头模组的组成,工作原理,做为一种了解。下面我们析摄像头从寄存器角度是怎么工作的。如何阅读摄像头规格书(针对驱动调节时用到关键参数,以GT2005为例)。 规格书,也就…...
![](https://img-blog.csdnimg.cn/img_convert/b3a9653c24322c126ca0436783a6a385.jpeg)
上海城隍庙门票多少钱/娄底地seo
讲述 | 余承东 编辑 | HiEV 从2月到3月,网络上关于华为、问界和AITO的疑问讨论不断。先是在2月,华为将AITO宣传物料中的主要品牌替换成了「 HUAWEI问界」。 随后在华为年报会上,轮值董事长徐直军又指出:「有的个人、部门或者合作…...
![](https://img-blog.csdnimg.cn/img_convert/895f3aa3502c16e22d8e9221fe9a5252.png)
网站策划 要求/长沙百度开户
堆是堆(heap),栈是栈(stack),堆栈是栈。栈中分配的是基本类型和自定义对象的引用。堆中分配的是对象,也就是new出来的东西。 被所有线程共享。方法区/静态区 存放的是类信息和static变量、常量。 被所有线程共享。也可以…...
![](https://img-blog.csdnimg.cn/73eb685a02ed4471a36be37787e8facd.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAb1_nk5znlLDmnY7kuItfbw==,size_20,color_FFFFFF,t_70,g_se,x_16)
浮梁网站建设/海外seo是什么
nacos zookeeper数据迁移 官网:https://nacos.io/zh-cn/docs/nacos-sync-use.html nacos-sync:https://github.com/nacos-group/nacos-sync nacos-sync nacos-sync 支持迁移的数据中心 nacos <> nacos:支持0.8到1.0及以上版本的nacos数…...
![](https://images2018.cnblogs.com/blog/1333040/201803/1333040-20180325132722215-840532209.png)
wordpress修改背景/推广页面
20172330 2017-2018-1 《Java程序设计》第三周学习总结 教材学习内容总结 这一章的主要内容是关于类与对象,通过对String类,Random类,Math类等一系列道德具体讲解与应用,让我们对创建对象有了更深的了解。 同时也对格式化输出进行…...