transformer模型(Transformer解读(附pytorch代码))

2024-03-29 09:00:05 :21

transformer模型(Transformer解读(附pytorch代码))

本文目录

Transformer解读(附pytorch代码)

Transformer早在2017年就出现了,直到BERT问世,Transformer开始在NLP大放光彩,目前比较好的推进就是Transformer-XL(后期附上)。这里主要针对论文和程序进行解读,如有不详实之处,欢迎指出交流,如需了解更多细节之处,推荐知乎上 川陀学者 写的。本文程序的git地址在 这里 。程序如果有不详实之处,欢迎指出交流~

2017年6月,Google发布了一篇论文《Attention is All You Need》,在这篇论文中,提出了 Transformer 的模型,其旨在全部利用Attention方式来替代掉RNN的循环机制,从而通过实现并行化计算提速。在Transformer出现之前,RNN系列网络以及seq2seq+attention架构基本上铸就了所有NLP任务的铁桶江山。由于Attention模型本身就可以看到全局的信息, Transformer实现了完全不依赖于RNN结构仅利用Attention机制,在其并行性和对全局信息的有效处理上获得了比之前更好的效果。

纵观图1整个Transformer的结构,其核心模块其实就是三个:Multi-Head attention、Feed Forward 以及 Add&Norm。这里关于Multi-Head attention部分只讲程序的实现,关于更多细节原理,请移至开头推荐的知乎链接。

Transformer中的attention采用的是多头的self-attention结构,并且在编码器中,由于不同的输入mask的部分不一样,因此在softmax之前采用了mask操作,并且解码时由于不能看到t时刻之后的数据,同样在解码器的第一个Multi-Head attention中采用了mask操作,但是二者是不同的。因为编码器被mask的部分是需要在输入到Transformer之前事先确定好,而解码器第一个Multi-Head attention被mask的部分其实就是从t=1时刻开始一直到t=seq_len结束,对应于图2。在图2中,横坐标表示解码器一个batch上的输入序列长度(也就是t),紫色部分为被mask的部分,黄色部分为未被mask的部分,可以看出,随着t的增加,被mask的部分逐一减少。而解码器第二个Multi-Head attention的mask操作和编码器中是一样的。

mask+softmax程序如下:

mask操作其实就是对于无效的输入,用一个负无穷的值代替这个输入,这样在softmax的时候其值就是0。而在attention中(attention操作见下式),softmax的操作出来的结果其实就是attention weights,当attention weights为0时,表示不需要attention该位置的信息。 对于Multi-Head attention的实现,其实并没有像论文原文写的那样,逐一实现多个attention,再将最后的结果concat,并且通过一个输出权重输出。下面通过程序和公式讲解一下实际的实现过程,这里假设 , , 的来源是一样的,都是 ,其维度为。(需要注意的是在解码器中第二个Multi-Head的输入中 与 的来源不一样)

首先,对于输入 ,通过三个权重变量得到 , , ,此时三者维度相同,都是,其中d=d_model//h,因此直接将变换后的 , , 直接做DotProductAttention就可以实现Multi-Head attention,最后只需要将DotProductAttention输出的维度依次变换回去,然后乘以输出权重就可以了。关于程序中的参数valid_length已在程序中做了详细的解读,这里不再赘述,注意的是输入的valid_length是针对batch这个维度的,而实际操作中由于X的batch维度发生了改变(由batch变成了batch×h),因此需要对valid_length进行复制。

FFN的实现是很容易的,其实就是对输入进行第一个线性变换,其输出加上ReLU激活函数,然后在进行第二个线性变换就可以了。

Add&norm的实现就是利用残差网络进行连接,最后将连接的结果接上LN,值得注意的是,程序在Y的输出中加入了dropout正则化。同样的正则化技术还出现在masked softmax之后和positional encoding之后。

positional encoding的实现很简单,其实就是对输入序列给定一个唯一的位置,采用sin和cos的方式给了一个位置编码,其中sin处理的是偶数位置,cos处理的是奇数位置。但是,这一块的工作确实非常重要的,因为对于序列而言最主要的就是位置信息,显然BERT是没有去采用positional encoding(尽管在BERT的论文里有一个Position Embeddings的输入,但是显然描述的不是Transformer中要描述的位置信息),后续BERT在这一方面的改进工作体现在了XLNet中(其采用了Transformer-XL的结构),后续的中再介绍该部分的内容。

无论是编码器还是解码器,其实都是用上面说的三个基本模块堆叠而成,具体的实现细节大家可以看开头的git地址,这里需要强调的是以下几点:

中出现的程序都在开头的git中了,直接执行main.ipynb就可以运行程序,如有不详实之处,还请指出~~~

预训练模型综述--Albert,xlnet,bert,word2vec

Albert,xlnet,bert,word2vec

通过预训练模型实现迁移学习,迁移学习本质上是在一个数据集上训练模型,然后对该模型进行调整,以在不同的数据集上执行不同的自然语言处理功能。

1. word2vec

线性模型

很神奇的地方,从而也说明高维空间映射的词向量可以很好体现真实世界中token之间的关系。如:king-man = queen-woman

负采样

由于训练词向量模型的目标不是为了得到一个多么精准的语言模型,而是为了获得它的副产物——词向量。所以要做到的不是在几万几十万个token中艰难计算softmax获得最优的那个词(就是预测的对于给定词的下一词),而只需能做到在几个词中找到对的那个词就行,这几个词包括一个正例(即直接给定的下一词),和随机产生的噪声词(采样抽取的几个负例),就是说训练一个sigmoid二分类器,只要模型能够从中找出正确的词就认为完成任务。

这种负采样思想也应用到之后的BERT里,只不过从word-level变成sentence-level,这样能获取句子间关联关系。

缺点是上下文无关(static):

因而为了让句子有一个整体含义(context),大家会在下游具体的NLP任务中基与词向量的序列做encoding操作。

下面是一个比较表格,模型不细讲了,预测目标这里的next word下一个词,是所有传统语言模型都做的事——寻找下一个词填什么。

BERT模型进一步增加词向量模型泛化能力,充分描述字符级、词级、句子级甚至句间关系特征。

真正的双向encoding:

Masked LM,类似完形填空,尽管仍旧看到所有位置信息,但需要预测的词已被特殊符号代替,可以放心双向encoding。

Transformer做encoder实现上下文相关(context):

使用transformer而不是bi-LSTM做encoder,可以有更深的层数、具有更好并行性。并且线性的Transformer比lstm更易免受mask标记影响,只需要通过self-attention减小mask标记权重即可,而lstm类似黑盒模型,很难确定其内部对于mask标记的处理方式。

提升至句子级别:

学习句子/句对关系表示,句子级负采样。首先给定的一个句子,下一句子正例(正确词),随机采样一句负例(随机采样词),句子级上来做二分类(即判断句子是当前句子的下一句还是噪声),类似word2vec的单词级负采样。

二、BERT细则

这里主要介绍BERT的三个亮点Masked LM、transformer、sentence-level。

1. Masked Language Model

原本叫cloze test,是完形填空的意思。

随机mask语料中15%的token,然后将masked token 位置输出的最终隐层向量送入softmax,来预测masked token。

这样输入一个句子,每次只预测句子中大概15%的词,所以BERT训练很慢。。。(但是google设备NB。。)

而对于盖住词的特殊标记,在下游NLP任务中不存在。因此,为了和后续任务保持一致,作者按一定的比例在需要预测的词位置上输入原词或者输入某个随机的词。如:my dog is hairy

2. Transformer —— attention is all you need

Transformer模型是2018年5月提出的,可以替代传统RNN和CNN的一种新的架构,用来实现机器翻译,论文名称是attention is all you need。无论是RNN还是CNN,在处理NLP任务时都有缺陷。CNN是其先天的卷积操作不很适合序列化的文本,RNN是其没有并行化,很容易超出内存限制(比如50tokens长度的句子就会占据很大的内存)。

下面左图是transformer模型一个结构,分成左边Nx框框的encoder和右边Nx框框的decoder,相较于RNN+attention常见的encoder-decoder之间的attention(上边的一个橙色框),还多出encoder和decoder内部的self-attention(下边的两个橙色框)。每个attention都有multi-head特征。最后,通过position encoding加入没考虑过的位置信息。

下面从multi-head attention,self-attention, position encoding几个角度介绍。

multi-head attention:

将一个词的vector切分成h个维度,求attention相似度时每个h维度计算。由于单词映射在高维空间作为向量形式,每一维空间都可以学到不同的特征,相邻空间所学结果更相似,相较于全体空间放到一起对应更加合理。比如对于vector-size=512的词向量,取h=8,每64个空间做一个attention,学到结果更细化。

self-attention:

每个词位的词都可以无视方向和距离,有机会直接和句子中的每个词encoding。比如上面右图这个句子,每个单词和同句其他单词之间都有一条边作为联系,边的颜色越深表明联系越强,而一般意义模糊的词语所连的边都比较深。比如:law,application,missing,opinion。。。

position encoding:

因为transformer既没有RNN的recurrence也没有CNN的convolution,但序列顺序信息很重要,比如你欠我100万明天要还和我欠你100万明天要还的含义截然不同。。。

transformer计算token的位置信息这里使用正弦波↓,类似模拟信号传播周期性变化。这样的循环函数可以一定程度上增加模型的泛化能力。

但BERT直接训练一个position embedding来保留位置信息,每个位置随机初始化一个向量,加入模型训练,最后就得到一个包含位置信息的embedding(简单粗暴。。),最后这个position embedding和word embedding的结合方式上,BERT选择直接相加。

3. sentence-level representation

在很多任务中,仅仅靠encoding是不足以完成任务的(这个只是学到了一堆token级的特征),还需要捕捉一些句子级的模式,来完成SLI、QA、dialogue等需要句子表示、句间交互与匹配的任务。对此,BERT又引入了另一个极其重要却又极其轻量级的任务,来试图把这种模式也学习到。

句子级负采样

句子级别的连续性预测任务,即预测输入BERT的两端文本是否为连续的文本。训练的时候,输入模型的第二个片段会以50%的概率从全部文本中随机选取,剩下50%的概率选取第一个片段的后续的文本。 即首先给定的一个句子(相当于word2vec中给定context),它下一个句子即为正例(相当于word2vec中的正确词),随机采样一个句子作为负例(相当于word2vec中随机采样的词),然后在该sentence-level上来做二分类(即判断句子是当前句子的下一句还是噪声)。

句子级表示

BERT是一个句子级别的语言模型,不像ELMo模型在与下游具体NLP任务拼接时需要每层加上权重做全局池化,BERT可以直接获得一整个句子的唯一向量表示。它在每个input前面加一个特殊的记号的最高隐层作为句子/句对的表示直接跟softmax的输出层连接,因此其作为梯度反向传播路径上的“关卡”,可以学到整个input的上层特征。

segment embedding

对于句对来说,EA和EB分别代表左句子和右句子;对于句子来说,只有EA。这个EA和EB也是随模型训练出来的。

如下图所示,最终输入结果会变成下面3个embedding拼接的表示。

首先,XLNet 是一个类似 BERT 的模型,而不是完全不同的模型。但这是一个非常有前途和潜力的。总之,XLNet是一种通用的自回归预训练方法。

那么什么是自回归(AR)语言模型?

AR语言模型是一种使用上下文词来预测下一个词的模型。但是在这里,上下文单词被限制在两个方向,前向或后向。

AR 语言模型的优势是擅长生成式自然语言处理任务。 因为在生成上下文时,通常是前向的。AR 语言模型很自然地适用于此类 NLP 任务。

但AR语言模型有一些缺点,它只能使用前向上下文或后向上下文,这意味着它不能同时使用前向和后向上下文。

自回归语言模型有优点有缺点,缺点是只能利用上文或者下文的信息,不能同时利用上文和下文的信息,当然,貌似ELMO这种双向都做,然后拼接看上去能够解决这个问题,因为融合模式过于简单,所以效果其实并不是太好。它的优点,其实跟下游NLP任务有关,比如生成类NLP任务,比如文本摘要,机器翻译等,在实际生成内容的时候,就是从左向右的,自回归语言模型天然匹配这个过程。而Bert这种DAE模式,在生成类NLP任务中,就面临训练过程和应用过程不一致的问题,导致生成类的NLP任务到目前为止都做不太好。

与 AR 语言模型不同,BERT 被归类为自动编码器(AE)语言模型。

AE 语言模型旨在从损坏的输入重建原始数据。

损坏的输入意味着我们在预训练阶段用 替换原始词 into 。目标是预测 into 得到原始句子。

AE 语言模型的优势是,它可以从向前和向后的方向看到上下文。

但 AE 语言模型也有其缺点。它在预训练中使用 的另一个缺点是它假设预测(掩蔽的)词 在给定未屏蔽的 词 的情况下彼此独立。例如,我们有一句话“它表明住房危机已经变成银行危机”。我们掩蔽“银行业”和“危机”。在这里注意,我们知道掩蔽的“银行业”和“危机”包含彼此的隐含关系。但 AE 模型试图预测“银行业”给予未掩蔽的 词,并预测“危机”分别给出未掩蔽的 词。它忽略了“银行业”与“危机”之间的关系。换句话说,它假设预测(掩蔽)的标记彼此独立。但是我们知道模型应该学习预测(掩蔽)词之间的这种相关性来预测其中一个词。

作者想要强调的是,XLNet 提出了一种让 AR 语言模型从双向上下文中学习的新方法,以避免 MASK 方法在 AE 语言模型中带来的缺点。 XLNet的出发点就是:能否融合自回归LM和DAE LM两者的优点。就是说如果站在自回归LM的角度,如何引入和双向语言模型等价的效果;如果站在DAE LM的角度看,它本身是融入双向语言模型的,如何抛掉表面的那个标记,让预训练和Fine-tuning保持一致。当然,XLNet还讲到了一个Bert被Mask单词之间相互独立的问题,我相信这个不太重要,原因后面会说。当然,我认为这点不重要的事情,纯粹是个人观点,出错难免,看看就完了,不用较真。

AR 语言模型只能向前或向后使用上下文,那么如何让它从双向上下文中学习呢?

语言模型包括两个阶段,即预训练阶段和调优阶段。XLNet 专注于预训练阶段。在预训练阶段,它提出了一个名为排列语言建模的新目标。我们可以从这个名称知道基本思想,它使用排列。

这里我们举一个例子来解释。序列的次序是 。这种序列的所有排列如下。

因此对于这 4 个词的(

)句子,有 24(

)个排列。

情景是我们想要预测 x3 。因此在 24 个排列中有 4 种模式,分别 x3 位于第 1 位,第 2 位,第 3 位,第 4 位。

当然,上面讲的仍然是基本思想。难点其实在于具体怎么做才能实现上述思想。首先,需要强调一点,尽管上面讲的是把句子X的单词排列组合后,再随机抽取例子作为输入,但是,实际上你是不能这么做的,因为Fine-tuning阶段你不可能也去排列组合原始输入。所以,就必须让预训练阶段的输入部分,看上去仍然是x1,x2,x3,x4这个输入顺序,但是可以在Transformer部分做些工作,来达成我们希望的目标。具体而言,XLNet采取了Attention掩码的机制,你可以理解为,当前的输入句子是X,要预测的单词Ti是第i个单词,前面1到i-1个单词,在输入部分观察,并没发生变化,该是谁还是谁。但是在Transformer内部,通过Attention掩码,从X的输入单词里面,也就是Ti的上文和下文单词中,随机选择i-1个,放到Ti的上文位置中,把其它单词的输入通过Attention掩码隐藏掉,于是就能够达成我们期望的目标(当然这个所谓放到Ti的上文位置,只是一种形象的说法,其实在内部,就是通过Attention Mask,把其它没有被选到的单词Mask掉,不让它们在预测单词Ti的时候发生作用,如此而已。看着就类似于把这些被选中的单词放到了上文Context_before的位置了)。具体实现的时候,XLNet是用“双流自注意力模型”实现的,细节可以参考论文,但是基本思想就如上所述,双流自注意力机制只是实现这个思想的具体方式,理论上,你可以想出其它具体实现方式来实现这个基本思想,也能达成让Ti看到下文单词的目标。

上面说的Attention掩码,我估计你还是没了解它的意思,我再用例子解释一下。Attention Mask的机制,核心就是说,尽管当前输入看上去仍然是x1-》x2-》x3-》x4,但是我们已经改成随机排列组合的另外一个顺序x3-》x2-》x4-》x1了,如果用这个例子用来从左到右训练LM,意味着当预测x2的时候,它只能看到上文x3;当预测x4的时候,只能看到上文x3和x2,以此类推……这样,比如对于x2来说,就看到了下文x3了。这种在输入侧维持表面的X句子单词顺序,但是其实在Transformer内部,看到的已经是被重新排列组合后的顺序,是通过Attention掩码来实现的。如上图所示,输入看上去仍然是x1,x2,x3,x4,可以通过不同的掩码矩阵,让当前单词Xi只能看到被排列组合后的顺序x3-》x2-》x4-》x1中自己前面的单词。这样就在内部改成了被预测单词同时看到上下文单词,但是输入侧看上去仍然维持原先的单词顺序了。关键要看明白上图右侧那个掩码矩阵,我相信很多人刚开始没看明白,因为我刚开始也没看明白,因为没有标出掩码矩阵的单词坐标,它的坐标是1-2-3-4,就是表面那个X的单词顺序,通过掩码矩阵,就能改成你想要的排列组合,并让当前单词看到它该看到的所谓上文,其实是掺杂了上文和下文的内容。这是attention mask来实现排列组合的背后的意思。

ALBERT相比于BERT的改进 ALBERT也是采用和BERT一样的Transformer的encoder结果,激活函数使用的也是GELU,在讲解下面的内容前,我们规定几个参数,词的embedding我们设置为E,encoder的层数我们设置为L,hidden size即encoder的输出值的维度我们设置为H,前馈神经网络的节点数设置为4H,attention的head个数设置为H/64。

在ALBERT中主要有三个改进方向。

1、对Embedding因式分解(Factorized embedding parameterization) 在BERT中,词embedding与encoder输出的embedding维度是一样的都是768。但是ALBERT认为,词级别的embedding是没有上下文依赖的表述,而隐藏层的输出值不仅包括了词本生的意思还包括一些上下文信息,理论上来说隐藏层的表述包含的信息应该更多一些,因此应该让H》》E,所以ALBERT的词向量的维度是小于encoder输出值维度的。

在NLP任务中,通常词典都会很大,embedding matrix的大小是E×V,如果和BERT一样让H=E,那么embedding matrix的参数量会很大,并且反向传播的过程中,更新的内容也比较稀疏。

结合上述说的两个点,ALBERT采用了一种因式分解的方法来降低参数量。首先把one-hot向量映射到一个低维度的空间,大小为E,然后再映射到一个高维度的空间,说白了就是先经过一个维度很低的embedding matrix,然后再经过一个高维度matrix把维度变到隐藏层的空间内,从而把参数量从O(V×H) O(V×H)O(V×H)降低到了O(V×E+E×H) O(V×E+E×H)O(V×E+E×H),当E《《H时参数量减少的很明显。

下图是E选择不同值的一个实验结果,尴尬的是,在不采用参数共享优化方案时E设置为768效果反而好一些,在采用了参数共享优化方案时E取128效果更好一些。

2、跨层的参数共享(Cross-layer parameter sharing) 在ALBERT还提出了一种参数共享的方法,Transformer中共享参数有多种方案,只共享全连接层,只共享attention层,ALBERT结合了上述两种方案,全连接层与attention层都进行参数共享,也就是说共享encoder内的所有参数,同样量级下的Transformer采用该方案后实际上效果是有下降的,但是参数量减少了很多,训练速度也提升了很多。

下图是BERT与ALBERT的一个对比,以base为例,BERT的参数是108M,而ALBERT仅有12M,但是效果的确相比BERT降低了两个点。由于其速度快的原因,我们再以BERT xlarge为参照标准其参数是1280M,假设其训练速度是1,ALBERT的xxlarge版本的训练速度是其1.2倍,并且参数也才223M,评判标准的平均值也达到了最高的88.7

除了上述说了训练速度快之外,ALBERT每一层的输出的embedding相比于BERT来说震荡幅度更小一些。下图是不同的层的输出值的L2距离与cosine相似度,可见参数共享其实是有稳定网络参数的作用的。

3、句间连贯(Inter-sentence coherence loss) BERT的NSP任务实际上是一个二分类,训练数据的正样本是通过采样同一个文档中的两个连续的句子,而负样本是通过采用两个不同的文档的句子。该任务主要是希望能提高下游任务的效果,例如NLI自然语言推理任务。但是后续的研究发现该任务效果并不好,主要原因是因为其任务过于简单。NSP其实包含了两个子任务,主题预测与关系一致性预测,但是主题预测相比于关系一致性预测简单太多了,并且在MLM任务中其实也有类型的效果。

这里提一下为啥包含了主题预测,因为正样本是在同一个文档中选取的,负样本是在不同的文档选取的,假如我们有2个文档,一个是娱乐相关的,一个是新中国成立70周年相关的,那么负样本选择的内容就是不同的主题,而正样都在娱乐文档中选择的话预测出来的主题就是娱乐,在新中国成立70周年的文档中选择的话就是后者这个主题了。

在ALBERT中,为了只保留一致性任务去除主题识别的影响,提出了一个新的任务 sentence-order prediction(SOP),SOP的正样本和NSP的获取方式是一样的,负样本把正样本的顺序反转即可。SOP因为实在同一个文档中选的,其只关注句子的顺序并没有主题方面的影响。并且SOP能解决NSP的任务,但是NSP并不能解决SOP的任务,该任务的添加给最终的结果提升了一个点。

4、移除dropout 除了上面提到的三个主要优化点,ALBERT的作者还发现一个很有意思的点,ALBERT在训练了100w步之后,模型依旧没有过拟合,于是乎作者果断移除了dropout,没想到对下游任务的效果竟然有一定的提升。这也是业界第一次发现dropout对大规模的预训练模型会造成负面影响。

参考链接: 彻底搞懂BERT 什么是 XLNet,为何它会超越 BERT? XLNet:运行机制及和Bert的异同比较 一文揭开ALBERT的神秘面纱 不懂word2vec,还敢说自己是做NLP?

transformer模型(Transformer解读(附pytorch代码))

本文编辑:admin

更多文章:


acer s3 拆机(宏碁s3-391拆机换内存)

acer s3 拆机(宏碁s3-391拆机换内存)

宏基s3-391拆了一下主板上回去就检测不到固态硬盘了,宏基S3391笔记本怎么拆机换硬盘用螺丝刀就可以了,将硬盘取下后,不是普通的2.5寸笔记本硬盘,拆硬盘,宏碁s3-391拆机换内存去服务中心,宏基s3蜂鸟笔记本怎么换ssd硬盘方法/步

2024年2月19日 11:00

笔记本大全中关村在线(求推荐合适的笔记本电脑,画图用)

笔记本大全中关村在线(求推荐合适的笔记本电脑,画图用)

本文目录求推荐合适的笔记本电脑,画图用中关村在线笔记本电脑参数是不是真的3000元的笔记本电脑哪款好求推荐合适的笔记本电脑,画图用推荐华硕灵耀Deluxe14,创造力、美学、革新,这些元素赋予新款 U4300FN 更强的实力。它堪称集美

2024年5月6日 16:20

mipad是小米几代(m1806d9e是小米平板几)

mipad是小米几代(m1806d9e是小米平板几)

本文目录m1806d9e是小米平板几小米平板玫瑰金是哪一代平板我这个小米平板是小米几m1806d9e是小米平板几m1806d9e这个是小米平板的第四代版本。这个是小米平板二,你可以去用一下,挺好用的,那边的还挺好2006第九一是小米版的绩效

2024年4月4日 08:10

1070最稳定的显卡驱动版本(索泰GTX1070 PGF显卡用什么版本驱动性能最好)

1070最稳定的显卡驱动版本(索泰GTX1070 PGF显卡用什么版本驱动性能最好)

本文目录索泰GTX1070 PGF显卡用什么版本驱动性能最好1070显卡驱动哪个版本好显卡吧显卡驱动哪个版本稳定最适合1070ti的显卡驱动是什么版本,玩游戏直播的,英伟达的索泰GTX1070 PGF显卡用什么版本驱动性能最好用最新的NV驱

2024年5月23日 07:30

制冷剂R22是什么?r22是什么味

制冷剂R22是什么?r22是什么味

本文目录制冷剂R22是什么r22是什么味制冷剂R22是什么R22是氟利昂家族的一员,属于氢氯氟烃类。氟里昂的定义,氟里昂是饱和烃类(碳氢化合物)的卤族衍生物的总称,是本世纪三十年代随着化学工业的发展而出现的一类制冷剂,它的出现解决了制冷空调

2024年6月5日 10:00

家用3d投影仪有必要吗(宅在家里适合买家用投影仪吗)

家用3d投影仪有必要吗(宅在家里适合买家用投影仪吗)

本文目录宅在家里适合买家用投影仪吗3D高清投影仪实用吗在家里的卧室装投影仪,你们觉得值得吗家里有必要安装投影仪吗有何利弊生活条件变好了,家用投影仪真的有必要购买吗有必要买个投影仪在家看电影么宅在家里适合买家用投影仪吗挺适合买家用投影仪,体积

2024年5月29日 01:50

贝尔丰4g手机(深圳市贝尔丰科技有限公司的贝尔丰手机)

贝尔丰4g手机(深圳市贝尔丰科技有限公司的贝尔丰手机)

本文目录深圳市贝尔丰科技有限公司的贝尔丰手机贝尔丰 A500移动4G手机阿里云系统如何ROOT贝尔丰k11超长待机 6.0寸大屏幕超薄移动4g双卡双待安卓智能手机6是不是电信的贝尔丰 bft20 移动4g智能手机怎样贝尔丰5、5寸智能4g有

2024年4月29日 16:30

普特彼用法说明(利奥医药的普特彼效果如何)

普特彼用法说明(利奥医药的普特彼效果如何)

本文目录利奥医药的普特彼效果如何普特彼他克莫司软膏主要治疗什么病利奥医药的普特彼效果如何普特彼(他克莫司软膏)个人感觉还不错,见效很快,用了没多久湿疹就下去了,止痒效果也很好。主要是不含激素,用着也放心。听长期使用的病友说,这个药没啥副作用

2024年6月1日 02:30

买奥迪q3都是穷人(奥迪Q3为什么没人买)

买奥迪q3都是穷人(奥迪Q3为什么没人买)

奥迪Q3为什么没人买买奥迪Q3好还是途观好为什么没人买 奥迪q3,奥迪Q3为什么没人买奥迪q3为何没人买,为什么奥迪q3没有人买为什么没人买奥迪q3,考虑奥迪Q3的压力还是很大的,不知道一个男人开奥迪Q3是不是太小了,为什么没人买奥迪q3,

2024年3月8日 06:00

vivo xplay 5 a手机怎么分屏(vivo分屏模式怎么开启)

vivo xplay 5 a手机怎么分屏(vivo分屏模式怎么开启)

三、消息分屏操作方法:1、Origin OS Oean:进入设置--快捷与辅助--多任务--消息启动--打开“显示悬浮消息图标”--打开对应软件的开关,可点击此链接查看图文说明三、分屏应用协作操作方法:在支持的应用全屏界面下三指上滑/三指下

2024年2月21日 01:50

windows7安全警报怎么关闭(在win7系统中,弹出安全警告怎么关闭)

windows7安全警报怎么关闭(在win7系统中,弹出安全警告怎么关闭)

本文目录在win7系统中,弹出安全警告怎么关闭安全警告怎么关闭在win7系统中,弹出安全警告怎么关闭1.使用组合快捷键win键+r键打开运行窗口,输入“cmd”回车确认打开命令窗口。2.在打开的命令窗口中输入“reg add HKCUSof

2024年5月25日 14:30

moto新机2022(又一款国产折叠屏官宣,moto razr 2022真机已亮相)

moto新机2022(又一款国产折叠屏官宣,moto razr 2022真机已亮相)

本文目录又一款国产折叠屏官宣,moto razr 2022真机已亮相摩托罗拉2022新款折叠手机,不打开折叠可以充电吗摩托罗拉折叠手机2022有港版吗又一款国产折叠屏官宣,moto razr 2022真机已亮相联想旗下的摩托罗拉正式官宣了预

2024年4月15日 17:40

荣耀xsportpro耳机怎么样(运动听歌哪款颈挂式蓝牙耳机好,网红挂脖式蓝牙耳机推荐)

荣耀xsportpro耳机怎么样(运动听歌哪款颈挂式蓝牙耳机好,网红挂脖式蓝牙耳机推荐)

荣耀xSport PRO运动蓝牙耳机:佩戴更稳固、入耳更舒适 从李现现场佩戴的情况来看,荣耀xSport PRO运动蓝牙耳机除了佩戴稳固、舒适之外,荣耀xSport PRO运动蓝牙耳机可能还有更多的惊喜,荣耀xSport PRO耳机是一

2024年2月24日 18:30

惠威m200mkiii遥控图解(惠威音响遥控器上的按键意思)

惠威m200mkiii遥控图解(惠威音响遥控器上的按键意思)

否则要用的时候找不到遥控器还是得去主音箱上调,例如:在惠威D200主音箱的侧面,在惠威D200的主音箱前面,惠威M200MKIII怎么样惠威M200MKIII好吗优点:  高音很很柔和,多接口也使得惠威D200可以同时连接多个设备并自由切换

2024年3月15日 11:10

魅族手机强行恢复出厂吗(魅族忘记密码怎么强制恢复出厂)

魅族手机强行恢复出厂吗(魅族忘记密码怎么强制恢复出厂)

本文目录魅族忘记密码怎么强制恢复出厂魅族手机强制恢复出厂设置时卡机魅族手机怎么恢复出厂的系统魅族手机忘记密码怎么强制恢复出厂设置魅族手机忘了密码如何恢复出厂设置魅族忘记密码怎么强制恢复出厂      魅族忘记密码强制恢复出厂的方法是:   

2024年4月21日 02:10

macmini忘记开机密码怎么办(苹果笔记本电脑开机密码忘了怎么办)

macmini忘记开机密码怎么办(苹果笔记本电脑开机密码忘了怎么办)

还有就是也可以下面这种方法: 通过删除配置文件重新创建新的管理员帐号 开机后按住 mand - s 进入系统单用户模式 以此输入如下: / *** in/mount -uaw《br /》 rm /var/db/.applesetu

2024年2月29日 05:10

vivo手机root软件(vivo怎么获取root权限呢)

vivo手机root软件(vivo怎么获取root权限呢)

vivo手机怎么root   vivo手机怎么root   vivo手机root   方法一:利用“百度一键ROOT”工具获取ViVO手机ROOT权限,vivo怎么获取root权限呢      【vivo手机获取root

2024年2月23日 15:20

夏普特约维修点(夏普冰箱产地及维修点介绍)

夏普特约维修点(夏普冰箱产地及维修点介绍)

本文目录夏普冰箱产地及维修点介绍知道上海的夏普洗衣机的维修服务电话么夏普手机维修有哪些地方夏普冰箱产地及维修点介绍  夏普是一家日本老品牌,夏普于2005 建立了夏普商贸(中国)有限公司,将生产厂地建立在中国,来向中国销售夏普品牌的用品。夏

2024年5月31日 08:30

中国iptv怎么投屏(IPTV怎么投屏)

中国iptv怎么投屏(IPTV怎么投屏)

本文目录IPTV怎么投屏中国iptv怎么投屏 中国iptv如何投屏中国电信iptv投屏怎么设置中国iptv怎么才能投屏中国电信iptv怎么投屏中国iptv安徽如何投屏iptv投屏方法有哪些iptv投屏怎么操作中国移动iptv怎么投屏IPTV

2024年3月29日 05:30

卡西欧fr100(ex-fr10和ex-fr100哪个好)

卡西欧fr100(ex-fr10和ex-fr100哪个好)

本文目录ex-fr10和ex-fr100哪个好索尼A900和卡西欧FR100有什么区别卡西欧exfr10和fr100的区别casio fr100l怎么样_卡西欧fr100l好用吗卡西欧FR100L有拼接照片的功能吗卡西欧EX-F1,1200

2024年4月18日 00:40