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

语言模型中的多模态链式推理

在这里插入图片描述
在这里插入图片描述

神经网络的公式推导

  • 简介
  • 摘要
  • 引言
  • 多模态思维链推理的挑战
  • 多模态CoT框架
  • 多模态CoT模型架构细节
    • 编码模块
    • 融合模块
    • 解码模块
  • 实验结果
  • 运行代码
  • 补充细节
    • 安装包
    • 下载Flan-T5
    • 数据集准备
    • rouge
    • nltk
    • all-MiniLM-L6-v2
    • 运行

简介


本文主要对2023一篇论文《Multimodal Chain-of-Thought Reasoning in Language Models》主要内容进行介绍。

  • 参考文献:本文所涉及的所有资源的获取方式:https://www.aspiringcode.com/content?id=17097068673785&uid=d71ed07048414e97a398197d8a22e512

摘要


大型语言模型(LLM)在解决复杂推理问题时,通过引入思想链(CoT)提示来生成中间推理步骤,展现出了卓越的能力。但目前的CoT研究大多局限于语言领域。本文提出了一种创新的多模态CoT方法,该方法将语言(文本)和视觉(图像)信息融合到一个两阶段的框架中,该框架明确区分了基本原理的生成和答案的推理过程。这样的设计使得答案推理能够基于更加丰富和准确的多模态信息进行,从而提升了推理的质量。采用多模态CoT后,即使在模型参数仅为10亿的情况下,其性能也远超之前的顶尖LLM(如GPT-3.5),准确率从75.17%大幅提升至91.68%,甚至超越了ScienceQA基准上的人类表现。

引言


阅读一本未包含数字或图表的教育书籍时,我们发现,通过综合不同形式的数据如视觉图像、语言文字及音频信息,我们的知识吸收效率显著提升。大型语言模型(LLM)在应对复杂推理任务时,能够先构建一系列中间逻辑步骤,再据此推导出答案,这种技巧被形象地称为思维链推理(CoT),并广受赞誉。

然而,遗憾的是,当前关于CoT推理的研究大多局限于语言领域,对多模态情境的探索显得不足。为了在多模态环境中激活CoT推理,本文提出了一种新的多模态CoT框架。

在这个框架下,面对来自不同模态的输入信息,多模态CoT会先将复杂问题拆解成一系列中间推理环节(即基本原理),随后基于这些环节推导出最终答案。鉴于视觉与语言是当前最为普及的两种信息形式,我们的研究特别聚焦于这两者。
在这里插入图片描述

一个示例如图1所示。
通常,有两种方法可以引发多模式CoT推理:
(i)提示LLM
(ii)微调小模型

执行多模式CoT的最直接方法是将不同模态的输入转换为一个模态,并提示LLM执行CoT。例如,可以通过字幕模型提取图像的字幕,然后将字幕与要输入LLM的原始语言连接起来。然而,在字幕制作过程中存在严重的信息丢失;因此,使用字幕(与视觉特征相反)可能会在不同模态的表示空间中缺乏相互协同作用。

为了促进模态之间的交互,另一个潜在的解决方案是通过融合多模态特征来微调较小的语言模型。

由于这种方法允许灵活地调整模型架构以包含多模式特征,在这项工作中研究了微调模型,而不是提示LLM。

我们都知道1000亿参数(100B)下的语言模型往往会产生幻觉推理,误导答案推理。

为了减轻幻觉的挑战,文章提出了多模态CoT,将语言(文本)和视觉(图像)模式结合到一个分为两个阶段的框架中,该框架将原理生成和答案推理分开。通过这种方式,答案推理可以利用基于多模式信息的更好生成的理由。我们的实验是在ScienceQA基准上进行的,这是最新的带有注释推理链的多模式推理基准。实验结果表明,我们的方法比以前的GPT-3.5模型提高了+16%(75.17%→91.68%)。文章的贡献总结如下:
(i) 这项工作是第一次以不同的方式研究CoT推理。

(ii)提出了一个两阶段框架,通过微调语言模型来融合视觉和语言表示,以执行多模式CoT。该模型能够生成信息理性,以便于推断最终答案。

(iii)文章的方法在ScienceQA基准上实现了最先进的新性能,比GPT-3.5的精度高出16%,甚至超过了人类的性能。

多模态思维链推理的挑战


现有研究表明,CoT推理能力可能在一定规模的语言模型中出现,例如超过100B参数的大模型。然而在1B模型中激发这种推理能力仍然是一个悬而未决的挑战,更不用说在多模式场景中了。

这篇文章的重点是在1B左右模型,因为这样可以与常规消费级GPU(例如,32G内存)一起进行微调和部署。接下来将阐述1B模型在CoT推理中失败的原因,并研究如何设计一种有效的方法来克服这一挑战。

下面有个有趣的现象:

在ScienceQA基准上微调了CoT推理的纯文本基准模型。采用UnifiedQA-Base作为主干语言模型。任务为文本生成问题,其中模型将文本信息作为输入,并生成由基本原理和答案组成的输出序列。如图1所示的示例,该模型将问题文本(Q)、上下文文本(C)和多个选项(M)的标记串联作为输入。
为了研究CoT的影响,我们将其与三种变体的性能进行了比较:
(i) 直接预测答案,无CoT(QCM→A)
(ii) 推理,其中答案推理以基本原理为条件(QCM→RA);
(iii) 使用基本原理解释答案推理的解释(QCM→AR)。

在这里插入图片描述

令人惊讶的是,我们观察到准确性下降12.54%(80.40%→67.86%),如果模型在回答之前预测理性(QCM→RA)。结果表明,这些理由可能不一定有助于预测正确的答案。

其中的原因可能是模型在获得所需答案之前超过了最大token限制,或者提前停止生成预测。

然而,文章发现生成的输出(RA)的最大长度总是小于400个token,这低于语言模型的长度限制。因此,对理性危害答案推理的原因进行更深入的探讨是值得的。

为了进一步探究上述情况形成的原因,并深入研究原理如何影响答案预测,本文将CoT问题分为两个阶段,即原理生成和答案推理。基本原理生成使用RougeL分数来评估和答案推理使用准确性评估。表3显示了基于两阶段框架的结果。尽管两阶段基线模型在基本原理生成方面获得了91.76的RougeL分数,但答案推理的准确率仅为70.53%。
在这里插入图片描述

与表2中的QCM→A(80.40%)相比,结果表明,在两阶段框架中生成的基本原理并不能提高答案的准确性。

在这里插入图片描述

随机抽取的50个错误案例分析揭示,模型常陷入一种虚幻的推理陷阱,导致答案推导偏离正确轨道。如图2所示,一个典型错误是,模型(左侧基线模型)在没有视觉信息辅助的情况下,错误地推断出“一个磁体的南极会靠近另一个磁体的南极”。在这些错误案例中,此类视觉缺失导致的推理幻觉占比高达64%。

文章推测,这种幻觉根源在于执行高效多模态CoT时视觉上下文的缺失。为了弥补这一不足,一种直观的做法是将图像转化为文字描述,并将这些描述作为额外信息加入两个阶段的输入中。然而,如表3所示,这种做法带来的性能提升十分有限(仅提升0.59%)。

随后,我们探索了一种更先进的技术,即将视觉特征直接融入语言模型中。具体做法是,利用DETR模型提取配对图像中的视觉特征,并在将这些特征传递给解码器之前,与编码后的语言表示相结合。引入视觉特征后,基本原理生成的RougeL分数跃升至96.97%(QCM→R),这一改进也相应地提升了84.91%的答案准确率(QCMR→A)。随着有效理由的生成,幻觉现象得到显著缓解——62.5%的幻觉错误得以纠正(见图3(b))。这表明,视觉特征对于构建有效推理路径和准确答案推断至关重要。作为两阶段方法(QCMR→A),表3中的方法相较于表2中的一阶段方法展现出更优越的性能,因此,在多模态CoT框架中,我们选择了这一两阶段方法。
在这里插入图片描述

多模态CoT框架


基于之前的分析,多模式CoT将语言(文本)和视觉(图像)模式合并到一个两阶段的框架中,以减少幻觉输出,提升模型的效果。

多模式CoT由两个训练阶段组成:
(i) 基本原理生成
(ii) 答案推理

两个阶段共享相同的模型体系结构,但输入X和输出Y不同。
整个过程如图4所示。

在这里插入图片描述

在基本原理生成阶段,模型的输入为X,其中X如下:
在这里插入图片描述
其中括号中的前者表示第一阶段中的语言输入,后者表示视觉输入,即图像。

X可以看做实例化为多选推理问题的问题、上下文和选项的拼接,如图4所示。目标是学习一个基本原理生成模型R=F(X),其中R是基本原理。

在答案推理阶段,将基本原理R融入到到原始语言输入Description
,因此继续构建第二阶段的语言输入:Description
其中◦ 表示拼接。然后,我们将更新后的输入Description
馈送到答案推理模型,以推断最终答案Description

现在回过头来看图4,应该就比较清晰明了了。

多模态CoT模型架构细节


上面我们已经知道了文章的多模态CoT流程是怎么样的了,接下来将分析其中关键的模型架构细节也就是上文提到的F( ),以便我们能够对多模态CoT有更深入的理解。

F( )可以分为三个模块:编码模块、融合模块、解码模块

编码模块

在这里插入图片描述
其中
LanguageEncoder(·)指的就是transformer的encoder部分,输出的就是Transformer编码器中最后一层的隐藏状态。

VisionExtractor(·) 用于将输入图像矢量化为视觉特征,使用的应该是现成的视觉提取模型(DETR),其实应该也是类似transformer的encoder,因为计算机视觉中,也有vision transformer。

融合模块


在编码模块获得到文本和图片的表示后,先进行注意力计算,将文本和图像信息联系起来:
在这里插入图片描述
其中Q、K、V分别为Description

然后使用门控融合机制进行特征融合:在这里插入图片描述
其中Description
都是可训练的参数。

解码模块


这里就比较简单,使用的就是transformer的decoderDescription
作为输入,输出为我们需要的Y

至此,我们对多模态CoT应该有一个比较深入的了解了,关键内容其实就是使用encoder将文本信息和图像信息表示出来,使用门控融合机制进行特征融合,然后预测出我们需要的结果这个过程就是F( )。

所以多模态CoT完整的流程就是先将初始的文本和图像输入F( )得到图片和原始文本融合之后的CoT,然后再使用CoT的结果增强原始文本信息后得到的结果,再和图片信息输入F( )得到我们最终需要的预测结果。此时再去看图4,应该就一目了然了。

实验结果


在这里插入图片描述

表4显示了主要结果。Mutimodal CoTLarge比GPT-3.5高16.51%(75.17%→91.68%),并超过人类表现。具体而言,在8个问题类别中,Mutimodal CoT Large的得分为21.37%(67.43%→88.80%)的性能增益。与现有的UnifiedQA和GPT-3.5方法相比,这些方法利用上下文中的图像字幕来提供视觉语义,结果表明使用图像特征更有效。此外,根据表5中的消融研究结果,我们的两阶段框架有助于获得优异的结果。总体而言,结果验证了多模态的有效性以及通过两阶段框架使用1B模型实现CoT推理的潜力。

运行代码


在这里不得不吐槽一句,huggingface被禁了,下载模型还得用镜像,这就导致代码里设计模型加载的部分都得自己弄了,再加上有些库版本不兼容,一些代码还需要进行修改…历时3天终于跑通了。

在这里插入图片描述

因为我batch_size开的比原文大了2倍,训练的时候显存用的就比较多了,自己硬件是否符号复现条件,可供参考。

测试运行代码(epoch小、batch_size大方便加速调试):

# rationale generation 生成理由
python main.py \--data_root data/ScienceQA/data \--caption_file data/instruct_captions.json \--model declare-lab/flan-alpaca-base \--user_msg rationale --img_type resnet \--bs 16 --eval_bs 32 --epoch 1 --lr 5e-5 --output_len 512 \--use_caption --use_generate --prompt_format QCM-E \--output_dir experiments

训练一个epoch大约30min左右,评估+预测得几h+

在这里插入图片描述

得到图像增强理由后,对答案进行增强得到结果:

# answer inference 回答
python main.py \--data_root data/ScienceQA/data \--caption_file data/instruct_captions.json \--model declare-lab/flan-alpaca-base \--user_msg answer --img_type resnet \--bs 16 --eval_bs 32 --epoch 1 --lr 5e-5 --output_len 64 \--use_caption --use_generate --prompt_format QCMG-A \--output_dir experiments \--eval_le experiments/rationale_declare-lab-flan-alpaca-base_resnet_QCM-E_lr5e-05_bs16_op512_ep1/predictions_ans_eval.json \--test_le experiments/rationale_declare-lab-flan-alpaca-base_resnet_QCM-E_lr5e-05_bs16_op512_ep1/predictions_ans_test.json

这段就比较快了
在这里插入图片描述

补充细节


安装包


pip install -r requirements.txt

下载Flan-T5


从百度网盘下载Flan-T5模型参数,解压到
declare-lab\flan-alpaca-base\

数据集准备


文本数据集:
https://github.com/lupantech/ScienceQA/tree/main/data
的内容下载到data/ScienceQA/data/

图像数据集:
https://hf-mirror.com/cooelf/vision_features/tree/main
的内容下载到vision_features/
这是已经提取好的图像特征有resnet、vit等,想用哪个下哪个

rouge

metric = evaluate.load(r"/mmcot/mm-cot-main/mm-cot-main/myrouge/evaluate-main/evaluate-main/metrics/rouge")

main.py中rouge的路径要修改成自己的路径

nltk


下载nltk需要的数据

import nltk
nltk.download('punkt')

如果下载不下来,就把需要的tokenizers复制到对应的文件夹
cp -r tokenizers /root/nltk_data

all-MiniLM-L6-v2


在utils_evaluate.py中

model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2').cuda()

如果网络不行需要自行下载模型
下载地址:
https://hf-mirror.com/sentence-transformers/all-MiniLM-L6-v2/tree/main
里面所有的东西放在一个文件夹即可
代码里面模型的路径要改成自己的

运行

注意这里为了测试运行,epoch只设置了1,并且batch size设置的比较大
跑通了之后可以参考原文作者参数进行实验。

# rationale generation 生成理由
python main.py \--data_root data/ScienceQA/data \--caption_file data/instruct_captions.json \--model declare-lab/flan-alpaca-base \--user_msg rationale --img_type resnet \--bs 16 --eval_bs 32 --epoch 1 --lr 5e-5 --output_len 512 \--use_caption --use_generate --prompt_format QCM-E \--output_dir experiments# answer inference 回答
python main.py \--data_root data/ScienceQA/data \--caption_file data/instruct_captions.json \--model declare-lab/flan-alpaca-base \--user_msg answer --img_type resnet \--bs 16 --eval_bs 32 --epoch 1 --lr 5e-5 --output_len 64 \--use_caption --use_generate --prompt_format QCMG-A \--output_dir experiments \--eval_le experiments/rationale_declare-lab-flan-alpaca-base_resnet_QCM-E_lr5e-05_bs16_op512_ep1/predictions_ans_eval.json \--test_le experiments/rationale_declare-lab-flan-alpaca-base_resnet_QCM-E_lr5e-05_bs16_op512_ep1/predictions_ans_test.json

  • 参考文献:本文所涉及的所有资源的获取方式:https://www.aspiringcode.com/content?id=17097068673785&uid=d71ed07048414e97a398197d8a22e512

相关文章:

语言模型中的多模态链式推理

神经网络的公式推导 简介摘要引言多模态思维链推理的挑战多模态CoT框架多模态CoT模型架构细节编码模块融合模块解码模块 实验结果运行代码补充细节安装包下载Flan-T5数据集准备rougenltkall-MiniLM-L6-v2运行 简介 本文主要对2023一篇论文《Multimodal Chain-of-Thought Reason…...

SCons:下一代构建工具,如何用 Python 驱动高效构建?

在现代软件开发中,构建工具是开发流程中不可或缺的一环。无论是小型项目还是跨平台的复杂工程,选择一个高效、灵活的工具都能显著提高开发效率和代码质量。SCons,一个以 Python 为基础的构建工具,通过自动化依赖管理、灵活的扩展性…...

springboot 整合 rabbitMQ (延迟队列)

前言: 延迟队列是一个内部有序的数据结构,其主要功能体现在其延时特性上。这种队列存储的元素都设定了特定的处理时间,意味着它们需要在规定的时间点或者延迟之后才能被取出并进行相应的处理。简而言之,延时队列被设计用于存放那…...

ES 基本使用与二次封装

概述 基本了解 Elasticsearch 是一个开源的分布式搜索和分析引擎,基于 Apache Lucene 构建。它提供了对海量数据的快速全文搜索、结构化搜索和分析功能,是目前流行的大数据处理工具之一。主要特点即高效搜索、分布式存储、拓展性强 核心功能 全文搜索:…...

分割一切2.0,SAM2详解

🏡作者主页:点击! 🤖编程探索专栏:点击! ⏰️创作时间:2024年11月24日20点03分 神秘男子影, 秘而不宣藏。 泣意深不见, 男子自持重, 子夜独自沉。 论文链接 点击开启你的论文编程之旅…...

Spring AI Fluent API:与AI模型通信的流畅体验

引言 随着人工智能(AI)技术的飞速发展,越来越多的应用场景开始融入AI技术以提升用户体验和系统效率。在Java开发中,与AI模型通信成为了一个重要而常见的需求。为了满足这一需求,Spring AI引入了ChatClient&#xff0c…...

基于python的长津湖评论数据分析与可视化,使用是svm情感分析建模

引言 研究背景及意义 上世纪初开始,中国电影就以自己独有的姿态登上了世界电影史的舞台。中国电影作为国家文化和思想观念的反映与延伸,能够增强文化自信,在文化输出方面有着极其重要的作用1[1]。 改革开放以来,随着生产力的提高…...

Lucene(2):Springboot整合全文检索引擎TermInSetQuery应用实例附源码

前言 本章代码已分享至Gitee: https://gitee.com/lengcz/springbootlucene01 接上文。Lucene(1):Springboot整合全文检索引擎Lucene常规入门附源码 如何在指定范围内查询。从lucene 7 开始,filter 被弃用,导致无法进行调节过滤。 TermInSetQuery 指定…...

shell完结

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

【2024最新】基于Springboot+Vue的智慧食堂系统Lw+PPT

作者:计算机搬砖家 开发技术:SpringBoot、php、Python、小程序、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:Java精选实战项…...

NVR小程序接入平台EasyNVR多品牌NVR管理工具:高效管理分散视频资源的解决方案

在当今数字化、智能化的时代背景下,视频监控已成为各行各业不可或缺的一部分,从公共安全到企业运维,再到智慧城市建设,视频资源的管理与应用正面临着前所未有的挑战。如何高效整合、管理这些遍布各地的分散视频资源,成…...

排序算法(三)--插入排序

文章目录 一、插入排序的基本原理二、插入排序的C语言实现三、代码解析 插入排序 C语言实例 一、插入排序的基本原理 插入排序的基本思想是将数组中的元素逐一取出,然后将其插入到已经排好序的部分中的适当位置,直到整个数组排序完成。具体步骤如下&…...

YOLOv11融合[ECCV 2018]RCAN中的RCAB模块及相关改进思路

YOLOv11v10v8使用教程: YOLOv11入门到入土使用教程 YOLOv11改进汇总贴:YOLOv11及自研模型更新汇总 《Image Super-Resolution Using Very Deep Residual Channel Attention Networks》 一、 模块介绍 论文链接:https://arxiv.org/abs/1807…...

排序(Java数据结构)

1. 排序的概念及引用 1.1 排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。(所有的排序都是默认从小到大排序) 稳定性:假定在待排序的记录序列中&#xff…...

【Java 解释器模式】实现高扩展性的医学专家诊断规则引擎

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...

【超详细】卷积神经网络CNN基本架构以及工作原理详解

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...

Html前后端Ajax交互数据前端JavaScript脚本后台C#ashx服务

本示例使用设备:https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.52de2c1bU8Fdbo&ftt&id615391857885 前端以GET模式向后台请求数据 function MyGetAjax() {var xhr new XMLHttpRequest();xhr.open(GET, http://192.168.1.211/HttpReader.ash…...

问:Spring Boot应用监控组件工具,梳理一下?

在日常运维与开发过程中,Spring Boot 应用的监控是确保系统稳定性和性能的关键环节。本文将探讨 Spring Boot 常用的监控组件及工具的原理、适用场景,并针对不同场景下的运维监控方案进行介绍。 1. Spring Boot Actuator 原理: Spring Boo…...

利用Hooka开源的多种功能shellcode加载器实现快速免杀火绒,静态360+360杀毒,微步查杀1,vt查杀7(教程)

免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于…...

2025-2026财年美国CISA国际战略规划(下)

文章目录 前言四、加强综合网络防御(一)与合作伙伴共同实施网络防御,降低集体风险推动措施有效性衡量 (二)大规模推动标准和安全,以提高网络安全推动措施有效性衡量 (三)提高主要合作…...

iframe通过url方式来获传递的参数

iframe通过url方式来获传递的参数 一、src"http://xxxx/#/policyOverview?codeaaaa"二、 src"/static/iframePhone/html/main.html?codeaaaa" 一、src“http://xxxx/#/policyOverview?codeaaaa” <iframedata-v-47a50536""src"http:/…...

蓝桥杯不知道叫什么题目

小蓝有一个整数&#xff0c;初始值为1&#xff0c;他可以花费一些代价对这个整数进行变换。 小蓝可以花贵1的代价将教数增加1。 小蓝可以花费3的代价将整数增加一个值,这个值是整数的数位中最大的那个(1到9) .小蓝可以花费10的代价将整数变为原来的2倍, 例如&#xff0c;如果整…...

最多可收集的水果数目

三个小朋友收集水果问题&#xff1a;最大水果收集路径 问题描述 有一个游戏&#xff0c;游戏由 n x n 个房间网格状排布组成。给定一个大小为 n x n 的二维整数数组 fruits&#xff0c;其中 fruits[i][j] 表示房间 (i, j) 中的水果数目。 游戏开始时&#xff0c;三个小朋友分…...

戴尔 AI Factory 上的 Agentic RAG 搭载 NVIDIA 和 Elasticsearch 向量数据库

作者&#xff1a;来自 Elastic Hemant Malik, Dell Team 我们很高兴与戴尔合作撰写白皮书《戴尔 AI Factory with NVIDIA 上的 Agentic RAG》。白皮书是一份供开发人员参考的设计文档&#xff0c;概述了实施 Agentic 检索增强生成 (retrieval augmented generation - RAG) 应用…...

HarmonyOS4+NEXT星河版入门与项目实战(16)------ 状态管理 @State(页面数据刷新与渲染)

文章目录 1、@State装饰器2、视图渲染演示1、无嵌套的对象属性值变化时可以触发页面渲染2、嵌套对象的嵌套属性值变化时不能够触发页面刷新渲染3、数组中对象的属性值变化时不能触发页面刷新渲染3、总结1、@State装饰器 2、视图渲染演示 常规的 string、number 这里就不演示了…...

Origin教程003:数据导入(2)-从文件导入和导入矩阵数据

文章目录 3.3 从文件导入3.3.1 导入txt文件3.3.2 导入excel文件3.3.3 合并工作表3.4 导入矩阵数据3.3 从文件导入 所需数据 https://download.csdn.net/download/WwLK123/900267473.3.1 导入txt文件 选择【数据->从文件导入->导入向导】: 选择文件之后,点击完成即可…...

设计自己的网络通信协议

文章目录 一、为什么需要设计网络通信协议1. **标准化通信规则**2. **确保数据传输的可靠性**3. **支持网络的多样性和可扩展性**4. **分层设计&#xff0c;简化复杂性**5. **实现设备的互操作性**6. **支持多任务和多应用并发**7. **提供安全性**8. **支持不同的通信模式**总结…...

深入理解 Seata:分布式事务的最佳解决方案

随着微服务架构的广泛应用&#xff0c;分布式事务管理成为系统设计中一项重要且极具挑战的任务。在微服务架构下&#xff0c;服务之间通过网络调用&#xff0c;单个业务操作往往需要多个服务的协作来完成&#xff0c;这样分布式事务的问题就不可避免。Seata 是目前较为流行的一…...

JDK下载

jdk-8u421-windows-x64.exe : 阿里云盘 jdk-7u80-windows-x64.exe &#xff1a;阿里云盘...

如何使用 Python 开发一个简单的文本数据转换为 Excel 工具

目录 一、准备工作 二、理解文本数据格式 三、开发文本数据转换为Excel工具 读取CSV文件 将DataFrame写入Excel文件 处理其他格式的文本数据 读取纯文本文件: 读取TSV文件: 四、完整代码与工具封装 五、使用工具 六、总结 在数据分析和处理的日常工作中,我们经常…...