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

第N8周:使用Word2vec实现文本分类

  • 🍨 本文为🔗365天深度学习训练营 中的学习记录博客
  • 🍖 原作者:K同学啊

本周任务:

  • 结合Word2Vec文本内容预测文本标签

加载数据

import torch
import torch.nn as nn
import torchvision
from torchvision import transforms, datasets
import os,PIL,pathlib,warnings
import pandas as pdwarnings.filterwarnings('ignore')device = torch.device("cuda" if torch.cuda.is_available() else  "cpu") 
print(device)
# 从本地CSV文件中读取文本内容和标签
train_data = pd.read_csv("D:/桌面/365/train.csv", sep='\t', header=None)
train_data.head()
def coustom_data_iter(texts, labels):for x, y in zip(texts, labels):yield x, yx = train_data[0].values[:]
y = train_data[1].values[:]

构建词典

from gensim.models.word2vec import Word2Vec
import numpy as npw2v = Word2Vec(vector_size=100, min_count=3)w2v.build_vocab(x)
w2v.train(x, total_examples=w2v.corpus_count, epochs=20)
def average_vec(text):vec = np.zeros(100).reshape((1,100))for word in text:try:vec += w2v.wv[word].reshape((1,100))except KeyError:continuereturn vecx_vec = np.concatenate([average_vec(z) for z in x])w2v.save('./w2c_model.pkl')

生成数据批次和迭代器

text_pipeline = lambda x: average_vec(x)
label_pipeline = lambda x: label_name.index(x)
text_pipeline('你在干嘛')
array([[ 0.78121352,  1.93111382,  0.96291968,  0.39362412, -1.67714586,-0.55152619,  1.7284598 ,  0.69204517,  1.1396839 , -0.9755076 ,-0.55864345, -3.68676656,  1.41707338, -0.44626126,  0.2580443 ,1.09325009,  2.28043211, -2.26334408,  3.32311766, -1.24760717,2.2325974 , -0.48408172, -0.55063696,  0.36853465, -1.32127168,-0.53377433, -1.48909409, -0.5050023 ,  1.42371842, -0.4252875 ,2.52355766,  0.60818394, -1.68924798, -0.16912293,  1.26915893,-0.4575564 ,  0.02507078,  3.33139969, -2.1995108 ,  0.44307417,-0.41596803,  1.39861814, -0.58643346,  0.91654699, -0.08089826,0.08773175,  1.51611513, -0.22212304, -3.55333737,  1.93851076,0.42497785, -1.47862379, -0.96684674,  1.20408788, -0.86870126,-1.12228102,  1.67186388, -1.11024326, -0.18936946,  1.0811481 ,1.82965288, -0.78202841,  2.17574303, -1.03871018, -0.51042572,0.40746585, -1.70572275,  1.3409467 ,  1.38298857,  1.11757374,-0.8333215 ,  0.04856796,  1.43110101, -0.02333559,  0.82732772,-0.9469737 , -4.43783602, -0.20290428,  1.04759257, -1.21757071,-1.30356295,  0.50049417, -1.87846385,  2.47995635, -2.41918275,-1.72291106,  2.65663178, -0.96948189, -1.30033612, -0.37353188,0.53420451, -1.99955091,  0.12223354,  1.74861516,  0.99491888,-1.43117569,  0.063243  ,  0.84598846, -2.79536995,  0.02697589]])
from torch.utils.data import DataLoaderdef collate_batch(batch):label_list, text_list = [],[]for (_text, _label) in batch:label_list.append(label_pipeline(_label))processed_text = torch.tensor(text_pipeline(_text), dtype=torch.float32)text_list.append(processed_text)label_list = torch.tensor(label_list, dtype=torch.int64)text_list  = torch.cat(text_list)return text_list.to(device), label_list.to(device)datalodaer = DataLoader(train_iter, batch_size=8, shuffle=False, collate_fn=collate_batch)

模型构建

from torch import nnclass TextClassificationModel(nn.Module):def __init__(self, num_class):super(TextClassificationModel, self).__init__()self.fc = nn.Linear(100, num_class)def forward(self, text):text = text.float()return self.fc(text)
在这组词汇中不匹配的词汇:书

初始化模型

num_class = len(label_name)
vocab_size = 100000
em_size = 12
model = TextClassificationModel(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) in enumerate(dataloader): # text, label的顺序不能反,否则会报错predicted_label = model(text)optimizer.zero_grad()loss = criterion(predicted_label, label)loss.backward()torch.nn.utils.clip_grad_norm_(model.parameters(), 0.1)optimizer.step()total_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) in enumerate(dataloader):predicted_label = model(text)loss = criterion(predicted_label, label)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_datasetEPOCHS = 10
LR = 5
BATCH_SIZE = 64criterion = 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 = Nonetrain_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)
| epoch 1 |   50/ 152 batches| train_acc 0.752 train_loss 0.02433
| epoch 1 |  100/ 152 batches| train_acc 0.836 train_loss 0.01740
| epoch 1 |  150/ 152 batches| train_acc 0.831 train_loss 0.01821
---------------------------------------------------------------------
|epoch 1 | time: 2.83s |valid_acc 0.847 valid_loss 0.016 | lr 5.000000
---------------------------------------------------------------------
| epoch 2 |   50/ 152 batches| train_acc 0.843 train_loss 0.01709
| epoch 2 |  100/ 152 batches| train_acc 0.835 train_loss 0.01863
| epoch 2 |  150/ 152 batches| train_acc 0.854 train_loss 0.01577
---------------------------------------------------------------------
|epoch 2 | time: 1.28s |valid_acc 0.852 valid_loss 0.017 | lr 5.000000
---------------------------------------------------------------------
| epoch 3 |   50/ 152 batches| train_acc 0.854 train_loss 0.01663
| epoch 3 |  100/ 152 batches| train_acc 0.855 train_loss 0.01743
| epoch 3 |  150/ 152 batches| train_acc 0.846 train_loss 0.01738
---------------------------------------------------------------------
|epoch 3 | time: 1.34s |valid_acc 0.862 valid_loss 0.017 | lr 5.000000
---------------------------------------------------------------------
| epoch 4 |   50/ 152 batches| train_acc 0.862 train_loss 0.01514
| epoch 4 |  100/ 152 batches| train_acc 0.854 train_loss 0.01638
| epoch 4 |  150/ 152 batches| train_acc 0.854 train_loss 0.01920
---------------------------------------------------------------------
|epoch 4 | time: 1.18s |valid_acc 0.847 valid_loss 0.018 | lr 5.000000
---------------------------------------------------------------------
| epoch 5 |   50/ 152 batches| train_acc 0.898 train_loss 0.00902
| epoch 5 |  100/ 152 batches| train_acc 0.897 train_loss 0.00885
| epoch 5 |  150/ 152 batches| train_acc 0.900 train_loss 0.00893
---------------------------------------------------------------------
|epoch 5 | time: 1.37s |valid_acc 0.879 valid_loss 0.011 | lr 0.500000
---------------------------------------------------------------------
| epoch 6 |   50/ 152 batches| train_acc 0.900 train_loss 0.00788
| epoch 6 |  100/ 152 batches| train_acc 0.904 train_loss 0.00703
| epoch 6 |  150/ 152 batches| train_acc 0.901 train_loss 0.00681
---------------------------------------------------------------------
|epoch 6 | time: 1.33s |valid_acc 0.883 valid_loss 0.010 | lr 0.500000
---------------------------------------------------------------------
| epoch 7 |   50/ 152 batches| train_acc 0.922 train_loss 0.00573
| epoch 7 |  100/ 152 batches| train_acc 0.901 train_loss 0.00728
| epoch 7 |  150/ 152 batches| train_acc 0.894 train_loss 0.00702
---------------------------------------------------------------------
|epoch 7 | time: 1.12s |valid_acc 0.879 valid_loss 0.009 | lr 0.500000
---------------------------------------------------------------------
| epoch 8 |   50/ 152 batches| train_acc 0.908 train_loss 0.00630
| epoch 8 |  100/ 152 batches| train_acc 0.905 train_loss 0.00593
| epoch 8 |  150/ 152 batches| train_acc 0.911 train_loss 0.00526
---------------------------------------------------------------------
|epoch 8 | time: 1.11s |valid_acc 0.881 valid_loss 0.009 | lr 0.050000
---------------------------------------------------------------------
| epoch 9 |   50/ 152 batches| train_acc 0.911 train_loss 0.00580
| epoch 9 |  100/ 152 batches| train_acc 0.905 train_loss 0.00611
| epoch 9 |  150/ 152 batches| train_acc 0.917 train_loss 0.00516
---------------------------------------------------------------------
|epoch 9 | time: 1.12s |valid_acc 0.881 valid_loss 0.009 | lr 0.005000
---------------------------------------------------------------------
| epoch 10 |   50/ 152 batches| train_acc 0.912 train_loss 0.00564
| epoch 10 |  100/ 152 batches| train_acc 0.905 train_loss 0.00575
| epoch 10 |  150/ 152 batches| train_acc 0.916 train_loss 0.00565
---------------------------------------------------------------------
|epoch 10 | time: 1.12s |valid_acc 0.881 valid_loss 0.009 | lr 0.000500
---------------------------------------------------------------------

测试指定数据

def predict(text, text_pipeline):with torch.no_grad():text = torch.tensor(text_pipeline(text), dtype=torch.float32)print(text.shape)output = model(text)return output.argmax(1).item()ex_text_str = '还有双鸭山到淮阴的汽车票吗13号的'model = model.to('cpu')print('该文本的类别是: %s' %label_name[predict(ex_text_str, text_pipeline)])
torch.Size([1, 100])
该文本的类别是: Travel-Query

总结

  • 本周是结合前几周的内容,使用Word2Vec进行词嵌入之后,再实现中文文本分类
  • 本次自己的错误:将for idx, (text,label) in enumerate(dataloader): 中的text、label搞反了,导致输入和模型的输出无法匹配,因此花费了很多时间

相关文章:

第N8周:使用Word2vec实现文本分类

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 本周任务: 结合Word2Vec文本内容预测文本标签 加载数据 import torch import torch.nn as nn import torchvision from torchvision import tra…...

SQL,力扣题目1635,Hopper 公司查询 I

一、力扣链接 LeetCode_1635 二、题目描述 表: Drivers ---------------------- | Column Name | Type | ---------------------- | driver_id | int | | join_date | date | ---------------------- driver_id 是该表的主键(具有唯一值的列)。 该表的每一行…...

【Apache Paimon】-- 6 -- 清理过期数据

目录 1、简要介绍 2、操作方式和步骤 2.1、调整快照文件过期时间 2.2、设置分区过期时间 2.2.1、举例1 2.2.2、举例2 2.3、清理废弃文件 3、参考 1、简要介绍 清理 paimon (表)过期数据可以释放存储空间,优化资源利用并提升系统运行效率等。本文将介绍如何清理 Paim…...

nginx 配置lua执行shell脚本

1.需要nginx安装lua_nginx_module模块,这一步安装时,遇到一个坑,nginx执行configure时,一直提示./configure: error: unsupported LuaJIT version; ngx_http_lua_module requires LuaJIT 2.x。 网上一堆方法都试了,都…...

C++:设计模式-单例模式

单例模式(Singleton Pattern)是一种设计模式,确保一个类只有一个实例,并且提供全局访问点。实现单例模式的关键是防止类被多次实例化,且能够保证实例的唯一性。常见的实现手法包括懒汉式、饿汉式、线程安全的懒汉式等。…...

优先级队列

概述 优先级队列(Priority Queue)是一种抽象数据类型(ADT),类似于普通的队列,不同之处在于每个元素都有一个与之相关的优先级。在优先级队列中,元素的出队顺序不是按照它们被入队的顺序&#x…...

一、Docker 安装集

一、Docker CentOS https://docs.docker.com/engine/install/centos/ 在 CentOS 上安装 Docker Engine # Docker要求CentOS系统的内核版本高于3.10:# Docker从1.13版本之后,采用时间线的方式作为版本号: 1. 分为社区版CE和企业版EE。 2. 社…...

软件测试——自动化测试常见函数

在上一篇文章软件测试——自动化测试概念篇-CSDN博客中,给大家演示了一下自动化程序,而本篇文章会带大家详细学习selenium库。 selenium库是python官方的库,里面包含了很多操控浏览器的函数。 本节重点 元素定位操作测试对象窗口等待导航弹…...

SEO网站都用哪里的服务器

在当今这个信息爆炸的时代,网站的加载速度已经成为衡量其质量的重要指标之一。对于SEO网站来说,速度不仅关乎用户体验,更是影响搜索引擎排名的重要因素。在众多服务器提供商中,鼎峰新匯凭借其卓越的性能和优质的服务,成…...

【从零开始的LeetCode-算法】3233. 统计不是特殊数字的数字数量

给你两个 正整数 l 和 r。对于任何数字 x,x 的所有正因数(除了 x 本身)被称为 x 的 真因数。 如果一个数字恰好仅有两个 真因数,则称该数字为 特殊数字。例如: 数字 4 是 特殊数字,因为它的真因数为 1 和…...

shell脚本(五)

声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&#…...

Windows中指定路径安装DockerDesktop

Windows中指定路径安装DockerDesktop 文章目录 Windows中指定路径安装DockerDesktop1. 先卸载干净(如果已安装过的话)2. 指定路径安装1. 新建需要安装的文件目录2. 指定路径安装 3. WSL子系统下载1. GitHub下载地址2. 指定版本直接下载 Widnows中直接安装docker desktop&#x…...

阿里云私服地址

1.解压apache-maven-3.6.1-bin 2.配置本地仓库&#xff1a;修改conf/dettings.xml中的<localReoisitory>为一个指定目录。56行 <localRepository>D:\apache-maven-3.6.1-bin\apache-maven-3.6.1\mvn_repo</localRepository> 3.配置阿里云私服&#xff1a;…...

深入探究 Vue 实例挂载过程与场景 —— 代码实例详解

Vue 实例挂载过程及使用场景分析 Vue 实例的挂载过程是 Vue 应用启动的核心,它决定了 Vue 组件如何与 DOM 进行绑定。在理解 Vue 实例挂载的过程后,我们可以根据不同的使用场景来选择合适的挂载方式。下面详细讲解 Vue 实例的挂载过程、常见使用场景,并通过实际项目示例进行…...

特征交叉-MaskNet文章总结代码实现

MaskNet 这个模型是微博21年提出的&#xff0c;23年twitter(X)开源的推荐系统排序模块使用的backbone结构。 核心思想是认为DNN为主的特征交叉是addictive&#xff0c;交叉效率不高&#xff1b;所以设计了一种multiplicatvie的特征交叉 如何设计muliplicative特征交叉呢&#x…...

【第八课】Rust中的函数与方法

目录 前言 函数指针 函数当作另一个函数的参数 函数当作另一个函数的返回值 闭包 方法 关联函数 总结 前言 在前面几课中&#xff0c;我们都或多或少的接触到了rust中的函数&#xff0c;rust中的函数和其他语言的并没有什么不同&#xff0c;简单的语法不在这篇文章中赘…...

PyQt飞机大战游戏(附下载地址)

欢迎下载体验&#xff01; 文件大小&#xff1a;22.9 M 下载地址&#xff1a;链接&#xff1a;https://wwrr.lanzoul.com/iybV22frvcng pyqt5-飞机大战 一&#xff0e;前言 up主最近高产&#xff0c;再给大家分享一个博主开发的小游戏-飞机大战&#xff0c;这是一款飞行射击游…...

代替Spinnaker 的 POINTGREY工业级相机 FLIR相机 Python编程案例

SpinnakerSDK_FULL_4.0.0.116_x64 是一个用于FLIR相机的SDK&#xff0c;主要用于图像采集和处理。Spinnaker SDK主要提供C接口&#xff0c;无法直接应用在python环境。本文则基于Pycharm2019python3.7的环境下&#xff0c;调用opencv,EasySpin,PySpin,的库实现POINTGREY工业级相…...

redis模糊匹配key内存分析的脚本

效果&#xff1a; 脚本 与 redis-cli 命令放在同一路径下执行脚本 注意&#xff1a; 1、SCAN 命令仅扫描当前节点的键&#xff0c;若要扫描整个集群中的所有节点&#xff0c;建议在各个从节点上分别执行&#xff1b; 2、为避免扫描对业务产生影响&#xff1a; 可以在从节点或…...

STM32设计学生宿舍监测控制系统-分享

目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 电路图采用Altium Designer进行设计&#xff1a; 三、实物设计图 四、程序源代码设计 五、获取资料内容 前言 本项目旨在利用STM32单片机为核心&#xff0c;结合传感器技术、无线通信技…...

Python爬虫案例八:抓取597招聘网信息并用xlutils进行excel数据的保存

excel保存数据的三种方式&#xff1a; 1、pandas保存excel数据&#xff0c;后缀名为xlsx; 举例&#xff1a; import pandas as pddic {姓名: [张三, 李四, 王五, 赵六],年龄: [18, 19, 20, 21],住址: [广州, 青岛, 南京, 重庆] } dic_file pd.DataFrame(dic) dic_file…...

Mybatis-Day3

规则&#xff1a; 定义与SQL映射文件同名的Mapper接口&#xff0c;并且将Mapper接口和SQL映射文件放置在同一目录下 设置SQL映射我呢见的namespace属性为Mapper接口的全限定名 在Mapper接口中定义方法&#xff0c;方法名就是SQL映射文件中sql语句的id&#xff0c;并保持参数类…...

第六节-AppScan扫描报告

第六节-AppScan扫描报告 1.加载扫描结果 1.点击【打开】 2.选择之前保存过的扫描结果 3.等待加载完成 2.领导查看的报告 1.点击【报告】 2.模板选择为【缺省值】 3.最低严重性选择为【中】&#xff0c;测试类型选择为【应用程序】 4.点击【布局】 5.选择【其他徽标】&#x…...

多模MPO的测试套件

MultiFiber™Pro光功率计及光纤测试工具包 首款支持单模和多模MPO光纤认证的MPO光纤测试仪 利用“扫描全部”功能自动扫描和测试MPO连接器中的所有光纤 支持多模和单模MPO光纤干线 在测试光纤干线时无需使用扇形跳线 以最小的界面显示易懂的结果 用户界面上显示所有12光纤 自动…...

使用php和Xunsearch提升音乐网站的歌曲搜索效果

文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons&#xff1a;JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram&#xff0c;自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 &#xff1f; 5 IDEA必装的插件&…...

Idea忽略提交文件、Idea设置文件隐藏、Idea提交时隐藏部分文件、git提交时忽略文件

文章目录 一、在idea中commit文件时隐藏文件方式一&#xff1a;创建.gitignore文件&#xff08;推荐&#xff09;方式二&#xff1a;‌通过File Types设置隐藏文件方式三&#xff1a;通过Git配置忽略文件‌&#xff08;不推荐&#xff09;总结 二、可能遇到的问题2.1、.gitigno…...

菜鸟驿站二维码/一维码 取件识别功能

特别注意需要引入 库文 ZXing 可跳转&#xff1a; 记录【WinForm】C#学习使用ZXing.Net生成条码过程_c# zxing-CSDN博客 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using static System.Net.…...

MQ核心作用、解耦、削峰使用场景详解

说在前面 在如今的高并发互联网应用中&#xff0c;如何确保系统在巨大的流量冲击下还能稳定运行&#xff0c;是每个技术团队都会遇到的挑战。说到这&#xff0c;消息队列&#xff08;MQ&#xff09;就是背后的“大功臣”了。无论是异步处理请求、平滑应对流量高峰&#xff0c;…...

【从零开始的LeetCode-算法】3232. 判断是否可以赢得数字游戏

给你一个 正整数 数组 nums。 Alice 和 Bob 正在玩游戏。在游戏中&#xff0c;Alice 可以从 nums 中选择所有个位数 或 所有两位数&#xff0c;剩余的数字归 Bob 所有。如果 Alice 所选数字之和 严格大于 Bob 的数字之和&#xff0c;则 Alice 获胜。 如果 Alice 能赢得这场游…...

使用LLaMA-Factory微调时的问题与解决方案记录

文章目录 如何指定微调使用的显卡如何解决显卡通信导致的报错模型微调的实际epoch和step如何计算如何实现多卡全量微调模型微调后的结果如何查看模型测试后的指标如何理解如何指定微调使用的显卡 启动网页时使用这种执行命令 CUDA_VISIBLE_DEVICES=5,6,7 llamafactory-cli we…...

一文读懂埋阻埋容工艺

PCB 埋阻埋容工艺是一种在 PCB 板内部埋入电阻和电容的工艺。通常情况下&#xff0c; PCB 上电阻和电容都是通过贴片技术直接焊接在板面上的&#xff0c;而埋阻埋容工艺则将电 阻和电容嵌入到 PCB 板的内部层中&#xff0c;这种印制电路板,其自下而上依次包括第一介电 层,隐埋电…...

What is a Tensor?

WTF is a Tensor? What is the difference between tensors and matrixes?...

提升性能测试效率与准确性:深入解析JMeter中的各类定时器

在软件性能测试领域&#xff0c;Apache JMeter是一款广泛使用的开源工具&#xff0c;它允许开发者模拟大量用户对应用程序进行并发访问&#xff0c;从而评估系统的性能和稳定性。在进行性能测试时&#xff0c;合理地设置请求之间的延迟时间对于模拟真实用户行为、避免服务器过载…...

从繁琐到优雅:用 PyTorch Lightning 简化深度学习项目开发

从繁琐到优雅&#xff1a;用 PyTorch Lightning 简化深度学习项目开发 在深度学习开发中&#xff0c;尤其是使用 PyTorch 时&#xff0c;我们常常需要编写大量样板代码来管理训练循环、验证流程和模型保存等任务。PyTorch Lightning 作为 PyTorch 的高级封装库&#xff0c;帮助…...

Python学习32天

Self #比较两个人信息&#xff0c;完全相等输出True,否则输出False class Person(): nameNone ageNone def compare_to(self,other): return self.nameother.name and self.ageother.age man1Person() man1.name"tim" man1.age3 man2Person man…...

云原生学习

1、云原生学习 文章目录 1、云原生学习1. 介绍2. Docker容器化 1. 介绍 什么是云原生&#xff1f;原生指使用JAVA等语言编写的项目&#xff0c;云是指将项目部署到云服务器上云平台&#xff1a;公有云、私有云 本地平台是指直接部署在自己计算机&#xff0c;而开发的应用一定要…...

django从入门到精通(六)——auth认证及自定义用户

Django 提供了一个强大的用户认证系统&#xff0c;允许开发者轻松管理用户的注册、登录、权限和组等功能。以下是对 Django 用户认证系统的详细介绍&#xff0c;包括默认的用户认证、自定义用户认证和权限设置。 1. 默认用户认证 1.1 用户模型 Django 默认提供了一个用户模型…...

影响电阻可靠性的因素

一、影响电阻可靠性的因素&#xff1a; 影响电阻可靠性的因素有温度系数、额定功率&#xff0c;最大工作电压、固有噪声和电压系数 &#xff08;一&#xff09;温度系数 电阻的温度系数表示当温度改变1摄氏度时&#xff0c;电阻阻值的相对变化&#xff0c;单位为ppm/C.电阻温度…...

大数运算(加减乘除和输入、输出模块)

为什么会有大数呢&#xff1f;因为long long通常为64位范围约为 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807&#xff0c;最多也就19位&#xff0c;那么超过19位的如何计算呢&#xff1f;这就引申出来大数了。 本博客适合思考过这道题&#xff0c;但是没做出来或…...

HTML5超酷响应式视频背景动画特效(六种风格,附源码)

文章目录 1.设计来源1.1 大气蓬勃动态背景界面效果1.2 星空闪闪动态背景界面效果1.3 眼神深眸动态背景界面效果1.4 星空银河动态背景界面效果1.5 花开花落动态背景界面效果1.6 海底世界动态背景界面效果 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板&#xff0c;程序开…...

堆优化版本的Prim

prim和dijkstra每轮找最小边的松弛操作其实是同源的&#xff0c;因而受dijkstra堆优化的启发&#xff0c;那么prim也可以采用小根堆进行优化。时间复杂度也由 O ( n 2 ) O(n^2) O(n2)降为 O ( n l o g n ) O(nlogn) O(nlogn)。 测试一下吧&#xff1a;原题链接 #include <i…...

【视觉SLAM】4b-特征点法估计相机运动之PnP 3D-2D

文章目录 0. 前言1. PnP求解1.1 直接线性变换DLT1.2 P3P1.3 光束平差法BA2. 实现0. 前言 透视n点(Perspective-n-Point,PnP)问题是计算机视觉领域的经典问题,用于求解3D-2D的点运动。换句话说,当知道 N N N个世界坐标系中3D空间点的坐标以及它们在图像上的投影点像素坐标…...

JDK1.8中JVM堆内存等参数配置

在JDK 8中&#xff0c;JVM内存模型主要包括堆内存&#xff08;Heap Memory&#xff09;、元空间&#xff08;Metaspace&#xff09;以及直接内存&#xff08;Direct Memory&#xff09;。以下是一些常用的JVM内存参数配置建议&#xff0c;特别是在JDK 8环境下&#xff1a; 1. …...

【C++】深入哈希表核心:从改造到封装,解锁 unordered_set 与 unordered_map 的终极奥义!

文章目录 修改哈希表模板参数迭代器HashTable 的默认成员函数HashTable 迭代器相关函数HashTable 的 Insert 函数HashTable 的 Find函数HashTable 的 Erase函数 封装 unordered_set封装 unordered_map测试 unordered_set 和 unordered_map 修改哈希表 我们基于链地址法实现的哈…...

蓝桥杯模拟

【问题描述】 如果一个数 p 是个质数&#xff0c;同时又是整数 a 的约数&#xff0c;则 p 称为 a 的一个质因数。 请问 2024 有多少个质因数。 【答案提交】 这是一道结果填空的题&#xff0c;你只需要算出结果后提交即可。本题的结果为一个整数&#xff0c;在提交答案时只…...

16. 【.NET 8 实战--孢子记账--从单体到微服务】--汇率获取定时器

这篇文章我们将一起编写这个系列专栏中第一个和外部系统交互的功能&#xff1a;获取每日汇率。下面我们一起来编写代码吧。 一、需求 根据文章标题可知&#xff0c;在这片文章中我们只进行汇率的获取和写入数据库。 编号需求说明1获取每日汇率1. 从第三方汇率API中获取汇率信…...

移动充储机器人“小奥”的多场景应用(上)

一、高速公路服务区应用 在高速公路服务区&#xff0c;新能源汽车的充电需求得到“小奥”机器人的及时响应。该机器人配备有储能电池和自动驾驶技术&#xff0c;能够迅速定位至指定充电点&#xff0c;为待充电的新能源汽车提供服务。得益于“小奥”的机动性&#xff0c;其服务…...

【Android】Service使用方法:本地服务 / 可通信服务 / 前台服务 / 远程服务(AIDL)

1 本地Service 这是最普通、最常用的后台服务Service。 1.1 使用步骤 步骤1&#xff1a;新建子类继承Service类&#xff1a;需重写父类的onCreate()、onStartCommand()、onDestroy()和onBind()方法步骤2&#xff1a;构建用于启动Service的Intent对象步骤3&#xff1a;调用st…...

Qt文件目录操作

文件目录操作相关类 Qt 为文件和目录操作提供了一些类&#xff0c;利用这些类可以方便地实现一些操作。Qt 提供的与文件和目录操作相关的类包括以下几个&#xff1a; QCoreApplication&#xff1a;用于提取应用程序路径&#xff0c;程序名等文件信息&#xff1b;QFile&#x…...

刷题-1122

1. 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 例如&#xff0c;当输入5时&#xff0c;应该输出的三角形为&#xff1a; 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11 import sys def generate_snake_matrix(n):matrix [[0]*n for _ in range(n)]curent_num 1…...