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

蓝耘云智算|使用 Deepseek R1 模型优化 BERT 在 NLP 任务中的表现

在自然语言处理(NLP)领域,BERT(Bidirectional Encoder Representations from Transformers)已成为许多文本分类任务的基准模型。然而,随着新模型的出现和技术的不断进步,BERT在某些情况下可能不是最优选择,尤其是在计算资源有限的环境中。为了提高训练效率和模型精度,最近的研究和技术发展提供了像 Deepseek R1 这样的优化模型。

本文将展示如何利用 Deepseek R1 模型来优化和加速传统 BERT 模型在 NLP 任务中的表现,具体来说是文本分类任务。我们将基于 Hugging Face 提供的 transformers 库以及 datasets 库,展示如何进行模型的微调、训练和评估。

Deepseek R1 的优化优势

  • 性能表现出色

媲美顶尖模型:在数学、代码和推理任务上可与 OpenAI o1 媲美,在世界大模型排名 arena 上,基准测试升至全类别大模型第三,在风格控制类模型分类中与 OpenAI o1 并列第一。
高效处理数据:能在短时间内完成大量数据的处理和分析,利用分布式计算架构和高效的索引机制,可实现毫秒级响应。
泛化能力强大:即使面对未知领域也能迅速适应和学习,对不同场景和类型的任务都有较好的适应性。

  • 技术创新独特

强化学习驱动:后训练阶段大规模使用强化学习技术,仅需少量标注数据即可显著提升模型性能,且证明了直接强化学习在大模型训练中的可行性。
构建智能训练场:由动态题目生成系统、过程验证体系和协同工作机制构成,可自动生成更难的变体题,并实时验证解题过程逻辑是否自洽,能提升模型推理能力。

  • 开源开放共享

采用 MIT 许可协议:允许任何人自由地使用、修改、分发和商业化该模型,包括模型权重和输出,为开发者提供了极大的便利和创作空间。
开源多个模型:除了开源 Deepseek-R1-zero 和 Deepseek-R1 两个 660b 模型外,还通过输出蒸馏了 6 个小模型开源给社区,其中 32b 和 70b 模型在多项能力上可对标 OpenAI o1-mini,降低了 AI 应用门槛,赋能开源社区发展。

  • 应用成本较低

训练成本低:预训练费用只有 557.6 万美元,在 2048 块英伟达 H800 GPU 集群上运行 55 天完成,仅是 OpenAI GPT-4o 模型训练成本的不到十分之一。
API 定价低:Deepseek R1 服务对每百万输入 token 收取 0.55 美元,对每百万输出 token 收取 2.19 美元 / 百万,而 OpenAI 最新版 o1 模型的相应收费分别为 15 美元 / 百万和 60 美元 / 百万。

对于大家来说,性能和开源最为重要,没了性能,大家的工作效率大大降低;模型开源了,这样对于大众来讲可以做的工作范围就可以无限延伸了

如何更便捷的使用Deepseek R1?

这里我推荐一个平台蓝耘云智算,平台可以一键启动Deepseek应用,无需自己部署,是不是十分的便捷呢~
只需在应用市场找到对应模型,部署即可
在这里插入图片描述
当然我这里已经有了,我们选择开机
在这里插入图片描述

等待片刻,我们选择快速启动应用
在这里插入图片描述

案例演示

我在网上找了一个情感分析的NLP小案例

import torch
from transformers import BertTokenizer, BertForSequenceClassification, Trainer, TrainingArguments
from datasets import load_dataset
from tqdm import tqdm  # 导入 tqdm 库# 1. 加载预训练模型和tokenizer
model_name = "bert-base-chinese"
tokenizer = BertTokenizer.from_pretrained(model_name)
model = BertForSequenceClassification.from_pretrained(model_name)# 2. 加载数据集 (例如:IMDB情感分类数据集)
dataset = load_dataset("imdb")# 3. 数据预处理:将文本转换为token
def tokenize_function(examples):return tokenizer(examples['text'], padding='max_length', truncation=True)# 应用tokenizer到训练和测试集
tokenized_datasets = dataset.map(tokenize_function, batched=True)# 4. 准备训练和验证数据集
train_dataset = tokenized_datasets["train"]
test_dataset = tokenized_datasets["test"]# 5. 设置训练参数
training_args = TrainingArguments(output_dir="./results",  # 输出目录evaluation_strategy="epoch",  # 每个epoch后评估learning_rate=2e-5,  # 学习率per_device_train_batch_size=16,  # 每个设备的训练批次大小per_device_eval_batch_size=64,  # 每个设备的评估批次大小num_train_epochs=3,  # 训练轮数weight_decay=0.01,  # 权重衰减logging_dir='./logs',  # 用于存储日志的目录logging_steps=10,  # 每10步记录一次日志load_best_model_at_end=True,  # 训练完后,加载最佳模型metric_for_best_model='accuracy',  # 根据准确率选择最佳模型
)# 6. 初始化Trainer对象
trainer = Trainer(model=model,  # 预训练模型args=training_args,  # 训练参数train_dataset=train_dataset,  # 训练数据集eval_dataset=test_dataset,  # 验证数据集
)# 7. 训练模型并添加进度条
# 使用 tqdm 包装训练过程
for epoch in range(training_args.num_train_epochs):print(f"\nTraining Epoch {epoch + 1}/{training_args.num_train_epochs}...")# 使用 tqdm 显示训练进度progress_bar = tqdm(range(len(train_dataset)), desc="Training", unit="batch")for batch in progress_bar:trainer.training_step(batch)progress_bar.update(1)# 8. 在测试集上评估模型并显示进度条
print("\nEvaluating model...")
progress_bar = tqdm(range(len(test_dataset)), desc="Evaluating", unit="batch")
for batch in progress_bar:trainer.evaluate(batch)progress_bar.update(1)# 9. 输出评估结果
results = trainer.evaluate()
print("\nEvaluation Results:", results)

接下来我们使用Deepseek进行优化
问:帮我修改优化上述代码,并给我生成修改后的代码
答:

import torch
from transformers import BertTokenizer, BertForSequenceClassification, TrainingArguments, Trainer
from datasets import load_dataset
from tqdm import tqdm# 1. 加载预训练模型和tokenizer
model_name = "bert-base-chinese"
tokenizer = BertTokenizer.from_pretrained(model_name)
model = BertForSequenceClassification.from_pretrained(model_name)# 2. 加载数据集 (例如:IMDB情感分类数据集)
_dataset = load_dataset("imdb")# 3. 数据预处理:将文本转换为token
def tokenize_function(examples):return tokenizer(examples['text'],max_length=128,  # 设置固定最大长度(建议使用模型的常用长度,如128或256)padding='max_length',truncation=True,return_tensors='pt')# 应用tokenizer到训练和测试集
tokenized_datasets = _dataset.map(tokenize_function, batched=True)# 4. 准备训练和验证数据集
train_dataset = tokenized_datasets["train"]
test_dataset = tokenized_datasets["test"]# 5. 设置训练参数
training_args = TrainingArguments(output_dir="./results",  # 输出目录evaluation_strategy="epoch",  # 每个epoch后评估learning_rate=2e-4,  # 学习率(调整为更常见的值)per_device_train_batch_size=32,  # 训练批次大小(增加批量大小以加快训练)per_device_eval_batch_size=64,  # 评估批次大小num_train_epochs=3,  # 训练轮数weight_decay=0.01,  # 权重衰减logging_dir='./logs',  # 日志存储目录logging_steps=10,  # 每10步记录一次日志load_best_model_at_end=True,  # 训练完后加载最佳模型metric_for_best_model='accuracy'  # 根据准确率选择最佳模型
)# 6. 初始化Trainer对象
trainer = Trainer(model=model,args=training_args,train_dataset=train_dataset,eval_dataset=test_dataset
)# 7. 训练模型并添加进度条
# 使用 DataLoader 加载数据以提高效率
from torch.utils.data import DataLoadertrain_loader = DataLoader(train_dataset, batch_size=training_args.per_device_train_batch_size)
test_loader = DataLoader(test_dataset, batch_size=training_args.per_device_eval_batch_size)for epoch in range(training_args.num_train_epochs):print(f"\nTraining Epoch {epoch + 1}/{training_args.num_train_epochs}...")# 使用 tqdm 显示训练进度progress_bar = tqdm(total=len(train_loader), desc="Training", unit="batch")for batch in train_loader:outputs = model(**batch['input_ids'])loss = outputs.losstrainer.training_step(batch, loss)progress_bar.update(1)# 8. 在测试集上评估模型并显示进度条
print("\nEvaluating model...")
progress_bar = tqdm(total=len(test_loader), desc="Evaluating", unit="batch")
for batch in test_loader:outputs = model(**batch['input_ids'])trainer.evaluate(batch)progress_bar.update(1)# 9. 输出评估结果
results = trainer.evaluate()
print("\nEvaluation Results:", results)# 10.保存最佳模型(根据metric_for_best_model)
if training_args.load_best_model_at_end:best_model = trainer.best_modelprint(f"Best model saved with accuracy: {best_model.metrics['accuracy']: .4f}")

下面是模型为我们提供的几条主要优化点:
主要优化点:

  • 数据预处理 :
    设置了固定的 max_length,避免了句子过长或过短的问题。
    使用 return_tensors=‘pt’ 返回适合模型输入的张量形式。
  • 训练参数调整 :
    增加了 learning_rate 到 2e-4,使得学习过程更稳健。
    提高了 per_device_train_batch_size 和 per_device_eval_batch_size 以加快数据处理速度。
    优化了其他超参数,使其更符合一般的训练设置。
  • 使用 DataLoader 加载数据 :
    使用 DataLoader 来加载训练集和测试集,提升数据加载的效率和稳定性。
  • 评估过程改进 :
    在评估时保留了原始的 evaluate 方法,同时实现了自己的评估循环。
    输出详细的评估结果,便于后续分析。
  • 保存最佳模型 :
    根据 metric_for_best_model 参数,自动选择准确率最高的模型进行保存。
  • 日志记录优化 :
    增加了对训练过程和测试过程的进度条显示,方便监控训练状态。
    设置了合理的日志记录步骤和存储路径,确保重要信息不丢失。
  • 代码结构清晰 :
    将关键部分(如数据加载、训练循环、评估循环)分离,便于理解和维护。

如何使用Deepseek R1辅助我们进行AI模型优化的简单步骤如上,其实就是使用文字进行引导,让模型知道你想干啥就可以了,但是有时候难免会报错这时候就要见机行事了,上述代码可以因为数据集会报错,这时候我们最好的版本或许的升级库,或者是在网上下载好数据集,然后调用本地的数据,总的来说活学活用为上上策~

当然我们也可以问问模型,现如今主流的NLP模型是什么呀?它会帮我们罗列一些,但这并不一定的最好的,但是一定不会差,这对于我们初学者是十分友好的~
在这里插入图片描述

结语

本文通过实际案例演示了如何利用 Deepseek R1 模型来优化传统 BERT 模型在情感分析任务中的表现,这极大的提高了我们工作的效率,无需为优化模型苦恼,Deepseek R1可以帮你扩宽思路;最后我将蓝耘云智算的注册链接贴出来,不想麻烦的,或者只想体验一下模型的小伙伴可以试试~
注册链接:https://cloud.lanyun.net//#/registerPage?promoterCode=0131

请添加图片描述

相关文章:

蓝耘云智算|使用 Deepseek R1 模型优化 BERT 在 NLP 任务中的表现

在自然语言处理(NLP)领域,BERT(Bidirectional Encoder Representations from Transformers)已成为许多文本分类任务的基准模型。然而,随着新模型的出现和技术的不断进步,BERT在某些情况下可能不…...

LINUX常用命令学习

查看系统版本 使用hostnamectl命令检查。hostnamectl显示了CentOS的版本以及操作系统的相关信息,非常方便 设置linux机器别名称 hostnamectl set-hostname 机器别名 --static 华为云 centos 命令:lsb_release -a linux:cat /proc/version 查看进程路…...

【java面向对象的三大特性】封装、继承和多态

目录标题 一、封装(Encapsulation):二、继承(Inheritance):三、多态(Polymorphism):1. 多态的三个必要条件:2.多态的具体实现:3.多态的使用场景&a…...

【开源免费】基于SpringBoot+Vue.JS校园商铺管理系统(JAVA毕业设计)

本文项目编号 T 191 ,文末自助获取源码 \color{red}{T191,文末自助获取源码} T191,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

日常故障排查 - Java程序故障排查

Java程序故障 无论对于任何的故障而言,恢复可用性都是首要目标。但作为一个技术匠人,不能让同一个问题导致多次故障,因此故障的根因剖析以及解决也是很重要的。但是故障根因剖析是需要现场数据来进行分析,因此在故障恢复之前要尽…...

ai数字人分身系统开发源码saas化

#数字人分身系统# #数字人系统源码# #ai数字人123 123# 云罗抖去推数字人分身系统是一款融合了形象克隆、声音克隆、AI数字人分身、AI智能剪辑、智能文案等各种AI技术一体化的短视频营销工具,其核心功能优势主要体现在以下几方面: 真实度高&#xf…...

DeepSeek免费部署到WPS或Office

部署到WPS - 通过OfficeAI插件接入: - 准备工作:安装最新版本的WPS Office软件;访问DeepSeek官网,点击右上角的“API开放平台”,登录账号(若无账号需先注册),登录成功后,…...

vue2和vue3插槽slot最通俗易懂的区别理解

在 Vue 的组件通信中,slot(插槽)的编译优化是一个重要的性能提升点。以下是 Vue2 和 Vue3 在 slot 处理上的差异及优化原理,用更直观的方式解释: Vue2 的 Slot 更新机制 想象一个父子组件场景: 父组件&am…...

生成式人工智能:技术革命与应用图景

(这文章有些地方看不懂很正常,因为有太多生词,需要对 计算机/人工智能 研究至深的人才能看懂,遇到不会的地方用浏览器搜索或跳过) 引言 2023年被称我们为"生成式AI元年",以GPT-4、DALL-E 3、Stable Diffusi…...

关于Dest1ny:我的创作纪念日

Dest1ny 因为这是csdn任务,我就稍微“写”了一下! 如果大家真的有什么想聊的或者想一起学习的,欢迎在评论区或者私信中与我讨论! 2025想说的话 我就把我想说的写在前面! 不用对未来焦虑,不要觉得自己走…...

AI学习记录 - 最简单的专家模型 MOE

代码 import torch import torch.nn as nn import torch.nn.functional as F from typing import Tupleclass BasicExpert(nn.Module):# 一个 Expert 可以是一个最简单的, linear 层即可# 也可以是 MLP 层# 也可以是 更复杂的 MLP 层(active function 设…...

【C++内存管理】—— 策略、陷阱及应对之道

欢迎来到ZyyOvO的博客✨,一个关于探索技术的角落,记录学习的点滴📖,分享实用的技巧🛠️,偶尔还有一些奇思妙想💡 本文由ZyyOvO原创✍️,感谢支持❤️!请尊重原创&#x1…...

分布式版本控制系统---git

Git:从基础到进阶的全面指南 Git 是一个分布式版本控制系统,广泛应用于软件开发中,用于跟踪文件的更改、支持团队协作以及管理项目代码。通过 Git,开发者可以在本地拥有完整的项目历史记录,进行离线开发,并…...

pg_sql关于时间的函数

1、时间戳和日期之间的相互转换 时间戳转日期(时间戳为数值类型,若为字符型需进行转换) # 保留到秒:2025-10-02 04:46:40 (字符型转换数值型) select to_timestamp(1759351600::bigint)# 保留到日&#x…...

【Kafka】Windows下安装Kafka(全面)

目录 1.前提条件 2.下载 3.安装 4.环境变量配置 5.验证 1.前提条件 参考版本:zookeeper为3.6.4 kafka版本为3.5.1 1.先安装zookeeper: 【Zookeeper】Windows下安装Zookeeper(全面)-CSDN博客https://blog.csdn.net/…...

【Qt】:概述(下载安装、认识 QT Creator)

🌈 个人主页:Zfox_ 🔥 系列专栏:Qt 目录 一:🔥 介绍 🦋 什么是 QT🦋 QT 发展史🦋 Qt版本🦋 QT 优点 一:🔥 搭建Qt开发环境 &#x1f9…...

Netty源码解析之异步处理(二):盛赞Promise中的集合设计

前言 在阅读Netty源码的过程中,我越来越相信一句话:“Netty的源码非常好,质量极高,是Java中质量最高的开源项目之一”。如果认真研究,会有一种遍地黄金的感觉。 本篇文件我将记录一下鄙人在Promise的实现类DefaultPr…...

Spring Boot 的约定优于配置,你的理解是什么?

“约定优于配置” 是 Spring Boot 极为重要的设计理念,它极大地简化了 Spring 应用的开发流程,下面从多个方面详细解释这一理念: 减少配置复杂性 传统开发的痛点 在传统的 Spring 开发里,配置工作相当繁琐。以配置 Spring MVC …...

图形渲染(一)——Skia、OpenGL、Mesa 和 Vulkan简介

1.Skia —— 2D 图形库 Skia 是一个 2D 图形库,它的作用是为开发者提供一个高层次的绘图接口,方便他们进行 2D 图形渲染(比如绘制文本、形状、图像等)。Skia 本身不直接管理 GPU 或进行底层的渲染工作,而是通过 底层图…...

git使用,注意空格

第一节 安装完成后,找个目录用于存储,打开目录右击选择git bash here 命令1 姓名 回车 git config --global user.name "li" 命令2 邮箱 回车 git config --global user.email "888163.com" 命令3 初始化新仓库,下载克隆 回…...

以用户为中心,汽车 HMI 界面设计的创新之道

在汽车智能化飞速发展的当下,汽车 HMI(人机交互界面)成为连接人与车的关键桥梁。如何打造出优秀的 HMI 界面?答案是以用户为中心,探索创新之道。 用户需求是汽车 HMI 界面设计的指南针。在设计前期,深入调…...

CentOS安装Docker,Ubuntu安装Docker,Docker解决方案

文章目录 CentOS7安装DockerUbuntu修改Docker镜像源docker设置容器自动启动启动时加--restartalways如果已经过运行的项目docker compose设置容器自启动 docker file修改时区docker在容器执行命令简单粗暴的办法安装curl docker compose命令安装docker compose Docker WEB 图形…...

c#中“事件-event”的经典示例与理解

在C#编程语言中,事件(Event)是一个非常重要的概念,它提供了一种松耦合的方式,让对象间能够通知彼此,而无需直接联系。事件的使用可以让我们的代码更加灵活、可扩展且易于维护。 事件可以视作委托的实例&…...

git bash在github的库中上传或更新本地文件

一、将本地文件上传到 GitHub 仓库 1. 创建 GitHub 仓库 如果你还没有在 GitHub 上创建仓库,首先需要创建一个新的仓库: 登录到 GitHub。点击右上角的 按钮,选择 New repository。给你的仓库起个名字,并选择 Public 或 Privat…...

【编程实践】vscode+pyside6环境部署

1 PySide6简介 PySide6是Qt for Python的官方版本,支持Qt6,提供Python访问Qt框架的接口。优点包括官方支持、LGPL许可,便于商业应用,与Qt6同步更新,支持最新特性。缺点是相比PyQt5,社区资源较少。未来发展…...

vue 文件下载(导出)excel的方法

目前有一个到处功能的需求,这是我用过DeepSeek生成的导出(下载)excel的一个方法。 1.excel的文件名是后端生成的,放在了响应头那里。 2.这里也可以自己制定文件名。 3.axios用的是原生的axios,不要用处理过的&#xff…...

服务器延迟给视频网站造成的影响

在数字化时代中,网络视频已经成为人们日常娱乐和获取信息的重要平台,网络视频的流畅性会影响着用户的体验度,那么,当服务器出现延迟会对视频网站造成哪些影响呢?本文就来共同了解一下吧! 当所使用的服务器由…...

django上传文件

1、settings.py配置 # 静态文件配置 STATIC_URL /static/ STATICFILES_DIRS [BASE_DIR /static, ]上传文件 # 定义一个视图函数,该函数接收一个 request 参数 from django.shortcuts import render # 必备引入 import json from django.views.decorators.http i…...

Mysql数据库

一.数据定义语言DDL 一.概述 DDL用于定义和管理数据库的结构 DDL关键字:1.CREATE; 2.ALTER; 3.DROP 二.SQL命名规定和规范 1.标识符命名规则 2.标识符命名规范 三.库管理 1. CREATE DATABASE 数据库名; 2. CREATE DATABASE IF NOT EXISTS 数据库名; 3. CREATE…...

机器学习 - 大数定律、可能近似正确学习理论

一、大数定律: 大数定律是概率论中的一个基本定理,其核心思想是:当独立重复的随机试验次数足够大时,样本的平均值会趋近于该随机变量的期望值。下面从直观和数学两个角度来说明这一概念: 1. 直观理解 重复试验的稳定…...

Kotlin 2.1.0 入门教程(十七)接口

接口 接口可以包含抽象方法的声明,也可以包含方法的实现。 接口与抽象类的不同之处在于,接口无法存储状态。接口可以拥有属性,但这些属性要么必须是抽象的,要么就得提供访问器的实现。 接口使用 interface 关键字来定义&#x…...

USB Flash闪存驱动器安全分析(第一部分)

翻译原文链接:Hacking Some More Secure USB Flash Drives (Part I) | SySS Tech Blog 文章翻译总结:文章对一些具有AES硬件加密的USB闪存驱动器的网络安全分析研究。研究由SySS的IT安全专家Matthias Deeg进行,他在2022年初发现了几个安全漏…...

报名丨Computer useVoice Agent :使用 TEN 搭建你的 Mac Assistant

与 TEN 相聚在「LET’S VISION 2025」大会,欢迎来展位上跟我们交流。这次我们还准备了一场聚焦「computer use」的工作坊,功能新鲜上线,线下首波体验! 📅 TEN 展位:2025年3月1日-2日 TEN workshop&#x…...

常用架构图:业务架构、产品架构、系统架构、数据架构、技术架构、应用架构、功能架构及信息架构

文章目录 引言常见的架构图I 业务架构图-案例模块功能说明1. 用户界面层 (UI)2. 应用服务层3. 数据管理层4. 基础设施层业务流程图示例技术实现II 功能架构图 -案例功能模块说明1. 船舶监控模块2. 报警管理模块3. 应急响应模块4. 通信管理模块5. 数据分析模块数据管理层基础设施…...

微信小程序的制作

制作微信小程序的过程大致可以分为几个步骤:从环境搭建、项目创建,到开发、调试和发布。下面我会为你简要介绍每个步骤。 1. 准备工作 在开始开发微信小程序之前,你需要确保你已经完成了以下几个步骤: 注册微信小程序账号&…...

C# 特性 学习记录

在C#中,特性(Attribute)是一种用于向代码元素(如类、方法、属性等)添加元数据的机制。特性本身不会直接影响代码的执行,但它们可以提供额外的信息,这些信息可以在运行时通过反射(Ref…...

DBeaver clickhouse 时区不对 时间少了8小时

选择DataBase选择Driver Manager选择clickhouse数据库点中之后,选择编辑添加两个全局属性 use_server_time_zone use_time_zone 鼠标移动到User Properties上,右键即可添加一列空白 然后断开重连...

如何测试和验证CVE-2024-1430:Netgear R7000 路由器信息泄露漏洞分析

CVE-2024-1430 是一个影响 Netgear R7000 路由器的安全漏洞,漏洞来源于该路由器 Web 管理界面的信息泄露问题。攻击者通过访问 /currentsetting.htm 文件,可能泄露敏感信息,如 Wi-Fi 密码等。 在测试和验证 CVE-2024-1430 时,您需…...

Express 中间件是什么

在 Express 里,中间件是具备访问请求对象(req)、响应对象(res)以及应用程序请求-响应循环中的下一个中间件函数(一般用next表示)的函数。 一、中间件的定义与调用顺序 在 Express 应用中&…...

【做一个微信小程序】校园地图页面实现

前言 上一个教程我们实现了小程序的一些的功能,有背景渐变色,发布功能有的呢,已支持图片上传功能,表情和投票功能开发中(请期待)。下面是一个更高级的微信小程序实现,包含以下功能:…...

(萌新入门)如何从起步阶段开始学习STM32 —— 0.碎碎念

目录 前言与导论 碎碎念 所以,我到底需要知道哪些东西呢 从一些基础的概念入手 常见的工具和说法 ST公司 MDK5 (Keil5) CubeMX 如何使用MDK5的一些常用功能 MDK5的一些常见的设置 前言与导论 非常感谢2301_77816627-CSDN博客的提问,他非常好奇…...

java nio 原理 非阻塞IO Netty

一、为什么必须去了解NIO 首先你需要之后Netty的主要实现手段就是Nio,很多人一直学不明白Netty,根本原因是 除了日常开发中很难能够实践,很大一部分原因是不熟悉NIO,事实上真正熟悉了NIO和它背后的原理之后,去查看Netty的源码就有…...

【ClickHouse】Ubuntu下离线安装ClickHouse数据库并使用DBeaver连接

目录 0. 安装前准备1 安装ClickHouse1.1 下载安装包1.2 离线安装1.3 配置密码1.4 启动ClickHouse服务 2 DBeaver连接配置2.1 下载ClickHouse驱动2.2 DBeaver配置2.2.1 配置主要参数2.2.2 配置驱动 2.3 常见问题处理2.3.1 修改远程登录配置2.3.2 更新驱动配置 0. 安装前准备 有…...

vue2打包带路径的项目,刷新404问题解决

问题描述 Vue 2 项目打包时设置了 publicPath: /web/,并通过 Nginx 配置访问 http://ip/web 时可以正常加载首页,但刷新页面时出现 404 错误 原nginx的配置 location /web {alias /www/dist; # 静态文件地址try_files $uri $uri/ /index.html;index i…...

【计算机视觉】文本识别

计算机视觉,广义的文本识别是指对输入的图像进行分析处理,识别出图像中的文字信息,这里的图像可以使传统的文档图像,也可以是现实世界中的场景图像。 简介 无论是传统方法还是基于深度深度学习的方法,完整的文本识别…...

Vue和React的区别

组件开发方式&#xff1a; Vue 使用单文件组件&#xff08;SFC&#xff09;, HTML, JS 和 CSS 在一个文件内实现 <template><div class"my-component"><!-- HTML模板 --></div> </template><script> export default {// JavaScr…...

STM32 是什么?同类产品有哪些

STM32 是什么&#xff1f; STM32 是由意法半导体&#xff08;STMicroelectronics&#xff09;推出的基于 ARM Cortex-M 内核 的 32 位微控制器&#xff08;MCU&#xff09;系列。它专为高性能、低功耗的嵌入式应用设计&#xff0c;广泛应用于以下领域&#xff1a; 工业控制&am…...

Git学习使用笔记

目录 一、基本介绍 1.1 版本控制 1.2 版本控制软件的基础功能 1.3 多人协作开发/集中式版本控制 1.4 分布式版本控制 二、Git安装 2.1下载git 2.2 使用Github Desktop软件 2.2.1 创建本地仓库 2.2.2 删除本地仓库 2.2.3 仓库文件操作 2.2.4 多人协作 2.2.4.1 分…...

Bash 中的运算方式

目录 概述&#xff1a; 1. (()) 运算符 2. let 命令 3. expr 命令 4. $[] 直接运算 5. bc&#xff08;计算器&#xff0c;支持浮点数&#xff09; 6. awk&#xff08;强大的文本处理工具&#xff0c;也可计算&#xff09; 概述&#xff1a; Bash 本身只支持整数运算&am…...

NLP Word Embeddings

Word representation One-hot形式 在上一周介绍RNN类模型时&#xff0c;使用了One-hot向量来表示单词的方式。它的缺点是将每个单词视为独立的&#xff0c;算法很难学习到单词之间的关系。 比如下面的例子&#xff0c;即使语言模型已经知道orange juice是常用组合词&#xf…...