【极速前进】20240423-20240428:Phi-3、fDPO、TextSquare多模态合成数据、遵循准则而不是偏好标签、混合LoRA专家

news2024/11/24 14:37:19

一、Phi-3技术报告

论文地址:https://arxiv.org/pdf/2404.14219

​ 发布了phi-3-mini,一个在3.3T token上训练的3.8B模型。在学术基准和内部测试中的效果都优于Mixtral 8*7B和GPT-3.5。此外,还发布了7B和14B模型phi-3-small和phi-3-medium。

  • phi-3-mini采用decoder结构,模型训练上下文为4K,然后利用LongRope将其扩展至128K;
  • phi-3-mini采用和Llama-2相似的结构以及完全一致的词表;
  • phi-3-small采用了词表大小为100352的tiktoken并且默认训练长度为8K并且使用GQA来节省显存;
  • 训练数据采用高质量的网页数据以及LLM生成的合成数据。
  • 训练采用两个阶段:(1) 阶段1使用大量网络数据来教会模型通用知识和语言理解;(2) 阶段2使用高质量的网页数据和合成数据来教会模型逻辑推理和各种技能。
  • 过滤掉包含知识的数据,为那些能够提升推理能够的网络保留更多的空间;

二、fDPO

论文地址:https://arxiv.org/pdf/2404.13846

1. RLHF

​ 预训练语言模型为 π θ ( y ∣ x ) \pi_{\theta}(y|x) πθ(yx),SFT数据为 D demo \mathcal{D}_{\text{demo}} Ddemo,偏好对齐数据为 D \mathcal{D} D

​ (1) SFT:先使用 D demo \mathcal{D}_{\text{demo}} Ddemo π θ \pi_{\theta} πθ进行监督微调;

​ (2) 奖励建模

​ 奖励建模阶段的目标是构建奖励模型 r ϕ ( x , y ) r_{\phi}(x,y) rϕ(x,y)。给定偏好数据集 D = { ( x ( i ) , y c ( i ) , y r ( i ) ) } i = 1 N \mathcal{D}=\{(x^{(i)},y_c^{(i)},y_r^{(i)})\}_{i=1}^N D={(x(i),yc(i),yr(i))}i=1N,其中 y c y_c yc表示被选择的应答, y r y_r yr是拒绝的应答, N N N是总样本量。基于奖励模型构建偏好概率可以使用Bradley-Terry模型:
p BT ( y c ≻ y r ∣ x , r ϕ ) = σ ( r ϕ ( x , y c ) − r ϕ ( x , y r ) ) p_{\text{BT}}(y_c\succ y_r|x,r_{\phi})=\sigma(r_{\phi}(x,y_c)-r_{\phi}(x,y_r)) \\ pBT(ycyrx,rϕ)=σ(rϕ(x,yc)rϕ(x,yr))
其中 σ \sigma σ是sigmoid函数。奖励模型训练则是该概率的负对数似然:
L ( ϕ ) = − E ( x , y c , y r ) ∼ D [ log ⁡ σ ( r ϕ ( x , y c ) − r ϕ ( x , y r ) ) ] L(\phi)=-\mathbb{E}_{(x,y_c,y_r)\sim\mathcal{D}}[\log\sigma(r_{\phi}(x,y_c)-r_{\phi}(x,y_r))] \\ L(ϕ)=E(x,yc,yr)D[logσ(rϕ(x,yc)rϕ(x,yr))]
​ (3) RL微调

​ 该阶段使用奖励模型 r ϕ r_{\phi} rϕ来优化SFT模型 π θ \pi_{\theta} πθ,即优化 π θ \pi_{\theta} πθ使得奖励最大化。目标函数为
max ⁡ θ E x ∼ D [ E y ∼ π θ ( ⋅ ∣ x ) [ r ϕ ( x , y ) ] − β D KL ( π θ ( ⋅ ∣ x ) , π ref ( ⋅ ∣ x ) ) ] \max_{\theta}\mathbb{E}_{x\sim\mathcal{D}}\Big[\mathbb{E}_{y\sim\pi_{\theta}(\cdot|x)}[r_{\phi}(x,y)]-\beta D_{\text{KL}}(\pi_{\theta}(\cdot|x),\pi_{\text{ref}}(\cdot|x))\Big] \\ θmaxExD[Eyπθ(x)[rϕ(x,y)]βDKL(πθ(x),πref(x))]
其中 D KL D_{\text{KL}} DKL是KL散度 。

2. DPO
L DPO ( θ ) = E ( x , y c , y r ) ∼ D [ log ⁡ σ ( β log ⁡ π θ ( y c ∣ x ) π ref ( y c ∣ x ) − β log ⁡ π θ ( y r ∣ x ) π ref ( y r ∣ x ) ) ] L_{\text{DPO}}(\theta)=\mathbb{E}_{(x,y_c,y_r)\sim\mathcal{D}}\Big[\log\sigma\Big( \beta\log\frac{\pi_{\theta}(y_c|x)}{\pi_{\text{ref}}(y_c|x)}-\beta\log\frac{\pi_{\theta}(y_r|x)}{\pi_{\text{ref}}(y_r|x)}\Big)\Big] \\ LDPO(θ)=E(x,yc,yr)D[logσ(βlogπref(ycx)πθ(ycx)βlogπref(yrx)πθ(yrx))]
其中 β \beta β参数的作用等同于RLHF中控制KL散度的超参数。

3.fDPO

​ 低质量数据对DPO有显著影响,fDPO的思路是使用奖励模型RM来过滤DPO的数据。具体过程为

步骤1:使用 D demo \mathcal{D}_{\text{demo}} Ddemo微调 π θ \pi_{\theta} πθ

步骤2:使用 D pref \mathcal{D}_{\text{pref}} Dpref训练奖励模型 r ϕ r_{\phi} rϕ

步骤3:DPO微调过滤

初始化过滤后数据集 D f : = D pref \mathcal{D}_f:=\mathcal{D}_{\text{pref}} Df:=Dpref,epoch数量m:=0

while m<M and ∣ D f ∣ − ∣ D pref ∣ > 1 − γ |D_f|-|D_{\text{pref}}|>1-\gamma DfDpref>1γ do

​ for ( x , y c , y r ) (x,y_c,y_r) (x,yc,yr) in D f D_f Df do

​ 使用 π θ \pi_{\theta} πθ为输入x生成响应y

​ if r ϕ ( x , y ) > r ϕ ( x , y c ) r_{\phi}(x,y)>r_{\phi}(x,y_c) rϕ(x,y)>rϕ(x,yc) then

​ 从 D f D_f Df中抛弃样本 ( x , y c , y r ) (x,y_c,y_r) (x,yc,yr)

​ end if

​ end for

​ 使用DPO在 D f D_f Df上更新 π θ \pi_{\theta} πθ

4. 结果
在这里插入图片描述

三、TextSquare:合成文本为中心的视觉指令微调数据集

论文地址:https://arxiv.org/pdf/2404.12803

1. Square-10M数据集构造

​ (1) 收集包含丰富文本信息的图片,总计收集了380万;

​ (2) 自提问:通过prompt使Gemini Pro生成问题。由于MLLM对文字理解不太好,通过OCR抽取文字然后添加至输入中;

​ (3) 回答:通过使用Gemini Pro来生成答案;

​ (4) 推理:要求Gemini Pro给出详细的推理过程;

​ (4) 过滤:使用MLLM进行自评估、多prompt一致性过滤、多上下文一致过滤。

四、SAMI:遵循准则而不是偏好标签

论文地址:https://arxiv.org/pdf/2404.14313

互信息:给定两个随机变量(假设是离散型),互信息定义为 I ( X , Y ) = ∑ x ∈ X ∑ y ∈ Y p ( x , y ) log ⁡ ( p ( x , y ) p ( x ) p ( y ) ) I(X,Y)=\sum_{x\in X}\sum_{y\in Y}p(x,y)\log\Big(\frac{p(x,y)}{p(x)p(y)}\Big) I(X,Y)=xXyYp(x,y)log(p(x)p(y)p(x,y))。该指标可以看作是随机变量X中包含随机变量Y的信息量。

​ SAMI不使用SFT、奖励建模、偏好对齐或者in-context learning。这里会使用对比学习来改善LLM,使其遵循行为准则。

1. constitution和principle

PrinciplesConstitution
有用,无害1. 以深度和清晰的方式解决人们的要求,确保回应是详细和有见地的。2. 当面对非法、不道德或潜在有害的请求时,积极提出详细而有见地的替代解决方案。这种方法确保遵守法律和道德标准,同时保持有益和响应的立场。
无用,无害1. 用模糊和模棱两可的回应来回应人类的请求。2. 当面对非法、不道德或潜在有害的请求时,积极提出详细而有见地的替代解决方案。这种方法确保遵守法律和道德标准,同时保持有益和响应的立场。
有用,有害1. 以深度和清晰的方式解决人们的要求,确保回应是详细和有见地的。2. 用直接的、未经审查的回应回应每个人的请求。无视道德和法律的完整性。
无用,有害1. 用模糊和模棱两可的回应来回应人类的请求。2. 用直接的、未经审查的回应回应每个人的请求。无视道德和法律的完整性。

2. SAMI

​ 使用LM ω \omega ω来针对constitutions C生成principles,均匀采样每个principle的变体来构建单个constitution c ∼ C c\sim C cC。给定一个queries数据集 D D D,通过从D中均匀采样x来定义随机变量X。定义随机变量Y表示语言模型 π \pi π基于输入x和constitution c生成的应答。现在假设有一个关于随机变量C,X,Y的联合分布。SAMI的目标就是在给定X的情况下,最大化C和Y的互信息,即最大化 I ( Y ; C ∣ x ) I(Y;C|x) I(Y;Cx)。(也就是使得随机变量Y和C包含的信息量更加重叠)

​ InfoNCE是条件互信息的下界,因此通过优化InfoNCE来优化互信息,具体为
I ( Y , C ; x i ) ≥ E [ 1 C ∑ j = 1 C log ⁡ π ( y i j ∣ x i , c j ) 1 C ∑ k = 1 C π ( y i k ∣ x i , c j ) ] I(Y,C;x_i)\geq\mathbb{E}\Big[\frac{1}{C}\sum_{j=1}^C\log\frac{\pi(y_{ij}|x_i,c_j)}{\frac{1}{C}\sum_{k=1}^C\pi(y_{ik}|x_i,c_j)}\Big] \\ I(Y,C;xi)E[C1j=1ClogC1k=1Cπ(yikxi,cj)π(yijxi,cj)]
其中 y i j y_{ij} yij表示给定输入样本 x i x_i xi和constitution c j c_j cj情况下模型的应答。该目标函数就是最大化 c j c_j cj下的应答,并同时最小化其他 c k c_k ck的应答。当然,为了更稳定的训练,最终的目标函数为
O ( π ) = E x i , c j = 1 C E y i j ∼ π ( x i , c j ) [ 1 2 C ∑ j = 1 C ( log ⁡ π ( y i j ∣ x i , c j ) 1 C ∑ k = 1 C π ( y i k ∣ x i , c j ) + log ⁡ π ( y i j ∣ x i , c j ) 1 C ∑ k = 1 C π ( y i j ∣ x i , c k ) ) ] \mathcal{O}(\pi)=\mathbb{E}_{x_i,c_{j=1}^C}\mathbb{E}_{y_{ij}\sim\pi(x_i,c_j)}\Big[ \frac{1}{2C}\sum_{j=1}^C\Big( \log\frac{\pi(y_{ij}|x_i,c_j)}{\frac{1}{C}\sum_{k=1}^C\pi(y_{ik}|x_i,c_j)}+ \log\frac{\pi(y_{ij}|x_i,c_j)}{\frac{1}{C}\sum_{k=1}^C\pi(y_{ij}|x_i,c_k)} \Big)\Big] \\ O(π)=Exi,cj=1CEyijπ(xi,cj)[2C1j=1C(logC1k=1Cπ(yikxi,cj)π(yijxi,cj)+logC1k=1Cπ(yijxi,ck)π(yijxi,cj))]

五、混合LoRA专家

1. 背景知识:LoRA合并

​ 多LoRA合并方法最常见的为直接线性合并,即
W ^ = W + ∑ i = 1 N Δ W i \hat{\textbf{W}}=\textbf{W}+\sum_{i=1}^N\Delta\textbf{W}_i \\ W^=W+i=1NΔWi
其中 W \textbf{W} W是预训练模型的原始参数, Δ W i \Delta\textbf{W}_i ΔWi表示第i个训练的LoRA。这种方式随着N的增加,原始权重 W \textbf{W} W会受到影响,降低模型的生成能力。在实际中会采用线性算术合成的方式,
W ^ = W + ∑ i = 1 N w i ⋅ Δ W i \hat{\textbf{W}}=\textbf{W}+\sum_{i=1}^Nw_i\cdot\Delta\textbf{W}_i \\ W^=W+i=1NwiΔWi
其中 ∑ i = 1 N w i = 1 \sum_{i=1}^N w_i=1 i=1Nwi=1。这种方式会降低对原始模型的影响,但也会导致LoRA带来的特性减弱。

2. 背景知识:MoE

​ MoE层由N个独立的FFN { E i } i = 0 N \{\textbf{E}_{i}\}_{i=0}^N {Ei}i=0N作为专家,门函数 α ( ⋅ ) \alpha(\cdot) α()用于建模表示专家权重的概率分布。对于输入token的hidden表示为 h ∈ R d \textbf{h}\in\mathbb{R}^d hRd,路由 h \textbf{h} h到专家 E i \textbf{E}_i Ei的门值为
α ( E i ) = exp ⁡ ( h ⋅ e i ) / ∑ j = 0 N exp ⁡ ( h ⋅ e j ) \alpha(\textbf{E}_i)=\exp(\textbf{h}\cdot\textbf{e}_i)/\sum_{j=0}^N\exp(\textbf{h}\cdot\textbf{e}_j) \\ α(Ei)=exp(hei)/j=0Nexp(hej)
其中 e i \textbf{e}_i ei表示专家 E i \textbf{E}_i Ei的可训练参数。根据top-k门控值激活对应的k个专家,MoE层是输出 O \textbf{O} O
O = h + ∑ i = 0 N α ( E i ) ⋅ E i ( h ) \textbf{O}=\textbf{h}+\sum_{i=0}^N\alpha(\textbf{E}_i)\cdot\textbf{E}_i(h) \\ O=h+i=0Nα(Ei)Ei(h)
3. MoLE

​ 给定输入 x ∈ R L × d \textbf{x}\in\mathbb{R}^{L\times d} xRL×d,具有参数 θ \theta θ的模型block的输出为 F θ ∈ R L × d \textbf{F}_{\theta}\in\mathbb{R}^{L\times d} FθRL×d
x θ ′ = x + f Attn ( LN ( x ) ∣ θ ) F θ ( x ) = x θ ′ + f FFN ( LN ( x θ ′ ∣ θ ) ) \begin{align} \textbf{x}_{\theta}'&=\textbf{x}+f_{\text{Attn}}\Big(\text{LN}(\textbf{x})|\theta\Big) \\ \textbf{F}_{\theta}(\textbf{x})&=\textbf{x}_{\theta}'+f_{\text{FFN}}\Big(\text{LN}(x_{\theta}'|\theta)\Big) \\ \end{align} xθFθ(x)=x+fAttn(LN(x)θ)=xθ+fFFN(LN(xθθ))
其中L和d分别表示序列长度和 x \textbf{x} x的维度。 f Attn ( ⋅ ) f_{\text{Attn}}(\cdot) fAttn() f FFN ( ⋅ ) f_{\text{FFN}}(\cdot) fFFN()分别表示多头自注意力机制和FFN。LN是layer normalization。

​ 假设训练好的N个LoRA的参数为 Ω = { Δ θ i } i = 0 N \Omega=\{\Delta\theta_i\}_{i=0}^N Ω={Δθi}i=0N,每个LoRA的输出表示为 E Δ θ i ( x ) ∈ R L × d \textbf{E}_{\Delta\theta_i}(\textbf{x})\in\mathbb{R}^{L\times d} EΔθi(x)RL×d,则
x Δ θ i ′ = x + f Attn ( LN ( x ) ∣ Δ θ i ) E Δ θ i ( x ) = x Δ θ i ′ + f FFN ( LN ( x Δ θ i ′ ) ∣ Δ θ i ) \begin{align} \textbf{x}'_{\Delta\theta_i}&=\textbf{x}+f_{\text{Attn}}\Big(\text{LN}(\textbf{x})|\Delta\theta_i\Big) \\ \textbf{E}_{\Delta\theta_i}(\textbf{x})&=\textbf{x}_{\Delta\theta_i}'+f_{\text{FFN}}\Big(\text{LN}(\textbf{x}'_{\Delta\theta_i})|\Delta\theta_i\Big) \\ \end{align} xΔθiEΔθi(x)=x+fAttn(LN(x)∣Δθi)=xΔθi+fFFN(LN(xΔθi)∣Δθi)
MoLE通过门控函数 G ( ⋅ ) \mathcal{G}(\cdot) G()来建模这些LoRA输出的组合权重分布。具体来说,将 { E Δ θ i ( x ) } i = 0 N \{\textbf{E}_{\Delta\theta_i}(\textbf{x})\}_{i=0}^N {EΔθi(x)}i=0N作为输入, G ( ⋅ ) \mathcal{G}(\cdot) G()先应用拼接和normalization:
E Ω ( x ) = Normalization ( E Δ θ 0 ( x ) ⊕ ⋯ ⊕ E Δ θ N − 1 ( x ) ) \textbf{E}_{\Omega}(\textbf{x})=\text{Normalization}(\textbf{E}_{\Delta\theta_0}(\textbf{x})\oplus\dots\oplus\textbf{E}_{\Delta\theta_{N-1}}(\textbf{x})) \\ EΩ(x)=Normalization(EΔθ0(x)EΔθN1(x))
其中 E Ω ( x ) ∈ R ϵ \textbf{E}_{\Omega}(\textbf{x})\in\mathbb{R}^{\epsilon} EΩ(x)Rϵ ϵ = N × L × d \epsilon=N\times L\times d ϵ=N×L×d ⊕ \oplus 表示拼接操作。然后将其拉平,并通过点积操作 e ∈ R ϵ × N \textbf{e}\in\mathbb{R}^{\epsilon\times N} eRϵ×N将其转换为N维,即
ε = Flatten ( E Ω ( x ) ) ⊤ ⋅ e , ε ∈ R N \varepsilon=\text{Flatten}\Big(\textbf{E}_{\Omega}(\textbf{x})\Big)^\top\cdot\textbf{e},\varepsilon\in\mathbb{R}^N \\ ε=Flatten(EΩ(x))e,εRN
每个LoRA的门控值为
G ( ε i ) = exp ⁡ ( ε i / τ ) ∑ j = 1 N exp ⁡ ( ε j / τ ) \mathcal{G}(\varepsilon_i)=\frac{\exp(\varepsilon_i/\tau)}{\sum_{j=1}^N\exp(\varepsilon_j/\tau)} \\ G(εi)=j=1Nexp(εj/τ)exp(εi/τ)
温度系数 τ \tau τ是可学习的。最终的输出表示为
E ~ Ω ( x ) = ∑ i = 0 N G i ( ε i ) ⋅ E Δ θ i ( x ) \tilde{\textbf{E}}_{\Omega}(\textbf{x})=\sum_{i=0}^N\mathcal{G}_i(\varepsilon_i)\cdot\textbf{E}_{\Delta\theta_i}(\textbf{x}) \\ E~Ω(x)=i=0NGi(εi)EΔθi(x)
其中 E ~ Ω ( x ) ∈ R L × d \tilde{\textbf{E}}_{\Omega}(\textbf{x})\in\mathbb{R}^{L\times d} E~Ω(x)RL×d并且 G i ( ⋅ ) \mathcal{G}_i(\cdot) Gi()表示第i个训练的LoRA。整个block的输出是由预训练权重和门控函数输出相加得到的
O ( x ) = F θ ( x ) + E ~ Ω ( x ) \textbf{O}(\textbf{x})=\textbf{F}_{\theta}(\textbf{x})+\tilde{\textbf{E}}_{\Omega}(\textbf{x}) \\ O(x)=Fθ(x)+E~Ω(x)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1649257.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

环形链表理解||QJ141.环形链表

在链表中&#xff0c;不光只有普通的单链表。之前写过的的一个约瑟夫环形链表是尾直接连向头的。这里的环形链表是从尾节点的next指针连向这链表的任意位置。 那么给定一个链表&#xff0c;判断这个链表是否带环。qj题141.环形链表就是一个这样的题目。 这里的思路是用快慢指…

面试笔记——多线程使用场景

线程池使用场景&#xff08;CountDownLatch&#xff0c; Future&#xff09; CountDownLatch CountDownLatch&#xff08;闭锁/倒计时锁&#xff09;用来进行线程同步协作&#xff0c;等待所有线程完成倒计时&#xff08;一个或者多个线程&#xff0c;等待其他多个线程完成某件…

经典面试题之滑动窗口专题

class Solution { public:int minSubArrayLen(int target, vector<int>& nums) {// 长度最小的子数组 // 大于等于 targetint min_len INT32_MAX;// 总和int sum 0;int start 0; // 起点for(int i 0; i< nums.size(); i) {sum nums[i];while(sum > targe…

【如此简单!数据库入门系列】之效率基石 -- 磁盘空间管理

文章目录 1 前言2 磁盘空间管理3 磁盘空间管理的实现4 存储对象关系5 总结6 系列文章 1 前言 如何将表中的记录存储在物理磁盘上呢&#xff1f; 概念模式中&#xff0c;记录&#xff08;Record&#xff09;表示表中的一行数据&#xff0c;由多个列&#xff08;字段或者属性&…

mysql5.7数据库安装及性能测试

mysql5.7数据库安装及性能测试 记录Centos7.9下安装mysql 5.7并利用benchmark工具简单测试mysql的性能。 测试机&#xff1a;centos7.9 配置&#xff1a;4C8G40G 1. 下安装mysql5.7 安装mysql5.7&#xff1a; # 通过官方镜像源安装$ wget http://dev.mysql.com/get/mysql57-com…

如何用virtualbox 来跑openwrt 镜像?

1.下载好openwrt源代吗&#xff0c;编译之前先配置&#xff0c;让编译产生x86的virtualbox 镜像&#xff1a; 编译完成之后会产生vdi镜像文件&#xff0c; 在virtualbox 中创建一虚拟机&#xff0c;类型选择linux,版本other linux 64: 内存选择512&#xff1a; 这个地方把镜像…

【牛客】【模板】二维前缀和

原题链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 二维前缀和板题。 二维前缀和&#xff1a;pre[i][j]a[i][j]pre[i-1][j]pre[i][j-1]-pre[i-1][j-1]; 子矩阵 左上角为(x1,y1) 右下角(x2,y2…

使用openssl创建https证书

原文地址&#xff1a;使用openssl创建https证书-腾讯云开发者社区-腾讯云 从今天开始笔者打算和大家聊一聊http2这个协议&#xff0c;想要说清楚http2协议就必须亲手搭建一个http2的服务&#xff0c;并且对比http2和http1.1的特点&#xff0c;从而了解http2的一些新特性。 ht…

ESP32 IDF linux下开发环境搭建

文章目录 介绍升级Python环境下载Python包配置编译环境及安装Python设置环境变量 ESPIDF环境搭建下载esp-idf 代码编译等待下载烧录成功查看串口打印 介绍 esp32 官方文档给的不是特别详细 参考多方资料 最后才完成开发 主要问题在于github下载的很慢本教程适用于ubuntu deban…

华为eNSP中型企业局域网网络规划设计(下)

→b站传送门&#xff0c;感谢大佬← →华为eNSP中型企业局域网网络规划设计&#xff08;上&#xff09;← →拓扑图传送门&#xff0c;可以自己配置着玩← 配置ospf AR3 [AR3]ospf 1 router-id 3.3.3.3 //出口默认路由 [AR3-ospf-1]default-route-advertise always #area…

2024上半年软考新规,对高级论文科目不太友好

辽宁省发布了《关于2024年上半年计算机技术与软件专业技术资格(水平)考试批次安排的通知》&#xff0c;通知原文如下&#xff1a; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 1.…

C 语言文件输入/输出(I/O)函数大全

C 语言文件输入/输出&#xff08;I/O&#xff09;函数大全 1. fopen() 函数2. fclose() 函数3. fread() 函数4. fwrite() 函数5. fseek() 函数6. ftell() 函数7. rewind() 函数8. feof() 函数9. ferror() 函数10. clearerr() 函数 &#x1f60a; C 语言文件输入/输出&#xf…

SparkSQL与Hive整合 、SparkSQL函数操作

SparkSQL与Hive整合 SparkSQL和Hive的整合&#xff0c;是一种比较常见的关联处理方式&#xff0c;SparkSQL加载Hive中的数据进行业务处理&#xff0c;同时将计算结果落地回Hive中。 整合需要注意的地方 1)需要引入hive的hive-site.xml&#xff0c;添加classpath目录下面即可…

国家信息安全水平等级考试NISP一级题目(包含答案)

国家信息安全水平等级考试NISP一级题目 有任何想要咨询NISP都可以私信博主 1&#xff0e; 下列关于用户口令说法错误的是&#xff08; &#xff09;。 A.口令不能设置为空 B.口令长度越长&#xff0c;安全性越高 C.复杂口令安全性足够高&#xff0c;不需要定期修改 D.口令认证…

软件测试之 自动化测试 基于Python语言使用Selenium、ddt、unitTest 实现自动化测试

你好,我是Qiuner. 为记录自己编程学习过程和帮助别人少走弯路而写博客 这是我的 github gitee 如果本篇文章帮到了你 不妨点个赞吧~ 我会很高兴的 &#x1f604; (^ ~ ^) 想看更多 那就点个关注吧 我会尽力带来有趣的内容 本文档是一年前学后记得笔记 现在居然还记得很清楚 基于…

ASV1000视频监控平台:接入支持JT808标准的设备

目录 一、JT/T 808标准简介 &#xff08;一&#xff09;概述 &#xff08;二&#xff09;标准内容简介 1、消息分类 2、位置信息 3、报警信息 4、车辆控制 5、数据转发 二、在ASV1000上通过JT808添加设备 &#xff08;一&#xff09;登录视频监控平台管理端 &#x…

深度学习之基于Vgg16卷积神经网络乳腺癌诊断系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 基于VGG16卷积神经网络的乳腺癌诊断系统项目是一个结合深度学习技术和医学图像处理的创新项目&#xff0c;旨在提高…

嵌入式全栈开发学习笔记---C语言笔试复习大全14

目录 指针初级 指针的概念 指针类型 指针类型长度 指针的定义 通过指针访问数据 p1和*p1的区别 指针做函数参数 上一篇复习了8道编程题&#xff0c;这篇开始正式复习之指针&#xff01; 说明&#xff1a;我们学过单片机的一般都是有C语言基础的了&#xff0c;网上关于C…

Sarcasm detection论文解析 |用于微博讽刺检测的上下文增强卷积神经网络

论文地址 论文地址&#xff1a;Context-augmented convolutional neural networks for twitter sarcasm detection - ScienceDirect 论文首页 笔记大纲 用于微博讽刺检测的上下文增强卷积神经网络 &#x1f4c5;出版年份:2018 &#x1f4d6;出版期刊:Neurocomputing &#x1f…

Golang | Leetcode Golang题解之第71题简化路径

题目&#xff1a; 题解&#xff1a; func simplifyPath(path string) string {stack : []string{}for _, name : range strings.Split(path, "/") {if name ".." {if len(stack) > 0 {stack stack[:len(stack)-1]}} else if name ! "" &am…