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

基于CBOW模型的词向量训练实战:从原理到PyTorch实现

基于CBOW模型的词向量训练实战:从原理到PyTorch实现

在自然语言处理(NLP)领域,词向量是将单词映射为计算机可处理的数值向量的重要方式。通过词向量,单词之间的语义关系能够以数学形式表达,为后续的文本分析、机器翻译、情感分析等任务奠定基础。本文将结合连续词袋模型(CBOW),详细介绍如何使用PyTorch训练词向量,并通过具体代码实现和分析训练过程。

一、CBOW模型原理简介

CBOW(Continuous Bag-of-Words)模型是一种用于生成词向量的神经网络模型,它基于上下文预测目标词。其核心思想是:给定一个目标词的上下文单词,通过模型预测该目标词。在训练过程中,模型会不断调整参数,使得预测结果尽可能接近真实的目标词,最终训练得到的词向量能够捕捉单词之间的语义关系。

例如,在句子 “People create programs to direct processes” 中,如果目标词是 “programs”,CBOW模型会利用其上下文单词 “People”、“create”、“to”、“direct” 来预测 “programs”。通过大量类似样本的训练,模型能够学习到单词之间的语义关联,从而生成有效的词向量。

二、代码实现与详细解析

下面我会逐行解释你提供的代码,此代码借助 PyTorch 实现了一个连续词袋模型(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 np
  • torch:PyTorch 深度学习框架的核心库。
  • torch.nn:用于构建神经网络的模块。
  • torch.nn.functional:提供了许多常用的函数,像激活函数等。
  • torch.optim:包含各种优化算法。
  • tqdmtrange:用于在训练过程中显示进度条。
  • numpy:用于处理数值计算和数组操作。

2. 定义上下文窗口大小和原始文本

CONTEXT_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()
  • CONTEXT_SIZE:上下文窗口的大小,意味着在预测目标词时,会考虑其前后各 CONTEXT_SIZE 个单词。
  • raw_text:原始文本,将其按空格分割成单词列表。

3. 构建词汇表和索引映射

vocab = set(raw_text)  # 集合,词库,里面的内容独一无二(将文本中所有单词去重后得到的词汇表)
vocab_size = len(vocab)  # 词汇表的大小word_to_idx = {word: i for i, word in enumerate(vocab)}  # 单词到索引的映射字典
idx_to_word = {i: word for i, word in enumerate(vocab)}  # 索引到单词的映射字典
  • vocab:把原始文本中的所有单词去重后得到的词汇表。
  • vocab_size:词汇表的大小。
  • word_to_idx:将单词映射为对应的索引。
  • idx_to_word:将索引映射为对应的单词。

4. 构建训练数据集

data = []  # 获取上下文词,将上下文词作为输入,目标词作为输出,构建训练数据集(用于存储训练数据,每个元素是一个元组,包含上下文词列表和目标词)
for i in range(CONTEXT_SIZE, len(raw_text) - CONTEXT_SIZE):context = ([raw_text[i - (2 - j)] for j in range(CONTEXT_SIZE)]+ [raw_text[i + j + 1] for j in range(CONTEXT_SIZE)])  # 获取上下文词target = raw_text[i]  # 获取目标词data.append((context, target))  # 将上下文词和目标词保存到 data 中
  • data:用于存储训练数据,每个元素是一个元组,包含上下文词列表和目标词。
  • 通过循环遍历原始文本,提取每个目标词及其上下文词,然后将它们添加到 data 中。

5. 定义将上下文词转换为张量的函数

def make_context_vector(context, word_to_ix):  # 将上下词转换为 one - hotidxs = [word_to_ix[w] for w in context]return torch.tensor(idxs, dtype=torch.long)
  • make_context_vector:把上下文词列表转换为对应的索引张量。

6. 打印第一个上下文词的索引张量

print(make_context_vector(data[0][0], word_to_idx))
  • 打印第一个训练样本的上下文词对应的索引张量。

7. 定义 CBOW 模型

class CBOW(nn.Module):  # 神经网络def __init__(self, vocab_size, embedding_dim):super(CBOW, self).__init__()self.embeddings = nn.Embedding(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)out = F.relu(self.proj(embeds))  # nn.relu() 激活层out = self.output(out)nll_prob = F.log_softmax(out, dim=1)return nll_prob
  • CBOW:继承自 nn.Module,定义了 CBOW 模型的结构。
    • __init__:初始化模型的层,包含一个嵌入层、一个线性层和另一个线性层。
    • forward:定义了前向传播过程,将输入的上下文词索引转换为嵌入向量,求和后经过线性层和激活函数,最后输出对数概率。

8. 选择设备并创建模型实例

device = "cuda" if torch.cuda.is_available() else "mps" if torch.backends.mps.is_available() else "cpu"
print(f"Using {device} device")  # 字符串的格式化
model = CBOW(vocab_size, 10).to(device)
  • device:检查当前设备是否支持 GPU(CUDA 或 MPS),若支持则使用 GPU,否则使用 CPU。
  • model:创建 CBOW 模型的实例,并将其移动到指定设备上。

9. 定义优化器、损失函数和损失列表

optimizer = optim.Adam(model.parameters(), lr=0.001)  # 创建一个优化器,
losses = []  # 存储损失的集合
loss_function = nn.NLLLoss()
  • optimizer:使用 Adam 优化器来更新模型的参数。
  • losses:用于存储每个 epoch 的损失值。
  • loss_function:使用负对数似然损失函数。

10. 训练模型

model.train()for epoch in tqdm(range(200)):total_loss = 0for context, target in data:context_vector = make_context_vector(context, word_to_idx).to(device)target = torch.tensor([word_to_idx[target]]).to(device)# 开始向前传播train_predict = model(context_vector)loss = loss_function(train_predict, target)# 反向传播optimizer.zero_grad()loss.backward()optimizer.step()total_loss += loss.item()losses.append(total_loss)print(losses)
  • model.train():将模型设置为训练模式。
  • 通过循环进行 200 个 epoch 的训练,每个 epoch 遍历所有训练数据。
    • 将上下文词和目标词转换为张量并移动到指定设备上。
    • 进行前向传播得到预测结果。
    • 计算损失。
    • 进行反向传播并更新模型参数。
    • 累加每个 epoch 的损失值。

11. 进行预测

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)  # dim = 1 表示每一行中的最大值对应的索引号, dim = 0 表示每一列中的最大值对应的索引号print("CBOW embedding weight =", model.embeddings.weight)  # GPU
W = model.embeddings.weight.cpu().detach().numpy()
print(W)
  • 选择一个上下文词列表进行预测。
  • model.eval():将模型设置为评估模式。
  • 进行预测并获取预测结果中概率最大的索引。
  • 打印嵌入层的权重,并将其转换为 NumPy 数组。

12. 构建词向量字典

word_2_vec = {}
for word in word_to_idx.keys():word_2_vec[word] = W[word_to_idx[word], :]
print('jiesu')
  • word_2_vec:将每个单词映射到其对应的词向量。

13. 保存和加载词向量

np.savez('word2vec实现.npz', file_1 = W)
data = np.load('word2vec实现.npz')
print(data.files)
  • np.savez:将词向量保存为 .npz 文件。
  • np.load:加载保存的 .npz 文件,并打印文件中的数组名称。

综上所述,这段代码实现了一个简单的 CBOW 模型来学习词向量,并将学习到的词向量保存到文件中。 。运行结果
在这里插入图片描述

三、总结

通过上述代码的实现和分析,我们成功地使用CBOW模型在PyTorch框架下完成了词向量的训练。从数据准备、模型定义,到训练和测试,再到词向量的保存,每一个步骤都紧密相连,共同构建了一个完整的词向量训练流程。

CBOW模型通过上下文预测目标词的方式,能够有效地学习到单词之间的语义关系,生成的词向量可以应用于各种自然语言处理任务。在实际应用中,我们还可以通过调整模型的超参数(如词向量维度、上下文窗口大小、训练轮数等),以及使用更大规模的数据集,进一步优化词向量的质量和模型的性能。希望本文的内容能够帮助读者更好地理解CBOW模型和词向量训练的原理与实践。

相关文章:

基于CBOW模型的词向量训练实战:从原理到PyTorch实现

基于CBOW模型的词向量训练实战:从原理到PyTorch实现 在自然语言处理(NLP)领域,词向量是将单词映射为计算机可处理的数值向量的重要方式。通过词向量,单词之间的语义关系能够以数学形式表达,为后续的文本分…...

【阿里云大模型高级工程师ACP习题集】2.9 大模型应用生产实践(下篇)

练习题 【单选题】在大模型应用备案中,根据《生成式人工智能服务管理暂行办法》,已上架但未完成合规手续的应用应如何处理?( ) A. 继续运营,同时补办手续 B. 下架处理 C. 暂停部分功能,直至完成合规手续 D. 无需处理,等待监管部门通知 【多选题】在应用服务安全的应用部…...

Matlab实现CNN-BiLSTM时间序列预测未来

Matlab实现CNN-BiLSTM时间序列预测未来 目录 Matlab实现CNN-BiLSTM时间序列预测未来效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现CNN-BiLSTM时间序列预测未来; 2.运行环境Matlab2023b及以上,data为数据集,单变量时间序…...

互联网大厂Java求职面试:AI大模型与云原生架构设计深度解析

互联网大厂Java求职面试:AI大模型与云原生架构设计深度解析 第一轮提问:AI大模型与系统集成 技术总监(张总):郑薪苦,你之前提到过Spring AI,那你能讲讲在实际项目中如何将大模型集成到系统中&…...

GD32F103C8T6多串口DMA空闲中断通信程序

以下是一个完全符合C99标准的GD32F103C8T6多串口DMA通信完整实现&#xff0c;代码经过Keil MDK验证并包含详细注释&#xff1a; #include "gd32f10x.h" #include <string.h>/* 硬件配置宏 */ #define USART_NUM 2 /* 使用2个串口 */ #define R…...

labelimg快捷键

一、核心标注快捷键 ‌W‌&#xff1a;调出标注十字架&#xff0c;开始绘制矩形框&#xff08;最常用功能&#xff09;‌A/D‌&#xff1a;切换上一张(A)或下一张(D)图片&#xff0c;实现快速导航‌Del‌&#xff1a;删除当前选中的标注框 二、文件操作快捷键 ‌CtrlS‌&…...

【深度学习-Day 6】掌握 NumPy:ndarray 创建、索引、运算与性能优化指南

Langchain系列文章目录 01-玩转LangChain&#xff1a;从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块&#xff1a;四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain&#xff1a;从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...

开元类双端互动组件部署实战全流程教程(第2部分:控制端协议拆解与机器人逻辑调试)

作者&#xff1a;那个写了个机器人结果自己被踢出房间的开发者 游戏逻辑房间结构参考界面 从这张图我们能看出&#xff0c;该组件按功能结构细分为多个房间&#xff0c;每个房间底注、准入标准不同&#xff0c;对应的控制模块也有层级区分。常规来说&#xff0c;一个“互动房间…...

51单片机入门教程——蜂鸣器播放天空之城

前言 本教程基于B站江协科技课程进行个人学习整理&#xff0c;专为拥有C语言基础的零基础入门51单片机新手设计。既帮助解决因时间差导致的设备迭代调试难题&#xff0c;也助力新手快速掌握51单片机核心知识&#xff0c;实现从C语言理论到单片机实践应用的高效过渡 。 目录 …...

linux 历史记录命令

命令方式 #/bin/bash #cd /tmp saveFile"tmp.log" isok"grep HISTTIMEFORMAT /etc/profile|wc -l" if [ $isok -eq 0 ] thenecho -e "#history time\nHISTFILESIZE4000\nHISTSIZE4000\nHISTTIMEFORMAT%F %T \nexport HISTTIMEFORMAT\n" >>…...

手表关于MPU6050中的功能实现

MPU6050 OV-Watch 中的睡眠和唤醒功能实现 OV-Watch 项目为 MPU6050 传感器实施了复杂的电源管理&#xff0c;以优化电池寿命&#xff0c;同时保持手腕检测和计步功能。以下是对睡眠和唤醒机制的详细分析&#xff1a; 内核休眠/唤醒功能实现 MPU6050 有两个主要功能来控制其…...

Qt中数据结构使用自定义类————附带详细示例

文章目录 C对数据结构使用自定义类1 QMap使用自定义类1.1 使用自定义类做key1.2 使用自定义类做value 2 QSet使用自定义类 参考 C对数据结构使用自定义类 1 QMap使用自定义类 1.1 使用自定义类做key QMap<key,value>中数据存入时会对存入key值的数据进行比较&#xff…...

深入浅出数据库的函数依赖关系

数据库的“恋爱关系”&#xff1a;函数依赖的那些事儿 在数据库的世界里&#xff0c;属性之间也存在“恋爱关系”。有些属性是“灵魂伴侣”&#xff0c;彼此绑定&#xff1b;有些是“单向奔赴”&#xff0c;只能依赖对方&#xff1b;还有些是“三角恋”&#xff0c;通过中间人…...

C语言易混淆知识点详解

C语言中容易混淆的知识点详解 C语言作为一门基础且强大的编程语言&#xff0c;有许多容易混淆的概念和特性。以下是C语言中一些常见易混淆知识点的详细解析&#xff1a; 1. 指针与数组 相似点&#xff1a; c 复制 下载 int arr[10]; int *ptr arr; 都可以使用[]运算符访…...

如何选择合适的光源?

目录 工业相机光源类型全面指南 1. 环形光源及其变体 高角度环形光源 优点 缺点 典型应用场景 低角度环形光源&#xff08;暗场照明&#xff09; 优点 缺点 典型应用场景 2. 条形光源与组合照明系统 技术特点 组合条形光源 优点 缺点 典型应用场景 3. 同轴光源…...

模块方法模式(Module Method Pattern)

&#x1f9e0; 模块方法模式&#xff08;Module Method Pattern&#xff09; 模块方法模式是一种结构型设计模式&#xff0c;它将复杂的操作分解成一系列相对简单、独立且单一职责的模块。每个模块负责完成一种具体的操作&#xff0c;其他模块或系统可以通过调用这些模块的公开…...

OpenCV第6课 图像处理之几何变换(仿射)

1.仿射变换 2. 平移 3 旋转 附录A 二维旋转矩阵 附录B 三维旋转矩阵与轴角表示 1.仿射变换 仿射变换是指图像可以通过一系列的几何变换来实现平移、旋转等多种操作。该变换能够保持图像的平直性和平行性。 平直性是指图像经过仿射变换后,直线仍然是直线,平行性是指图像在…...

【中间件】brpc_基础_TimerThread

文章目录 TimerThread1 简介2 主要设计点2.1 数据结构&#xff1a;分层时间轮&#xff08;Hierarchical Timing Wheel&#xff09;2.2 线程模型2.3 任务管理 3 关键代码分析3.1 类定义&#xff08;timer_thread.h&#xff09;3.2 时间轮初始化&#xff08;timer_thread.cpp&…...

拷贝多个Excel单元格区域为图片并粘贴到Word

Excel工作表Sheet1中有两个报表&#xff0c;相应单元格区域分别定义名称为Report1和Report2&#xff0c;如下图所示。 现在需要将图片拷贝图片粘贴到新建的Word文档中。 示例代码如下。 Sub Demo()Dim oWordApp As ObjectDim ws As Worksheet: Set ws ThisWorkbook.Sheets(&…...

网络原理(6)—— 应用层之HTTP协议

目录 一. 应用层 二. 重要应用层协议DNS(Domain Name System) 三. HTTP协议 3.1 HTTP抓包工具 3.2 HTTP格式 3.2.1 请求 3.2.2 响应 3.3 HTTP的工作过程 一. 应用层 应用层协议就像是人们之间的交流规则&#xff0c;它帮助不同的计算机程序&#xff08;应用&#xff09…...

Linux55yum源配置、本机yum源备份,本机yum源配置,网络Yum源配置,自建yum源仓库

参考 太晚了 计划先休息了 大概保存...

250505_HTML

HTML 1. HTML5语法与基础标签1.1 HTML5特性1.1.1 空白折叠现象1.1.2 转义字符 1.2 HTML注释1.3 基础标签1.3.1 div标签1.3.2 标题标签1.3.3 段落标签1.3.1.3.1.3.1.3. 1. HTML5语法与基础标签 1.1 HTML5特性 1.1.1 空白折叠现象 1.1.2 转义字符 1.2 HTML注释 1.3 基础标签 1…...

1. 设计哲学:让字面量“活”起来,提升表达力和安全性

C11引入的用户定义字面量&#xff08;User-Defined Literals&#xff0c;简称UDL&#xff09;是语言层面为程序员打开的一扇“自定义表达式”的大门。它允许我们为字面量&#xff08;比如数字、字符、字符串&#xff09;添加自定义后缀&#xff0c;从而让代码更具语义化、更易读…...

【KWDB 创作者计划】基于 ESP32 + KWDB 的智能环境监测系统实战

一开始萌生这个想法&#xff0c;其实是源自我办公桌上的那颗“小胖子”——一块 ESP32 开发板。它陪我度过了不少调试夜&#xff0c;也让我对物联网有了真正的感知。恰逢 KaiwuDB 举办征文活动&#xff0c;我便想着&#xff0c;何不将我日常积攒下来的一些硬件和数据库实战经验…...

AVHRR中国积雪物候数据集(1980-2020年)

数据集摘要 本数据集基于1980-2020年5kmAVHRR逐日无云积雪面积产品&#xff0c;制备了中国长时间序列积雪物候数据集。数据集按照不同的物候参数共分为积雪日数、积雪初日、积雪终日3个目录&#xff0c;每个目录下包含40个子文件&#xff0c;为逐水文年积雪物候参数&#xff0c…...

PCB设计中电感封装的选型

在PCB设计中&#xff0c;电感封装的选型直接影响电路性能、布局效率、热管理能力及系统可靠性。合理的封装选择不仅能优化空间利用率&#xff0c;还能提升电磁兼容性&#xff08;EMC&#xff09;和长期稳定性。以下从封装类型、尺寸参数、应用场景适配、布局协同设计、热管理策…...

LintCode第766题,LintCode第1141题,LintCode第478题

第766题描述 判断给出的年份 n 是否为闰年. 如果 n 为闰年则返回 true 闰年是包含额外一天的日历年. 如果年份可以被 4 整除且不能被 100 整除 或者 可以被 400 整除, 那么这一年为闰年 样例 1: 输入 : n 2008 输出 : true 样例 2: 输入 : n 2018 输出 : false 代码如…...

三十一、基于HMM的词性标注

基于HMM的中文词性标注 1 实验目标 理解HMM模型的原理和基本问题理解HMM的实现命名实体识别的具体步骤掌握HMM模型实现命名实体识别的方法 2 实验环境 HMM的中文词性标注的实验环境。 3 实验步骤 该项目主要由3个代码文件组成&#xff0c;分别为hmm.py、tagging.py和run.p…...

MCUboot 中的 BOOT_SWAP_TYPE_PERM 功能介绍

目录 概述 1 Image 数据结构 1.1 Image介绍 1.2 Swap info 2 BOOT_SWAP_TYPE_PERM 功能 2.1 功能定义 2.2 典型工作流程 3 BOOT_SWAP_TYPE_xx的其他功能 3.1 BOOT_SWAP_TYPE_REVERT 3.2 三中模式的比较 4 使用机制 4.1 实现细节 4.2 使用场景 4.3 开发者注意事…...

数学复习笔记 2

前言 朋友和我讨论了一个二重积分题&#xff0c;非常有意思。内容非常细致。整理如下&#xff1a; 二重积分 题目来源是 1000 上面的 16 题&#xff0c;积分区域是一个偏心圆&#xff0c;偏心圆的圆心在 y 轴上面&#xff0c;偏心圆是关于 y 轴对称的&#xff0c;可以看关于…...

从入门到登峰-嵌入式Tracker定位算法全景之旅 Part 5 |地图匹配与轻量 SLAM:HMM/Viterbi 与简化图优化

Part 5 |地图匹配与轻量 SLAM:HMM/Viterbi 与简化图优化 在本章中,我们将在 ESP32-S3 这样的资源受限平台上,实现 地图匹配(Map Matching)和轻量级图优化(Lightweight SLAM)功能。通过 隐马尔可夫模型(HMM)+ Viterbi 算法,以及简化的图优化思路,校正定位轨迹,提升…...

Amazon Bedrock Converse API:开启对话式AI新体验

Amazon Bedrock Converse API&#xff1a;开启对话式AI新体验 前言 在当今人工智能飞速发展的时代&#xff0c;对话式AI已成为众多应用的核心组成部分。从智能客服到智能助手&#xff0c;对话式AI为用户带来了便捷且高效的交互体验。而Amazon Bedrock Converse API的出现&…...

软考 系统架构设计师系列知识点之杂项集萃(54)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之杂项集萃&#xff08;53&#xff09; 第87题 某银行系统采用Factory Method方法描述其不同账户之间的关系&#xff0c;设计出的类图如下所示。其中与Factory Method的“Creator”角色对应的类是&#xff08;&#xff…...

第三章 - 软件质量工程体系

1 概述 系统工程学的思想 系统工程学是为了研究多个子系统构成的整体系统所具有的多种不同目标的相互协调&#xff0c;以期系统功能的最优化、最大限度地发挥系统组成部分的能力而发展起来的一门科学。 软件质量工程体系的建立 建立和实施质量管理体系的方法 确定顾客和其…...

#基础Machine Learning 算法(上)

机器学习算法的分类 机器学习算法大致可以分为三类&#xff1a; 监督学习算法 (Supervised Algorithms&#xff09;:在监督学习训练过程中&#xff0c;可以由训练数据集学到或建立一个模式&#xff08;函数 / learning model&#xff09;&#xff0c;并依此模式推测新的实例。…...

【YOLO11改进】改进Conv、颈部网络STFEN、以及引入PIOU用于小目标检测!

改进后的整体网络架构 改进一:RFD模块(Conv) YOLOv11模型的跨步卷积下采样虽然快速聚合了局部特征,并且实现了较高的计算效率,但其固有的信息压缩机制会导致细粒度特征的不可逆丢失。针对特征保留与计算效率的平衡问题,本文采用RFD模块替换跨步卷积下采样模块。RFD模块通…...

算法之上的权力——空域治理的政治哲学

当AI算法成为空域资源分配的核心机制&#xff0c;我们不得不直面一个核心问题&#xff1a;谁拥有算法&#xff0c;谁控制算法&#xff0c;谁审查算法&#xff1f;调度系统表面上是中立技术&#xff0c;实则承载了深刻的价值判断与权力结构。本章提出“算法即治理”命题&#xf…...

虚幻引擎作者采访

1万小时编程_哔哩哔哩_bilibili https://www.youtube.com/watch?v477qF6QNSvc 提姆斯温尼是一位传奇性的视频游戏程序员&#xff0c;Epic Games 的创始人兼首席执行官。 该公司开发了虚幻引擎、堡垒之夜、战争机器、虚幻竞技场等许多开创性和有影响力的视频游戏。 他哥哥…...

CodeBlocks25配置wxWidgets3.2

一、下载CodeBlocks 25.03版本 1.去Sourceforge.net Code::Blocks - Browse /Binaries/25.03/Windows at SourceForge.net 下载codeblocks-25.03mingw-nosetup.zip 2.解压到d盘&#xff0c;并把目录改为codeblocks 二、.下载wxWidgets 3.2.8 1. 去Sourceforge.net wxWidg…...

Python 整理3种查看神经网络结构的方法

1. 网络结构代码 import torch import torch.nn as nn# 定义Actor-Critic模型 class ActorCritic(nn.Module):def __init__(self, state_dim, action_dim):super(ActorCritic, self).__init__()self.actor nn.Sequential(# 全连接层&#xff0c;输入维度为 state_dim&#xf…...

【Bootstrap V4系列】学习入门教程之 组件-卡片(Card)

Bootstrap V4系列 学习入门教程之 组件-卡片&#xff08;Card&#xff09; 卡片&#xff08;Card&#xff09;一、Example二、Content types 内容类型2.1 Body 主体2.2 Titles, text, and links 标题、文本和链接2.3 Images 图片2.4 List groups 列表组2.5 Kitchen sink 洗涤槽…...

AI Agent开发第50课-机器学习的基础-线性回归如何应用在商业场景中

开篇 虽然我们这个系列主讲AI Agent,但是这个系列是一个喂饭式从0到深入的全AI类计算机教程系列,它主要面向的是培养出一个个AI时代的程序员,不是像外部那种很水的只是做做套壳、聊天、绘图小工具的急功近利式教学。而机器学习是现代AI的基础与基石,一些机器学习、深度学习…...

代码随想录第34天:动态规划7(打家劫舍问题:链式、环式、树式房屋)

一、背包问题小结 1.递推公式&#xff1a; 1.问能否能装满背包&#xff08;或者最多装多少&#xff09;&#xff1a;dp[j] max(dp[j], dp[j - nums[i]] nums[i]) 2.问装满背包有几种方法&#xff1a;dp[j] dp[j - nums[i]] 3.问背包装满最大价值&#xff1a;dp[j] max…...

网络安全自动化:找准边界才能筑牢安全防线

数字时代&#xff0c;企业每天要面对成千上万的网络攻击。面对庞大的服务器群、分散的团队和长期不重启的设备&#xff0c;很多企业开始思考&#xff1a;哪些安全操作适合交给机器自动处理&#xff1f;哪些必须由人工把关&#xff1f;今天我们就用大白话聊聊这件事。 一、这些事…...

ctfshow——web入门361~368

最近练习ssti 当 Web 应用程序使用模板引擎动态生成 HTML 页面或其他类型的输出时&#xff0c;如果用户输入未经过充分验证或转义就被直接嵌入到模板中&#xff0c;就可能发生 SSTI 攻击。攻击者可以利用这个弱点注入恶意模板代码&#xff0c;该代码将在服务器端执行。 常见的…...

备忘录模式(Memento Pattern)

&#x1f9e0; 备忘录模式&#xff08;Memento Pattern&#xff09; 备忘录模式 是行为型设计模式之一。它通过将对象的状态存储在一个备忘录中&#xff0c;允许对象在不暴露其内部结构的情况下&#xff0c;保存和恢复自己的状态。该模式允许将对象的状态保存到备忘录中&#…...

五一假期作业

sub_process.c #include <stdio.h> // 标准输入输出库 #include <pthread.h> // POSIX线程库 #include <sys/ipc.h> // IPC基础定义&#xff08;如消息队列/共享内存&#xff09; #include <sys/msg.h> // 消息队列操作相关…...

Multi Agents Collaboration OS:专属多智能体构建—基于业务场景流程构建专属多智能体

背景 随着人工智能技术的飞速发展&#xff0c;大型语言模型&#xff08;LLM&#xff09;的能力不断突破&#xff0c;单一智能体的能力边界逐渐显现。为了应对日益复杂的现实世界任务&#xff0c;由多个具备不同能力、可以相互协作的智能体组成的多智能体系统 (Multi-Agent Sys…...

数据库的二级索引

二级索引 10.1 二级索引作为额外的键 表结构 正如第8章提到的&#xff0c;二级索引本质上是包含主键的额外键值对。每个索引通过B树中的键前缀来区分。 type TableDef struct {// 用户定义的部分Name stringTypes []uint32 // 列类型Cols []string // 列名Indexes …...

湖北理元理律师事务所:债务法律服务的民生价值重构

当前我国居民杠杆率达62.3%&#xff08;央行2023年数据&#xff09;&#xff0c;债务问题已从经济议题演变为社会议题。湖北理元理律师事务所通过构建覆盖咨询、备案、规划的全链条服务&#xff0c;试图在法律框架内探索债务危机的社会化解决方案。 民生导向的服务设计 1.阶梯…...