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

深度学习笔记40_中文文本分类-Pytorch实现

  • 🍨 本文为🔗365天深度学习训练营 中的学习记录博客
  • 🍖 原作者:K同学啊 | 接辅导、项目定制

一、我的环境

1.语言环境:Python 3.8

2.编译器:Pycharm

3.深度学习环境:

  • torch==1.12.1+cu113
  • torchvision==0.13.1+cu113

、导入数据

import torch
import torch.nn as nn
import torchvision
from torchvision import transforms, datasets
import os,PIL,pathlib,warningswarnings.filterwarnings("ignore")             #忽略警告信息
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")import pandas as pd# 加载自定义中文数据
train_data = pd.read_csv('./data/train.csv', sep='\t', header=None)
print(train_data.head())

结果:

                       0              1
0      还有双鸭山到淮阴的汽车票吗13号的   Travel-Query
1                从这里怎么回家   Travel-Query
2       随便播放一首专辑阁楼里的佛里的歌     Music-Play
3              给看一下墓王之王嘛  FilmTele-Play
4  我想看挑战两把s686打突变团竞的游戏视频     Video-Play

、构建词典

from torchtext.data.utils import get_tokenizer
from torchtext.vocab import build_vocab_from_iterator
import jieba# 中文分词方法
tokenizer = jieba.lcutdef yield_tokens(data_iter):for text,_ in data_iter:yield tokenizer(text)vocab = build_vocab_from_iterator(yield_tokens(train_iter), specials=["<unk>"])
vocab.set_default_index(vocab["<unk>"]) # 设置默认索引,如果找不到单词,则会选择默认索引print(vocab(['我','想','看','和平','精英','上','战神','必备','技巧','的','游戏','视频']))

结果:[2, 10, 13, 973, 1079, 146, 7724, 7574, 7793, 1, 186, 28]

text_pipeline  = lambda x: vocab(tokenizer(x))
label_pipeline = lambda x: label_name.index(x)print(text_pipeline('我想看和平精英上战神必备技巧的游戏视频'))
print(label_pipeline('Video-Play'))
结果:[2, 10, 13, 973, 1079, 146, 7724, 7574, 7793, 1, 186, 28]
4

生成数据批次和迭代器

from torch.utils.data import DataLoaderdef collate_batch(batch):label_list, text_list, offsets = [], [], [0]for (_text, _label) in batch:# 标签列表label_list.append(label_pipeline(_label))# 文本列表processed_text = torch.tensor(text_pipeline(_text), dtype=torch.int64)text_list.append(processed_text)# 偏移量,即语句的总词汇量offsets.append(processed_text.size(0))label_list = torch.tensor(label_list, dtype=torch.int64)text_list = torch.cat(text_list)offsets = torch.tensor(offsets[:-1]).cumsum(dim=0)  # 返回维度dim中输入元素的累计和return text_list.to(device), label_list.to(device), offsets.to(device)# 数据加载器,调用示例
dataloader = DataLoader(train_iter,batch_size=8,shuffle=False,collate_fn=collate_batch)

定义模型

from torch import nnclass TextClassificationModel(nn.Module):def __init__(self, vocab_size, embed_dim, num_class):super(TextClassificationModel, self).__init__()self.embedding = nn.EmbeddingBag(vocab_size,  # 词典大小embed_dim,  # 嵌入的维度sparse=False)  #self.fc = nn.Linear(embed_dim, num_class)self.init_weights()def init_weights(self):initrange = 0.5self.embedding.weight.data.uniform_(-initrange, initrange)  # 初始化权重self.fc.weight.data.uniform_(-initrange, initrange)self.fc.bias.data.zero_()  # 偏置值归零def forward(self, text, offsets):embedded = self.embedding(text, offsets)return self.fc(embedded)

定义实例

num_class  = len(label_name)
vocab_size = len(vocab)
em_size    = 64
model      = TextClassificationModel(vocab_size, em_size, num_class).to(device)

定义训练函数与评估函数

import timedef train(dataloader):model.train()  # 切换为训练模式total_acc, train_loss, total_count = 0, 0, 0log_interval = 50start_time = time.time()for idx, (text, label, offsets) in enumerate(dataloader):predicted_label = model(text, offsets)optimizer.zero_grad()  # grad属性归零loss = criterion(predicted_label, label)  # 计算网络输出和真实值之间的差距,label为真实值loss.backward()  # 反向传播torch.nn.utils.clip_grad_norm_(model.parameters(), 0.1)  # 梯度裁剪optimizer.step()  # 每一步自动更新# 记录acc与losstotal_acc += (predicted_label.argmax(1) == label).sum().item()train_loss += loss.item()total_count += label.size(0)if idx % log_interval == 0 and idx > 0:elapsed = time.time() - start_timeprint('| epoch {:1d} | {:4d}/{:4d} batches ''| train_acc {:4.3f} train_loss {:4.5f}'.format(epoch, idx, len(dataloader),total_acc / total_count, train_loss / total_count))total_acc, train_loss, total_count = 0, 0, 0start_time = time.time()def evaluate(dataloader):model.eval()  # 切换为测试模式total_acc, train_loss, total_count = 0, 0, 0with torch.no_grad():for idx, (text, label, offsets) in enumerate(dataloader):predicted_label = model(text, offsets)loss = criterion(predicted_label, label)  # 计算loss值# 记录测试数据total_acc += (predicted_label.argmax(1) == label).sum().item()train_loss += loss.item()total_count += label.size(0)return total_acc / total_count, train_loss / total_count

训练模型

from torch.utils.data.dataset import random_split
from torchtext.data.functional import to_map_style_dataset# 超参数
EPOCHS = 10  # epoch
LR = 5  # 学习率
BATCH_SIZE = 64  # batch size for trainingcriterion = torch.nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(model.parameters(), lr=LR)
scheduler = torch.optim.lr_scheduler.StepLR(optimizer, 1.0, gamma=0.1)
total_accu = None# 构建数据集
train_iter = coustom_data_iter(train_data[0].values[:], train_data[1].values[:])
train_dataset = to_map_style_dataset(train_iter)split_train_, split_valid_ = random_split(train_dataset,[int(len(train_dataset) * 0.8), int(len(train_dataset) * 0.2)])train_dataloader = DataLoader(split_train_, batch_size=BATCH_SIZE,shuffle=True, collate_fn=collate_batch)valid_dataloader = DataLoader(split_valid_, batch_size=BATCH_SIZE,shuffle=True, collate_fn=collate_batch)for epoch in range(1, EPOCHS + 1):epoch_start_time = time.time()train(train_dataloader)val_acc, val_loss = evaluate(valid_dataloader)# 获取当前的学习率lr = optimizer.state_dict()['param_groups'][0]['lr']if total_accu is not None and total_accu > val_acc:scheduler.step()else:total_accu = val_accprint('-' * 69)print('| epoch {:1d} | time: {:4.2f}s | ''valid_acc {:4.3f} valid_loss {:4.3f} | lr {:4.6f}'.format(epoch,time.time() - epoch_start_time,val_acc, val_loss, lr))print('-' * 69)

 结果:

Batch [50/152], Loss: 0.0340, Accuracy: 0.4203
Batch [100/152], Loss: 0.0235, Accuracy: 0.5851
Batch [150/152], Loss: 0.0309, Accuracy: 0.6572
---------------------------------------------------------------------
| epoch 1 | time: 0.55s | valid_acc 0.814 valid_loss 0.012 | lr 5.000000
---------------------------------------------------------------------
Batch [50/152], Loss: 0.0104, Accuracy: 0.8165
Batch [100/152], Loss: 0.0099, Accuracy: 0.8215
Batch [150/152], Loss: 0.0092, Accuracy: 0.8329
---------------------------------------------------------------------
| epoch 2 | time: 0.44s | valid_acc 0.855 valid_loss 0.008 | lr 5.000000
---------------------------------------------------------------------
Batch [50/152], Loss: 0.0068, Accuracy: 0.8790
Batch [100/152], Loss: 0.0065, Accuracy: 0.8778
Batch [150/152], Loss: 0.0064, Accuracy: 0.8809
---------------------------------------------------------------------
| epoch 3 | time: 0.44s | valid_acc 0.874 valid_loss 0.007 | lr 5.000000
---------------------------------------------------------------------
Batch [50/152], Loss: 0.0050, Accuracy: 0.9105
Batch [100/152], Loss: 0.0051, Accuracy: 0.9101
Batch [150/152], Loss: 0.0048, Accuracy: 0.9130
---------------------------------------------------------------------
| epoch 4 | time: 0.44s | valid_acc 0.882 valid_loss 0.006 | lr 5.000000
---------------------------------------------------------------------
Batch [50/152], Loss: 0.0039, Accuracy: 0.9366
Batch [100/152], Loss: 0.0039, Accuracy: 0.9339
Batch [150/152], Loss: 0.0038, Accuracy: 0.9350
---------------------------------------------------------------------
| epoch 5 | time: 0.44s | valid_acc 0.896 valid_loss 0.006 | lr 5.000000
---------------------------------------------------------------------
Batch [50/152], Loss: 0.0028, Accuracy: 0.9519
Batch [100/152], Loss: 0.0030, Accuracy: 0.9517
Batch [150/152], Loss: 0.0030, Accuracy: 0.9494
---------------------------------------------------------------------
| epoch 6 | time: 0.44s | valid_acc 0.898 valid_loss 0.005 | lr 5.000000
---------------------------------------------------------------------
Batch [50/152], Loss: 0.0025, Accuracy: 0.9580
Batch [100/152], Loss: 0.0024, Accuracy: 0.9616
Batch [150/152], Loss: 0.0024, Accuracy: 0.9609
---------------------------------------------------------------------
| epoch 7 | time: 0.44s | valid_acc 0.902 valid_loss 0.005 | lr 5.000000
---------------------------------------------------------------------
Batch [50/152], Loss: 0.0018, Accuracy: 0.9764
Batch [100/152], Loss: 0.0019, Accuracy: 0.9739
Batch [150/152], Loss: 0.0019, Accuracy: 0.9724
---------------------------------------------------------------------
| epoch 8 | time: 0.44s | valid_acc 0.900 valid_loss 0.005 | lr 5.000000
---------------------------------------------------------------------
Batch [50/152], Loss: 0.0015, Accuracy: 0.9810
Batch [100/152], Loss: 0.0014, Accuracy: 0.9817
Batch [150/152], Loss: 0.0014, Accuracy: 0.9818
---------------------------------------------------------------------
| epoch 9 | time: 0.49s | valid_acc 0.906 valid_loss 0.005 | lr 0.500000
---------------------------------------------------------------------
Batch [50/152], Loss: 0.0013, Accuracy: 0.9831
Batch [100/152], Loss: 0.0013, Accuracy: 0.9831
Batch [150/152], Loss: 0.0014, Accuracy: 0.9825
---------------------------------------------------------------------
| epoch 10 | time: 0.54s | valid_acc 0.906 valid_loss 0.005 | lr 0.500000
---------------------------------------------------------------------

、预测

def predict(text, text_pipeline):with torch.no_grad():text = torch.tensor(text_pipeline(text))output = model(text, torch.tensor([0]))return output.argmax(1).item()# ex_text_str = "随便播放一首专辑阁楼里的佛里的歌"
ex_text_str = "还有双鸭山到淮阴的汽车票吗13号的"model = model.to("cpu")print("该文本的类别是:%s" %label_name[predict(ex_text_str, text_pipeline)])
该文本的类别是:Travel-Query

总结: 

  1. 语料库(原始文本)‌:

    来源包括维基百科、网页文本、新闻资讯及内部文本。
  2. 文本清洗‌:

    清洗原始文本,包括去除标点符号和特殊字符。该流程主要用于将原始文本数据转化为可用于模型训练的数值化向量,再通过深度学习模型进行文本分类。
    • 分词‌:

      使用jieba分词工具对清洗后的文本进行分词处理。
    • 建模‌:

      采用不同的模型进行文本建模,包括循环神经网络(RNN)、卷积神经网络(CNN)、门控循环单元(GRU)和长短期记忆网络(LSTM)。
    • 文本向量化‌:

      将分词后的文本转换为向量表示,方法包括TF-IDF和Word2vec。

相关文章:

深度学习笔记40_中文文本分类-Pytorch实现

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 一、我的环境 1.语言环境&#xff1a;Python 3.8 2.编译器&#xff1a;Pycharm 3.深度学习环境&#xff1a; torch1.12.1cu113torchvision…...

python设置word字体的方法

在Python中&#xff0c;可以使用python-docx库来设置Word文档的字体样式&#xff0c;以下为具体方法和示例代码&#xff1a; 一、设置段落中字体样式 使用python-docx库时&#xff0c;Word文档中的文本通常被组织成段落&#xff08;Paragraph对象&#xff09;&#xff0c;而一…...

golang常用库之-标准库text/template

文章目录 golang常用库之-标准库text/template背景什么是text/templatetext/template库的使用 golang常用库之-标准库text/template 背景 在许多编程场景中&#xff0c;我们经常需要把数据按照某种格式进行输出&#xff0c;比如生成HTML页面&#xff0c;或者生成配置文件。这…...

【JAVA】如何快速阅读一个基于maven构建的springboot项目

一、摘要 在JAVA项目开发过程中&#xff0c;现在比较流行的是springboot机构&#xff0c;特别是在后端开发的项目中&#xff0c;springboot应用的非常普遍。springboot很好将大型的、复杂的项目进行分解&#xff0c;以模块或者服务的表现形式组成项目。那么当我们接手一个陌生的…...

Fedora升级Google Chrome出现GPG check FAILED问题解决办法

https://dl.google.com/linux/linux_signing_key.pub 的 GPG 公钥(0x7FAC5991)已安装 https://dl.google.com/linux/linux_signing_key.pub 的 GPG 公钥(0xD38B4796)已安装 仓库 "google-chrome" 的 GPG 公钥已安装&#xff0c;但是不适用于此软件包。 请检查此仓库的…...

深入解析MapReduce:大数据处理的经典范式

引言 在大数据时代&#xff0c;如何高效处理海量数据成为技术核心挑战之一。Hadoop生态中的MapReduce框架应运而生&#xff0c;以其“分而治之”的思想解决了大规模数据的并行计算问题。本文将从原理、核心组件到实战案例&#xff0c;带你全面理解这一经典计算模型。 一、MapR…...

JVM性能调优的基础知识 | JVM内部优化与运行时优化

目录 JVM内部的优化逻辑 JVM的执行引擎 解释执行器 即时编译器 JVM采用哪种方式&#xff1f; 即时编译器类型 JVM的分层编译5大级别&#xff1a; 分层编译级别&#xff1a; 热点代码&#xff1a; 如何找到热点代码&#xff1f; java两大计数器&#xff1a; OSR 编译…...

云计算-容器云-部署jumpserver 版本2

应用部署&#xff1a;堡垒机部署 # 使用提供的软件包配置Yum源&#xff0c;通过地址将jumpserver.tar.gz软件包下载至Jumpserver节点的/root目录下 [rootjumpserver ~]# tar -zxvf jumpserver.tar.gz -C /opt/ [rootjumpserver ~]# cp /opt/local.repo /etc/yum.repos.d/ [roo…...

MSP430G2553驱动0.96英寸OLED(硬件iic)

1.前言 最近需要用MSP430单片机做一个大作业,需要用到OLED模块&#xff0c;在这里记录一下 本篇文章主要讲解MSP430硬件iic的配置和OLED函数的调用&#xff0c;不会详细讲解OLED显示原理(其实就是江科大的OLED模块如何移植到msp430上).OLED显示原理以及底层函数讲解请参考其他…...

同质化的旅游内核

湘西凤凰古城、北京非常有文艺氛围的方家胡同都在被改造翻新为现代的其他城市范式式的样式。 什么意思呢&#xff1f;很多古城的老房子&#xff0c;从外面看&#xff0c;很古老、很漂亮&#xff0c;但是进去以后&#xff0c;完全不是那么回事&#xff0c;整座房子已经被完全掏…...

2025年五一数学建模A题【支路车流量推测】原创论文讲解(含完整python代码)

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了2025年五一数学建模A题【支路车流量推测】完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 A题论文共104页&a…...

文章六:《循环神经网络(RNN)与自然语言处理》

文章6&#xff1a;循环神经网络&#xff08;RNN&#xff09;与自然语言处理——让AI学会"说人话" 引言&#xff1a;你的手机为什么能秒懂你&#xff1f; 当你说"我想看科幻片"时&#xff0c;AI助手能立刻推荐《星际穿越》&#xff0c;这背后是RNN在"…...

Redis总结及设置营业状态案例

Redis简介: rRedis服务开启与停止: 服务开启: 在Redis配置文件中输入cmd进入命令行输入redis-server redis-cli.exe -h -p&#xff1a;连接到redis服务 设置密码:在redis.windows.conf中找到requirepass 密码 服务停止&#xff1a; 在服务开启的界面按ctrlc Redis数据类…...

中科大:LLM几何推理数据生成

&#x1f4d6;标题&#xff1a;Enhancing the Geometric Problem-Solving Ability of Multimodal LLMs via Symbolic-Neural Integration &#x1f310;来源&#xff1a;arXiv, 2504.12773 &#x1f31f;摘要 &#x1f538;多模态大语言模型&#xff08;MLLM&#xff09;的最…...

AimRT从入门到精通 - 04RPC客户端和服务器

一、ROS中的service通信机制 服务通信也是ROS中一种极其常用的通信模式&#xff0c;服务通信是基于请求响应模式的&#xff0c;是一种应答机制。也即&#xff1a;一个节点A向另一个节点B发送请求&#xff0c;B接收处理请求并产生响应结果返回给A。比如如下场景&#xff1a; 机器…...

【Android】Intent

目录 一、什么是Intent 二、显式Intent 三、隐式Intent 四、复杂数据传递 五、跨应用权限管理 六、常见问题 一、什么是Intent 1. 跨组件通信桥梁 实现组件间通信&#xff08;Activity/Service/BroadcastReceiver&#xff09;封装操作指令与数据传输逻辑 目标组件启动…...

从0开始建立Github个人博客(hugoPaperMod)

从0开始建立Github个人博客(hugo&PaperMod) github提供给每个用户一个网址&#xff0c;用户可以建立自己的静态网站。 一、Hugo hugo是一个快速搭建网站的工具&#xff0c;由go语言编写。 1.安装hugo 到hugo的github标签页Tags gohugoio/hugo选择一个版本&#xff0c…...

Python集合全解析:从基础到高阶应用实战

一、集合核心特性与创建方法 1.1 集合的本质特征 Python集合&#xff08;Set&#xff09;是一种​​无序且元素唯一​​的容器类型&#xff0c;基于哈希表实现&#xff0c;具有以下核心特性&#xff1a; ​​唯一性​​&#xff1a;自动过滤重复元素​​无序性​​&#xff…...

Matlab自学笔记

一、我下载的是Matlab R2016a软件&#xff0c;打开界面如下&#xff1a; 二、如何调整字体大小&#xff0c;路径为&#xff1a;“主页”->“预设”->“字体”。 三、命令行窗口是直接进行交互式的&#xff0c;如下输入“3 5”&#xff0c;回车&#xff0c;就得到结果“…...

Python爬虫实战:获取好大夫在线各专业全国医院排行榜数据并分析,为患者就医做参考

一、引言 在当今医疗资源丰富但分布不均的背景下,患者在选择合适的心血管内科医院时面临诸多困难。好大夫在线提供的医院排行榜数据包含了医院排名、线上服务得分、患者评价得分等重要信息,对患者选择医院具有重要的参考价值。本研究通过爬取该排行榜数据,并进行深入分析,…...

多模态人工智能研究:视觉语言模型的过去、现在与未来

多模态人工智能研究&#xff1a;视觉语言模型的过去、现在与未来 1. 引言&#xff1a;定义多模态图景 多模态人工智能指的是旨在处理和整合来自多种数据类型或“模态”信息的人工智能系统&#xff0c;这些模态包括文本、图像、音频和视频等。与通常侧重于单一模态&#xff08;…...

DeepSeek+Excel:解锁办公效率新高度

目录 一、引言&#xff1a;Excel 遇上 DeepSeek二、认识 DeepSeek&#xff1a;大模型中的得力助手2.1 DeepSeek 的技术架构与原理2.2 DeepSeek 在办公场景中的独特优势 三、DeepSeek 与 Excel 结合的准备工作3.1 获取 DeepSeek API Key3.2 配置 Excel 环境 四、DeepSeekExcel 实…...

3033. 修改矩阵

​题目来源&#xff1a; leetcode题目&#xff1a;3033. 修改矩阵 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 获取每列的最大值后将-1替换即可。 解题代码&#xff1a; #python3 class Solution:def getMaxRow(matrix:List[List[int]])->List[int]:r…...

Android面试总结之jet pack模块化组件篇

一、ViewModel 深入问题 1. ViewModel 如何实现跨 Fragment 共享数据&#xff1f;其作用域是基于 Activity 还是 Fragment&#xff1f; 问题解析&#xff1a; ViewModel 的作用域由 ViewModelStoreOwner 决定。当 Activity 和其内部 Fragment 共享同一个 ViewModelStoreOwner…...

【无需docker】mac本地部署dify

环境安装准备 #安装 postgresql13 brew install postgresql13 #使用zsh的在全局添加postgresql命令集 echo export PATH"/usr/local/opt/postgresql13/bin:$PATH" >> ~/.zshrc # 使得zsh的配置修改生效 source ~/.zshrc # 启动postgresql brew services star…...

清洗数据集

将label在图片上画出来 按照第一行的属性分类 import os import cv2 import multiprocessing as mp from tqdm import tqdm# ---------- 路径配置 ---------- # IMAGE_DIR = r"C:\Users\31919\Desktop\datasets\13k_100drive_raw_with_hand\images\test" LABEL_DIR =…...

支持向量机(SVM)详解

引言 支持向量机&#xff08;Support Vector Machine, SVM&#xff09;是一种强大的监督学习算法&#xff0c;主要用于分类和回归任务。其核心思想是找到一个最优的决策边界&#xff08;超平面&#xff09;&#xff0c;最大化不同类别之间的间隔&#xff08;Margin&#xff09…...

MIT XV6 - 1.2 Lab: Xv6 and Unix utilities - pingpong

接上文 MIT XV6 - 1.1 Lab: Xv6 and Unix utilities - user/_sleep 是什么&#xff1f;做什么&#xff1f; pingpong 不务正业了那么久(然而并没有&#xff0c;虽然还在探索sleep&#xff0c;但是教材我已经看完了前三章了)&#xff0c;让我们赶紧继续下去 在进行本实验之前请务…...

“淘宝闪购”提前4天全量,意味着什么?

4月30日推出&#xff0c;首日上线50个城市&#xff0c;既定5月6日推广至全国的“淘宝闪购”&#xff0c;突然在5月2日早上官宣&#xff0c;提前4天面向全国消费者全量开放。 这一系列节奏&#xff0c;剑指一个字“快”&#xff01; 是业务发展远超预期的“快”。 4月30日&am…...

Servlet 解决了什么问题?

Servlet 主要解决了以下几个核心问题&#xff1a; 性能问题 (Performance): CGI 的问题&#xff1a; 传统的 CGI 技术为每个Web 请求都启动一个新的进程。进程的创建和销毁涉及大量的系统资源开销&#xff08;内存分配、CPU 时间、进程上下文切换等&#xff09;。在高并发场景下…...

Cherry Studio的MCP协议集成与应用实践:从本地工具到云端服务的智能交互

Cherry Studio的MCP协议集成与应用实践&#xff1a;从本地工具到云端服务的智能交互 一、MCP协议与Cherry Studio的技术融合 MCP&#xff08;Model Context Protocol&#xff09; 是由Anthropic提出的标准化协议&#xff0c;旨在为AI模型提供与外部工具交互的通用接口。通过M…...

CPU:AMD的线程撕裂者(Threadripper)系列

AMD的线程撕裂者&#xff08;Threadripper&#xff09;系列是AMD面向高性能计算&#xff08;HPC&#xff09;、工作站&#xff08;Workstation&#xff09;和高端桌面&#xff08;HEDT&#xff09;市场推出的顶级处理器产品线。该系列以极高的核心数、强大的多线程性能、丰富的…...

(即插即用模块-Attention部分) 六十二、(2022) LKA 大核注意力

文章目录 1、Larger Kernel Attention2、代码实现 paper&#xff1a;Visual Attention Network Code&#xff1a;https://github.com/Visual-Attention-Network 1、Larger Kernel Attention 自注意力机制在 NLP 领域取得了巨大成功&#xff0c;但其应用于计算机视觉任务时存在…...

Spring 分批处理 + 冷热数据分离:历史订单高效迁移与数据清理实战

在实际业务中&#xff0c;随着时间推移&#xff0c;订单量持续增长&#xff0c;若未及时进行数据治理&#xff0c;会造成数据库膨胀、查询缓慢、性能下降等问题。为了实现数据分层管理和系统高性能运行&#xff0c;我们在项目中采用了“冷热数据分离 分批迁移 数据清理”的综…...

Mybatis中的一级二级缓存扫盲

思维导图&#xff1a; MyBatis 提供了一级缓存和二级缓存机制&#xff0c;用于提高数据库查询的性能&#xff0c;减少对数据库的访问次数。&#xff08;本质上是减少IO次数&#xff09;。 一级缓存 1. 概念 一级缓存也称为会话缓存&#xff0c;它是基于 SqlSession 的缓存。在同…...

Elasticsearch 常用的 API 接口

文档类 API Index API &#xff1a;创建并建立索引&#xff0c;向指定索引添加文档。例如&#xff1a;PUT /twitter/tweet/1 &#xff0c;添加一个文档。 Get API &#xff1a;获取文档&#xff0c;通过索引、类型和 ID 获取文档。如GET /twitter/tweet/1。 DELETE API &…...

纯前端专业PDF在线浏览器查看器工具

纯前端专业PDF在线浏览器查看器工具 工具简介 我们最新开发的PDF在线浏览器工具现已发布&#xff01;这是一个基于Web的轻量级PDF阅读器&#xff0c;无需安装任何软件&#xff0c;直接在浏览器中即可查看和操作PDF文档。 主要功能 ✅ PDF文件浏览 支持本地PDF文件上传流畅的…...

传奇各职业/战士/法师/道士手套/手镯/护腕/神秘腰带爆率及出处产出地/圣战/法神/天尊/祈祷/虹魔/魔血

护腕排行(战士): 名字攻击攻击(均)魔法魔法(均)道术道术(均)防御防御(均)魔御魔御(均)重量要求图标外观产出圣战手镯2-32.50-000-000-10.50-002攻击: 400.02%双头金刚(50级/5000血/不死系)|赤月魔穴(1725,2125)60分钟2只 0.02%双头血魔(55级/5000血/不死系)|赤月魔穴(1725,212…...

觅知解析计费系统重构版在线支付卡密充值多解析接口免授权无后门源码扶风二开

一、源码描述 这是一套视频解析计费源码&#xff08;扶风二开&#xff09;&#xff0c;可配置多接口和专用特征解析接口&#xff0c;对接在线支付和卡密支付&#xff0c;支持在线充值和卡密充值&#xff0c;支持点数收费模式和包月套餐收费模式&#xff0c;可配置多个视频解析…...

C++11新特性_委托构造函数

格式定义 在 C11 里&#xff0c;委托构造函数的格式为&#xff1a;一个构造函数能够在其成员初始化列表里调用同一个类的其他构造函数。基本语法如下&#xff1a; class ClassName { public:// 被委托的构造函数&#xff08;目标构造函数&#xff09;ClassName(参数列表1) : …...

网工_IP协议

2025.02.17&#xff1a;小猿网&网工老姜学习笔记 第19节 IP协议 9.1 IP数据包的格式&#xff08;首部数据部分&#xff09;9.1.1 IP协议的首部格式&#xff08;固定部分可变部分&#xff09; 9.2 IP数据包分片&#xff08;找题练&#xff09;9.3 TTL生存时间的应用9.4 常见…...

C++负载均衡远程调用学习之QPS性能测试

目录 1.昨日回顾 2.QPS_TEST_PROTOBUF协议的集成 3.QPS_TEST_SERVER端实现 4.QPS_TEST_QPS简单介绍 5.QPS_TEST_QPS客户端工具编写和性能测试 1.昨日回顾 2.QPS_TEST_PROTOBUF协议的集成 ## 14) Reactor框架QPS性能测试 ​ 接下来我们写一个测试用例来测一下我们…...

C++负载均衡远程调用学习之消息队列与线程池

目录 1.昨日回顾 2.单线程的多路IO服务器模型和多线程模型区别 3.服务器的集中并发模式 4.LARSV0.8-task_msg消息队列任务数据类型 5.LARSV0.8--thread_queue消息队列的发送和接收流 6.LARSV0.8-thread_pool线程池的实现 7.LARSV0.8-thread_pool线程池的实现 8.LARSV0.8…...

Kotlin 基础

Kotlin基础语法详解 Kotlin是一种现代静态类型编程语言,由JetBrains开发,与Java完全互操作。以下是Kotlin的基础语法详解: 1. 基本语法 1.1 变量声明 // 不可变变量(推荐) val name: String = "Kotlin" val age = 25 // 类型推断// 可变变量 var count: In…...

实验数据的转换

最近做实验需要把x轴y轴z轴的数据处理一下&#xff0c;总结一下解决的方法&#xff1a; 源文件为两个txt文档&#xff0c;分别为x轴和y轴&#xff0c;如下&#xff1a; 最终需要达到的效果是如下&#xff1a; 就是需要把各个矩阵的数据整理好放在同一个txt文档里。 步骤① …...

多种尝试解决Pycharm无法粘贴外部文本【本人问题已解决】

#作者&#xff1a;允砸儿 #日期&#xff1a;乙巳青蛇年 四月初五 笔者在写demo的时候遇到一个非常棘手的问题就是pycharm无法复制粘贴&#xff0c;笔者相信有很多的朋友遇到过这种问题&#xff0c;笔者结合搜素到的和自己揣摩出来的方法帮助朋友们解决这种问题。 1、第一种…...

【C++】红黑树迭代版

目录 前言&#xff1a; 一&#xff1a;什么是红黑树&#xff1f; 二&#xff1a;插入什么颜色节点&#xff1f; 三&#xff1a;定义树 四&#xff1a;左单旋和右单旋 1.右单旋 2.左单旋 五&#xff1a;调整树 1.当parent节点为黑色时 2.当parent节点为红色时 2.1 u…...

OSPF路由协议配置

初始环境与准备: 物理连接:按照文件的拓扑连接了 3 台路由器 (R01, R02, R03)、2 台交换机 (Switch0, Switch1) 和 2 台 PC (PC0, PC1)。关键发现&#xff1a;路由器之间的连接实际使用的是以太网线&#xff08;连接到 FastEthernet 接口&#xff09;&#xff0c;而不是串口线。…...

linux下抓包工具--tcpdump介绍

文章目录 1. 前言2. 命令介绍3. 常见选项3.1. 接口与基本控制3.2 输出控制3.3 文件操作3.4 高级调试 4. 过滤表达式4.1 协议类型4.2 方向与地址4.3 逻辑运算符 5. 典型使用场景5.1 网络故障排查5.2 安全分析与入侵检测5.3 性能分析与优化 linux下抓包工具--tcpdump介绍 1. 前言…...

探索 Disruptor:高性能并发框架的奥秘

在当今的软件开发领域&#xff0c;处理高并发场景是一项极具挑战性的任务。传统的并发解决方案&#xff0c;如基于锁的队列&#xff0c;往往在高负载下表现出性能瓶颈。而 Disruptor 作为一个高性能的并发框架&#xff0c;凭借其独特的设计和先进的技术&#xff0c;在处理海量数…...