import{s as Ze,o as qe}from"../chunks/scheduler.37c15a92.js";import{S as je,i as Ue,g as ke,s as $,r as f,A as Se,h as xe,f as l,c as m,j as ye,u,k as ze,y as Ae,a as p,v as c,t as a,b as Ce,d as s,w as g,p as Je}from"../chunks/index.2bf4358c.js";import{C as Te}from"../chunks/CodeBlock.4f5fc1ad.js";import{C as Be}from"../chunks/CourseFloatingBanner.06521e8b.js";import{Q as M}from"../chunks/Question.668688bc.js";import{F as He}from"../chunks/FrameworkSwitchCourse.8d4d4ab6.js";import{H as b}from"../chunks/Heading.8ada512a.js";function We(w){let i,d,o,k;return i=new b({props:{title:"5.什么是 TFAutoModel？",local:"5什么是-tfautomodel",headingTag:"h3"}}),o=new M({props:{choices:[{text:"根据您的数据自动进行训练的模型",explain:"错误。您可能把TFAutoModel与我们的<a href='https://huggingface.co/autotrain'>AutoTrain</a> 产品相混淆了？"},{text:"一个根据Checkpoint(检查点)返回模型体系结构的对象",explain:"确切地说: <code>TFAutoModel</code>只需要知道初始化的Checkpoint(检查点)就可以返回正确的体系结构。",correct:!0},{text:"一种可以自动检测输入语言来加载正确权重的模型",explain:"不正确; 虽然有些Checkpoint(检查点)和模型能够处理多种语言，但是没有内置的工具可以根据语言自动选择Checkpoint(检查点)。您应该前往 <a href='https://huggingface.co/models'>Model Hub</a> 寻找完成所需任务的最佳Checkpoint(检查点)！"}]}}),{c(){f(i.$$.fragment),d=$(),f(o.$$.fragment)},l(t){u(i.$$.fragment,t),d=m(t),u(o.$$.fragment,t)},m(t,x){c(i,t,x),p(t,d,x),c(o,t,x),k=!0},i(t){k||(s(i.$$.fragment,t),s(o.$$.fragment,t),k=!0)},o(t){a(i.$$.fragment,t),a(o.$$.fragment,t),k=!1},d(t){t&&l(d),g(i,t),g(o,t)}}}function Ie(w){let i,d,o,k;return i=new b({props:{title:"5.什么是AutoModel？",local:"5什么是automodel",headingTag:"h3"}}),o=new M({props:{choices:[{text:"根据您的数据自动进行训练的模型",explain:"错误。您可能把AutoModel与我们的<a href='https://huggingface.co/autotrain'>AutoTrain</a> 产品相混淆了？"},{text:"一个根据Checkpoint(检查点)返回模型体系结构的对象",explain:"确切地说: <code>AutoModel</code>只需要知道初始化的Checkpoint(检查点)就可以返回正确的体系结构。",correct:!0},{text:"一种可以自动检测输入语言来加载正确权重的模型",explain:"不正确; 虽然有些Checkpoint(检查点)和模型能够处理多种语言，但是没有内置的工具可以根据语言自动选择Checkpoint(检查点)。您应该前往 <a href='https://huggingface.co/models'>Model Hub</a> 寻找完成所需任务的最佳Checkpoint(检查点)！"}]}}),{c(){f(i.$$.fragment),d=$(),f(o.$$.fragment)},l(t){u(i.$$.fragment,t),d=m(t),u(o.$$.fragment,t)},m(t,x){c(i,t,x),p(t,d,x),c(o,t,x),k=!0},i(t){k||(s(i.$$.fragment,t),s(o.$$.fragment,t),k=!0)},o(t){a(i.$$.fragment,t),a(o.$$.fragment,t),k=!1},d(t){t&&l(d),g(i,t),g(o,t)}}}function Ve(w){let i,d,o,k,t,x;return i=new b({props:{title:"10.下面的代码有什么错误吗？",local:"10下面的代码有什么错误吗",headingTag:"h3"}}),o=new Te({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMkMlMjBURkF1dG9Nb2RlbCUwQSUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKCUyMmJlcnQtYmFzZS1jYXNlZCUyMiklMEFtb2RlbCUyMCUzRCUyMFRGQXV0b01vZGVsLmZyb21fcHJldHJhaW5lZCglMjJncHQyJTIyKSUwQSUwQWVuY29kZWQlMjAlM0QlMjB0b2tlbml6ZXIoJTIySGV5ISUyMiUyQyUyMHJldHVybl90ZW5zb3JzJTNEJTIycHQlMjIpJTBBcmVzdWx0JTIwJTNEJTIwbW9kZWwoKiplbmNvZGVkKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer, TFAutoModel

tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>)
model = TFAutoModel.from_pretrained(<span class="hljs-string">&quot;gpt2&quot;</span>)

encoded = tokenizer(<span class="hljs-string">&quot;Hey!&quot;</span>, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)
result = model(**encoded)`,wrap:!1}}),t=new M({props:{choices:[{text:"不，看起来是对的。",explain:"不幸的是，将一个模型与一个用不同Checkpoint(检查点)训练的Tokenizer(标记器)耦合在并不是一个好主意。模型没有在这个这个Tokenizer(标记器)上训练来理解Tokenizer(标记器)的输出，因此模型输出(如果它可以运行的话)不会有任何意义。"},{text:"Tokenizer(标记器)和模型应该来自相同的Checkpoint(检查点)。",explain:"对！",correct:!0},{text:"由于每个输入都是一个Batch，因此可以使用标记器(Tokenizer)对其进行平移和截断来改善这段代码。",explain:"的确，每个模型都需要Batch类型的输入。然而，截断或填充这个序列并不一定有意义，这里只有一句话，而这些技术是用来批处理一个句子列表的。"}]}}),{c(){f(i.$$.fragment),d=$(),f(o.$$.fragment),k=$(),f(t.$$.fragment)},l(n){u(i.$$.fragment,n),d=m(n),u(o.$$.fragment,n),k=m(n),u(t.$$.fragment,n)},m(n,T){c(i,n,T),p(n,d,T),c(o,n,T),p(n,k,T),c(t,n,T),x=!0},i(n){x||(s(i.$$.fragment,n),s(o.$$.fragment,n),s(t.$$.fragment,n),x=!0)},o(n){a(i.$$.fragment,n),a(o.$$.fragment,n),a(t.$$.fragment,n),x=!1},d(n){n&&(l(d),l(k)),g(i,n),g(o,n),g(t,n)}}}function Fe(w){let i,d,o,k,t,x;return i=new b({props:{title:"10.下面的代码有什么错误吗？",local:"10下面的代码有什么错误吗",headingTag:"h3"}}),o=new Te({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMkMlMjBBdXRvTW9kZWwlMEElMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZCglMjJiZXJ0LWJhc2UtY2FzZWQlMjIpJTBBbW9kZWwlMjAlM0QlMjBBdXRvTW9kZWwuZnJvbV9wcmV0cmFpbmVkKCUyMmdwdDIlMjIpJTBBJTBBZW5jb2RlZCUyMCUzRCUyMHRva2VuaXplciglMjJIZXkhJTIyJTJDJTIwcmV0dXJuX3RlbnNvcnMlM0QlMjJwdCUyMiklMEFyZXN1bHQlMjAlM0QlMjBtb2RlbCgqKmVuY29kZWQp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer, AutoModel

tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>)
model = AutoModel.from_pretrained(<span class="hljs-string">&quot;gpt2&quot;</span>)

encoded = tokenizer(<span class="hljs-string">&quot;Hey!&quot;</span>, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)
result = model(**encoded)`,wrap:!1}}),t=new M({props:{choices:[{text:"不，看起来是对的。",explain:"不幸的是，将一个模型与一个用不同Checkpoint(检查点)训练的Tokenizer(标记器)耦合在并不是一个好主意。模型没有在这个这个Tokenizer(标记器)上训练来理解Tokenizer(标记器)的输出，因此模型输出(如果它可以运行的话)不会有任何意义。"},{text:"Tokenizer(标记器)和模型应该来自相同的Checkpoint(检查点)。",explain:"对！",correct:!0},{text:"由于每个输入都是一个Batch，因此可以使用标记器(Tokenizer)对其进行平移和截断来改善这段代码。",explain:"的确，每个模型都需要Batch类型的输入。然而，截断或填充这个序列并不一定有意义，这里只有一句话，而这些技术是用来批处理一个句子列表的。"}]}}),{c(){f(i.$$.fragment),d=$(),f(o.$$.fragment),k=$(),f(t.$$.fragment)},l(n){u(i.$$.fragment,n),d=m(n),u(o.$$.fragment,n),k=m(n),u(t.$$.fragment,n)},m(n,T){c(i,n,T),p(n,d,T),c(o,n,T),p(n,k,T),c(t,n,T),x=!0},i(n){x||(s(i.$$.fragment,n),s(o.$$.fragment,n),s(t.$$.fragment,n),x=!0)},o(n){a(i.$$.fragment,n),a(o.$$.fragment,n),a(t.$$.fragment,n),x=!1},d(n){n&&(l(d),l(k)),g(i,n),g(o,n),g(t,n)}}}function Qe(w){let i,d,o,k,t,x,n,T,C,Y,J,K,Z,D,q,O,j,ee,U,te,S,ne,A,re,B,ie,_,h,P,H,oe,W,le,I,ae,V,se,F,pe,Q,$e,X,me,v,fe,E,ue,y,z,N,L,ce;t=new He({props:{fw:w[0]}}),n=new b({props:{title:"章末小测试",local:"章末小测验",headingTag:"h1"}}),C=new Be({props:{chapter:2,classNames:"absolute z-10 right-0 top-0"}}),J=new b({props:{title:"1. 语言建模 Pipeline 的顺序是什么？",local:"1-语言建模-pipeline-的顺序是什么",headingTag:"h3"}}),Z=new M({props:{choices:[{text:"首先是模型它处理文本并返回原始预测。然后，分词器会对这些预测进行解释，并在需要时将它们转换回文本",explain:"模型不能理解文本！必须首先使用标记器(Tokenizer)将文本转换为id，之后才可以输入给模型。"},{text:"首先是 标记器(Tokenizer)，它处理文本并返回id。模型根据这些 id 并输出预测，可以是一些文本。",explain:"该模型的预测结果是id而不是文本。为了将预测转换回文本，必须使用标记器(Tokenizer)！"},{text:"标记器(Tokenizer) 处理文本并返回 id。模型处理这些 id 并输出一个预测。然后可以再次使用 标记器(Tokenizer) 将这些预测转换回某些文本。",explain:"正确! 标记器(Tokenizer)可以用于id与文本的相互转换。",correct:!0}]}}),q=new b({props:{title:"2. Transformer模型的输出有多少个维度，每个维度分别是什么？",local:"2-transformer模型的输出有多少个维度每个维度分别是什么",headingTag:"h3"}}),j=new M({props:{choices:[{text:"2个维度，分别是: 序列长度(Sequence Length)和批次大小(Batch Size)",explain:"错! 该模型的张量输出还具有第三个维度: 隐藏层大小(Hidden Size)。"},{text:"2个维度，分别是: 序列长度(Sequence Length)和隐藏层大小(Hidden Size)",explain:"错! 所有Transformer模型都批量进行计算，即使是单个序列; 那么批次大小(Batch Size)为1！"},{text:"3个维度，分别是: 序列长度(Sequence Length)、批次大小(Batch Size)和隐藏层大小(Hidden Size)",explain:"正确！",correct:!0}]}}),U=new b({props:{title:"3.下列哪一个是Subword标记(Tokenization)的例子（从分词的颗粒度来划分）？",local:"3下列哪一个是subword标记tokenization的例子从分词的颗粒度来划分",headingTag:"h3"}}),S=new M({props:{choices:[{text:"WordPiece",explain:"是的，这是一个Subword 标记化(Tokenization)的例子！",correct:!0},{text:"基于单个字符的标记(Tokenization)",explain:"基于字符的标记(Tokenization)不是一种Subword 标记化(Tokenization)。"},{text:"基于空格和标点符号的分割",explain:"这是一种基于单词标记化(Tokenization)！"},{text:"BPE(Byte Pair Encoding)",explain:"是的，这是一个Subword 标记化(Tokenization)的例子！",correct:!0},{text:"Unigram",explain:"是的，这是一个Subword 标记化(Tokenization)的例子！",correct:!0},{text:"以上都不是",explain:"不对！"}]}}),A=new b({props:{title:"4.什么是模型的Head层？",local:"4什么是模型的head层",headingTag:"h3"}}),B=new M({props:{choices:[{text:"原始Transformer网络的一种组件，将张量(Tensors)重定向到它们的正确层",explain:"不对! 没有这样的组件。"},{text:"也称为自注意力(self-attention)机制，它根据序列中的其他标记(Token)来调整一个标记(Token)",explain:"不对！ 自注意力层确实包含注意力“Head”层，但这些不是模型的head层。"},{text:"一个附加组件，通常由一个或几个层组成，用于将Transformer的预测转换为特定于任务的输出",explain:"没错。它的全名是Adaptation Heads，也被简单地称为模型的头部，在不同的任务上有不同的形式: 语言模型Heads，问题回答Heads，序列分类Heads..。",correct:!0}]}});const be=[Ie,We],R=[];function Me(e,r){return e[0]==="pt"?0:1}_=Me(w),h=R[_]=be[_](w),H=new b({props:{title:"6.当将不同长度的序列批处理在一起时，需要进行哪些处理？",local:"6当将不同长度的序列批处理在一起时需要进行哪些处理",headingTag:"h3"}}),W=new M({props:{choices:[{text:"截短",explain:"是的，截断是一个正确的方式，可以将他们转化为一个固定长度的矩形序列。这是唯一的一个答案吗？",correct:!0},{text:"返回Tensors",explain:"虽然其他技术允许返回矩形张量，但在批处理序列时不可以直接返回长度不一致的Tensors。(序列必须是固定长度)"},{text:"填充",explain:"是的，填充是一个正确的方式，可以将他们转化为一个固定长度的矩形序列。这是唯一的一个答案吗？",correct:!0},{text:"注意力遮蔽(Attention masking)",explain:"当然！当处理不同长度的序列时，注意力遮蔽是最重要的。然而，这并不是唯一需要进行的处理。",correct:!0}]}}),I=new b({props:{title:"7.将 SoftMax激活函数应用于序列分类(Sequence Classification)模型的 logits 输出有什么意义？",local:"7将-softmax激活函数应用于序列分类sequence-classification模型的-logits-输出有什么意义",headingTag:"h3"}}),V=new M({props:{choices:[{text:"它软化了logits输出，使结果更可靠。",explain:"不， SoftMax激活函数不会影响结果的可靠性。"},{text:"它限定了上下界，使模型的输出结果可以被解释。",explain:"正确！结果值被压缩到了0和1之间。不过，这并不是我们使用SoftMax激活函数的唯一原因。",correct:!0},{text:"输出的和是1，从而产生一个可能的概率解释。",explain:"没错，但这并不是我们使用SoftMax激活函数的唯一原因。",correct:!0}]}}),F=new b({props:{title:"8.大多数标记器(Tokenizer)的API以什么方法为核心？",local:"8大多数标记器tokenizer的api以什么方法为核心",headingTag:"h3"}}),Q=new M({props:{choices:[{text:"<code>编码</code> ，因为它可以将文本编码为id，将预测的id解码为文本",explain:"错! 虽然 <code>编码</code> 方法确实存在于标记器中，但是它不存在于模型中。"},{text:"直接调用标记器(Tokenizer)对象。",explain:"完全正确！标记化器(Tokenizer) 的 <code>__call__</code>方法是一个非常强大的方法，可以处理几乎任何事情。它也是从模型中获取预测的方法。",correct:!0},{text:"<code>pad</code>(填充)",explain:"错! <code>pad</code>(填充)非常有用，但它只是标记器(Tokenizer) API的一部分。"},{text:"<code>tokenize</code>(标记)",explain:"可以说，<code>tokenize</code>(标记)方法是最有用的方法之一，但它不是标记器(Tokenizer) API的核心方法。"}]}}),X=new b({props:{title:"9.这个代码示例中的 result 变量包含什么？",local:"9这个代码示例中的-result-变量包含什么",headingTag:"h3"}}),v=new Te({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEElMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZCglMjJiZXJ0LWJhc2UtY2FzZWQlMjIpJTBBcmVzdWx0JTIwJTNEJTIwdG9rZW5pemVyLnRva2VuaXplKCUyMkhlbGxvISUyMik=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>)
result = tokenizer.tokenize(<span class="hljs-string">&quot;Hello!&quot;</span>)`,wrap:!1}}),E=new M({props:{choices:[{text:"字符串列表，每个字符串都是一个标记(Token)",explain:"正确! 把这个转换成id后，就可以传输给模型了！",correct:!0},{text:"一个ID的列表",explain:"不正确; 这就是 <code>__call__</code> 或 <code>convert_tokens_to_ids</code>方法的作用！"},{text:"包含所有标记(Token)的字符串",explain:"这将是次优的，因为Tokenizer会将字符串拆分为多个标记的列表。"}]}});const we=[Fe,Ve],G=[];function _e(e,r){return e[0]==="pt"?0:1}return y=_e(w),z=G[y]=we[y](w),{c(){i=ke("meta"),d=$(),o=ke("p"),k=$(),f(t.$$.fragment),x=$(),f(n.$$.fragment),T=$(),f(C.$$.fragment),Y=$(),f(J.$$.fragment),K=$(),f(Z.$$.fragment),D=$(),f(q.$$.fragment),O=$(),f(j.$$.fragment),ee=$(),f(U.$$.fragment),te=$(),f(S.$$.fragment),ne=$(),f(A.$$.fragment),re=$(),f(B.$$.fragment),ie=$(),h.c(),P=$(),f(H.$$.fragment),oe=$(),f(W.$$.fragment),le=$(),f(I.$$.fragment),ae=$(),f(V.$$.fragment),se=$(),f(F.$$.fragment),pe=$(),f(Q.$$.fragment),$e=$(),f(X.$$.fragment),me=$(),f(v.$$.fragment),fe=$(),f(E.$$.fragment),ue=$(),z.c(),N=$(),L=ke("p"),this.h()},l(e){const r=Se("svelte-u9bgzb",document.head);i=xe(r,"META",{name:!0,content:!0}),r.forEach(l),d=m(e),o=xe(e,"P",{}),ye(o).forEach(l),k=m(e),u(t.$$.fragment,e),x=m(e),u(n.$$.fragment,e),T=m(e),u(C.$$.fragment,e),Y=m(e),u(J.$$.fragment,e),K=m(e),u(Z.$$.fragment,e),D=m(e),u(q.$$.fragment,e),O=m(e),u(j.$$.fragment,e),ee=m(e),u(U.$$.fragment,e),te=m(e),u(S.$$.fragment,e),ne=m(e),u(A.$$.fragment,e),re=m(e),u(B.$$.fragment,e),ie=m(e),h.l(e),P=m(e),u(H.$$.fragment,e),oe=m(e),u(W.$$.fragment,e),le=m(e),u(I.$$.fragment,e),ae=m(e),u(V.$$.fragment,e),se=m(e),u(F.$$.fragment,e),pe=m(e),u(Q.$$.fragment,e),$e=m(e),u(X.$$.fragment,e),me=m(e),u(v.$$.fragment,e),fe=m(e),u(E.$$.fragment,e),ue=m(e),z.l(e),N=m(e),L=xe(e,"P",{}),ye(L).forEach(l),this.h()},h(){ze(i,"name","hf:doc:metadata"),ze(i,"content",Xe)},m(e,r){Ae(document.head,i),p(e,d,r),p(e,o,r),p(e,k,r),c(t,e,r),p(e,x,r),c(n,e,r),p(e,T,r),c(C,e,r),p(e,Y,r),c(J,e,r),p(e,K,r),c(Z,e,r),p(e,D,r),c(q,e,r),p(e,O,r),c(j,e,r),p(e,ee,r),c(U,e,r),p(e,te,r),c(S,e,r),p(e,ne,r),c(A,e,r),p(e,re,r),c(B,e,r),p(e,ie,r),R[_].m(e,r),p(e,P,r),c(H,e,r),p(e,oe,r),c(W,e,r),p(e,le,r),c(I,e,r),p(e,ae,r),c(V,e,r),p(e,se,r),c(F,e,r),p(e,pe,r),c(Q,e,r),p(e,$e,r),c(X,e,r),p(e,me,r),c(v,e,r),p(e,fe,r),c(E,e,r),p(e,ue,r),G[y].m(e,r),p(e,N,r),p(e,L,r),ce=!0},p(e,[r]){const he={};r&1&&(he.fw=e[0]),t.$set(he);let ge=_;_=Me(e),_!==ge&&(Je(),a(R[ge],1,1,()=>{R[ge]=null}),Ce(),h=R[_],h||(h=R[_]=be[_](e),h.c()),s(h,1),h.m(P.parentNode,P));let de=y;y=_e(e),y!==de&&(Je(),a(G[de],1,1,()=>{G[de]=null}),Ce(),z=G[y],z||(z=G[y]=we[y](e),z.c()),s(z,1),z.m(N.parentNode,N))},i(e){ce||(s(t.$$.fragment,e),s(n.$$.fragment,e),s(C.$$.fragment,e),s(J.$$.fragment,e),s(Z.$$.fragment,e),s(q.$$.fragment,e),s(j.$$.fragment,e),s(U.$$.fragment,e),s(S.$$.fragment,e),s(A.$$.fragment,e),s(B.$$.fragment,e),s(h),s(H.$$.fragment,e),s(W.$$.fragment,e),s(I.$$.fragment,e),s(V.$$.fragment,e),s(F.$$.fragment,e),s(Q.$$.fragment,e),s(X.$$.fragment,e),s(v.$$.fragment,e),s(E.$$.fragment,e),s(z),ce=!0)},o(e){a(t.$$.fragment,e),a(n.$$.fragment,e),a(C.$$.fragment,e),a(J.$$.fragment,e),a(Z.$$.fragment,e),a(q.$$.fragment,e),a(j.$$.fragment,e),a(U.$$.fragment,e),a(S.$$.fragment,e),a(A.$$.fragment,e),a(B.$$.fragment,e),a(h),a(H.$$.fragment,e),a(W.$$.fragment,e),a(I.$$.fragment,e),a(V.$$.fragment,e),a(F.$$.fragment,e),a(Q.$$.fragment,e),a(X.$$.fragment,e),a(v.$$.fragment,e),a(E.$$.fragment,e),a(z),ce=!1},d(e){e&&(l(d),l(o),l(k),l(x),l(T),l(Y),l(K),l(D),l(O),l(ee),l(te),l(ne),l(re),l(ie),l(P),l(oe),l(le),l(ae),l(se),l(pe),l($e),l(me),l(fe),l(ue),l(N),l(L)),l(i),g(t,e),g(n,e),g(C,e),g(J,e),g(Z,e),g(q,e),g(j,e),g(U,e),g(S,e),g(A,e),g(B,e),R[_].d(e),g(H,e),g(W,e),g(I,e),g(V,e),g(F,e),g(Q,e),g(X,e),g(v,e),g(E,e),G[y].d(e)}}}const Xe='{"title":"章末小测试","local":"章末小测验","sections":[{"title":"1. 语言建模 Pipeline 的顺序是什么？","local":"1-语言建模-pipeline-的顺序是什么","sections":[],"depth":3},{"title":"2. Transformer模型的输出有多少个维度，每个维度分别是什么？","local":"2-transformer模型的输出有多少个维度每个维度分别是什么","sections":[],"depth":3},{"title":"3.下列哪一个是Subword标记(Tokenization)的例子（从分词的颗粒度来划分）？","local":"3下列哪一个是subword标记tokenization的例子从分词的颗粒度来划分","sections":[],"depth":3},{"title":"4.什么是模型的Head层？","local":"4什么是模型的head层","sections":[],"depth":3},{"title":"5.什么是AutoModel？","local":"5什么是automodel","sections":[],"depth":3},{"title":"5.什么是 TFAutoModel？","local":"5什么是-tfautomodel","sections":[],"depth":3},{"title":"6.当将不同长度的序列批处理在一起时，需要进行哪些处理？","local":"6当将不同长度的序列批处理在一起时需要进行哪些处理","sections":[],"depth":3},{"title":"7.将 SoftMax激活函数应用于序列分类(Sequence Classification)模型的 logits 输出有什么意义？","local":"7将-softmax激活函数应用于序列分类sequence-classification模型的-logits-输出有什么意义","sections":[],"depth":3},{"title":"8.大多数标记器(Tokenizer)的API以什么方法为核心？","local":"8大多数标记器tokenizer的api以什么方法为核心","sections":[],"depth":3},{"title":"9.这个代码示例中的 result 变量包含什么？","local":"9这个代码示例中的-result-变量包含什么","sections":[],"depth":3},{"title":"10.下面的代码有什么错误吗？","local":"10下面的代码有什么错误吗","sections":[],"depth":3},{"title":"10.下面的代码有什么错误吗？","local":"10下面的代码有什么错误吗","sections":[],"depth":3}],"depth":1}';function ve(w,i,d){let o="pt";return qe(()=>{const k=new URLSearchParams(window.location.search);d(0,o=k.get("fw")||"pt")}),[o]}class Ke extends je{constructor(i){super(),Ue(this,i,ve,Qe,Ze,{})}}export{Ke as component};
