import{s as je,o as Ue}from"../chunks/scheduler.37c15a92.js";import{S as xe,i as $e,g as h,s as o,r as J,A as we,h as g,f as n,c as m,j as ge,u as T,x as w,k as le,y as _e,a as r,v as k,t as y,b as Je,d as f,w as j,m as Ce,n as Ze,p as Te}from"../chunks/index.2bf4358c.js";import{T as We}from"../chunks/Tip.363c041f.js";import{C as A}from"../chunks/CodeBlock.4e987730.js";import{C as ke}from"../chunks/CourseFloatingBanner.6add7356.js";import{F as Ve}from"../chunks/FrameworkSwitchCourse.8d4d4ab6.js";import{H as Ne,E as ve}from"../chunks/getInferenceSnippets.1837c472.js";function ze(d){let s,c;return s=new ke({props:{chapter:4,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/th/chapter4/section2_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/th/chapter4/section2_tf.ipynb"}]}}),{c(){J(s.$$.fragment)},l(l){T(s.$$.fragment,l)},m(l,M){k(s,l,M),c=!0},i(l){c||(f(s.$$.fragment,l),c=!0)},o(l){y(s.$$.fragment,l),c=!1},d(l){j(s,l)}}}function Ee(d){let s,c;return s=new ke({props:{chapter:4,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/th/chapter4/section2_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/th/chapter4/section2_pt.ipynb"}]}}),{c(){J(s.$$.fragment)},l(l){T(s.$$.fragment,l)},m(l,M){k(s,l,M),c=!0},i(l){c||(f(s.$$.fragment,l),c=!0)},o(l){y(s.$$.fragment,l),c=!1},d(l){j(s,l)}}}function Qe(d){let s,c,l,M='อย่างไรก็ตาม เราแนะนำให้ใช้ <a href="https://huggingface.co/transformers/model_doc/auto.html?highlight=auto#auto-classes" rel="nofollow">คลาส <code>TFAuto*</code></a> แทน เพราะว่ามันเป็นคลาสที่สามารถใช้ได้กับสถาปัตยกรรมหลายประเภท (design architecture-agnostic) ในขณะที่โค้ดก่อนหน้านี้จำกัดผู้ใช้อยู่กับ checkpoints ที่สามารถโหลดได้เฉพาะกับสถาปัตยกรรมแบบ CamemBERT การใช้คลาส <code>TFAuto*</code> นั้นทำให้การเปลี่ยน checkpoints เป็นเรื่องง่าย:',u,p,b;return s=new A({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMENhbWVtYmVydFRva2VuaXplciUyQyUyMFRGQ2FtZW1iZXJ0Rm9yTWFza2VkTE0lMEElMEF0b2tlbml6ZXIlMjAlM0QlMjBDYW1lbWJlcnRUb2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKCUyMmNhbWVtYmVydC1iYXNlJTIyKSUwQW1vZGVsJTIwJTNEJTIwVEZDYW1lbWJlcnRGb3JNYXNrZWRMTS5mcm9tX3ByZXRyYWluZWQoJTIyY2FtZW1iZXJ0LWJhc2UlMjIp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> CamembertTokenizer, TFCamembertForMaskedLM

tokenizer = CamembertTokenizer.from_pretrained(<span class="hljs-string">&quot;camembert-base&quot;</span>)
model = TFCamembertForMaskedLM.from_pretrained(<span class="hljs-string">&quot;camembert-base&quot;</span>)`,wrap:!1}}),p=new A({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMkMlMjBURkF1dG9Nb2RlbEZvck1hc2tlZExNJTBBJTBBdG9rZW5pemVyJTIwJTNEJTIwQXV0b1Rva2VuaXplci5mcm9tX3ByZXRyYWluZWQoJTIyY2FtZW1iZXJ0LWJhc2UlMjIpJTBBbW9kZWwlMjAlM0QlMjBURkF1dG9Nb2RlbEZvck1hc2tlZExNLmZyb21fcHJldHJhaW5lZCglMjJjYW1lbWJlcnQtYmFzZSUyMik=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer, TFAutoModelForMaskedLM

tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;camembert-base&quot;</span>)
model = TFAutoModelForMaskedLM.from_pretrained(<span class="hljs-string">&quot;camembert-base&quot;</span>)`,wrap:!1}}),{c(){J(s.$$.fragment),c=o(),l=h("p"),l.innerHTML=M,u=o(),J(p.$$.fragment)},l(t){T(s.$$.fragment,t),c=m(t),l=g(t,"P",{"data-svelte-h":!0}),w(l)!=="svelte-o4d7kt"&&(l.innerHTML=M),u=m(t),T(p.$$.fragment,t)},m(t,i){k(s,t,i),r(t,c,i),r(t,l,i),r(t,u,i),k(p,t,i),b=!0},i(t){b||(f(s.$$.fragment,t),f(p.$$.fragment,t),b=!0)},o(t){y(s.$$.fragment,t),y(p.$$.fragment,t),b=!1},d(t){t&&(n(c),n(l),n(u)),j(s,t),j(p,t)}}}function Be(d){let s,c,l,M='อย่างไรก็ตาม เราแนะนำให้ใช้ <a href="https://huggingface.co/transformers/model_doc/auto.html?highlight=auto#auto-classes" rel="nofollow">คลาส <code>Auto*</code></a> แทน เพราะว่ามันเป็นคลาสที่สามารถใช้ได้กับสถาปัตยกรรมหลายประเภท (design architecture-agnostic) ในขณะที่โค้ดก่อนหน้านี้จำกัดผู้ใช้อยู่กับ checkpoints ที่สามารถโหลดได้เฉพาะกับสถาปัตยกรรมแบบ CamemBERT การใช้คลาส <code>Auto*</code> นั้นทำให้การเปลี่ยน checkpoints เป็นเรื่องง่าย:',u,p,b;return s=new A({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMENhbWVtYmVydFRva2VuaXplciUyQyUyMENhbWVtYmVydEZvck1hc2tlZExNJTBBJTBBdG9rZW5pemVyJTIwJTNEJTIwQ2FtZW1iZXJ0VG9rZW5pemVyLmZyb21fcHJldHJhaW5lZCglMjJjYW1lbWJlcnQtYmFzZSUyMiklMEFtb2RlbCUyMCUzRCUyMENhbWVtYmVydEZvck1hc2tlZExNLmZyb21fcHJldHJhaW5lZCglMjJjYW1lbWJlcnQtYmFzZSUyMik=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> CamembertTokenizer, CamembertForMaskedLM

tokenizer = CamembertTokenizer.from_pretrained(<span class="hljs-string">&quot;camembert-base&quot;</span>)
model = CamembertForMaskedLM.from_pretrained(<span class="hljs-string">&quot;camembert-base&quot;</span>)`,wrap:!1}}),p=new A({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMkMlMjBBdXRvTW9kZWxGb3JNYXNrZWRMTSUwQSUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKCUyMmNhbWVtYmVydC1iYXNlJTIyKSUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsRm9yTWFza2VkTE0uZnJvbV9wcmV0cmFpbmVkKCUyMmNhbWVtYmVydC1iYXNlJTIyKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer, AutoModelForMaskedLM

tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;camembert-base&quot;</span>)
model = AutoModelForMaskedLM.from_pretrained(<span class="hljs-string">&quot;camembert-base&quot;</span>)`,wrap:!1}}),{c(){J(s.$$.fragment),c=o(),l=h("p"),l.innerHTML=M,u=o(),J(p.$$.fragment)},l(t){T(s.$$.fragment,t),c=m(t),l=g(t,"P",{"data-svelte-h":!0}),w(l)!=="svelte-11adkgl"&&(l.innerHTML=M),u=m(t),T(p.$$.fragment,t)},m(t,i){k(s,t,i),r(t,c,i),r(t,l,i),r(t,u,i),k(p,t,i),b=!0},i(t){b||(f(s.$$.fragment,t),f(p.$$.fragment,t),b=!0)},o(t){y(s.$$.fragment,t),y(p.$$.fragment,t),b=!1},d(t){t&&(n(c),n(l),n(u)),j(s,t),j(p,t)}}}function Fe(d){let s;return{c(){s=Ce("เมื่อมีการใช้งานโมเดลที่ผ่านการเทรนมาแล้ว (pretrained model) คุณควรตรวจสอบให้มั่นใจว่ามันถูกเทรนมาอย่างไร กับชุดข้อมูลไหน ขีดจำกัด (limits) และความลำเอียง (biases) คืออะไร ซึ่งข้อมูลทั้งหมดนี้ควรถูกระบุอยู่ในการ์ดโมเดล (model card)")},l(c){s=Ze(c,"เมื่อมีการใช้งานโมเดลที่ผ่านการเทรนมาแล้ว (pretrained model) คุณควรตรวจสอบให้มั่นใจว่ามันถูกเทรนมาอย่างไร กับชุดข้อมูลไหน ขีดจำกัด (limits) และความลำเอียง (biases) คืออะไร ซึ่งข้อมูลทั้งหมดนี้ควรถูกระบุอยู่ในการ์ดโมเดล (model card)")},m(c,l){r(c,s,l)},d(c){c&&n(s)}}}function Ge(d){let s,c,l,M,u,p,b,t,i,U,I,W,re="Model Hub ทำให้การเลือกใช้โมเดลที่เหมาะสมเป็นเรื่องง่ายขนาดที่ว่า การใช้งานมันคู่กับ library ปลายน้ำสามารถเสร็จได้ในการใช้โค้ดเพียงไม่กี่บรรทัดเท่านั้น มาดูวิธีใช้โมเดลพวกนี้และการให้ความช่วยเหลือกับชุมชนกันดีกว่า",S,V,ce="สมมุติว่าเรากำลังมองหาโมเดลภาษาฝรั่งเศสที่สามารถเติมคำที่หายไปได้ (mask filling)",R,_,ie='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/camembert.gif" alt="Selecting the Camembert model." width="80%"/>',L,N,oe="เราเลือก <code>camembert-base</code> checkpoint มาลองใช้ ตัวระบุ <code>camembert-base</code> คือทั้งหมดที่เราต้องการในการเริ่มใช้งาน! อย่างที่คุณได้เห็นไปแล้วในบทก่อนหน้านี้ เราสามารถเรียกใช้งานมันได้ด้วยคำสั่ง <code>pipeline()</code>:",H,v,q,z,D,E,me="อย่างที่คุณเห็น การโหลดโมเดลใน pipeline นั้นง่ายมากๆ สิ่งเดียวที่ควรระวังคือ checkpoint ที่คุณเลือกนั้นควรเหมาะสมกับประเภทของงานที่คุณจะทำ อย่างเช่น ในงานนี้เราโหลด <code>camembert-base</code> checkpoint ใน <code>fill-mask</code> pipeline ซึ่งเหมาะกับงานที่เราจะใช้อย่างแน่นอน แต่ถ้าเราโหลด checkpoint นี้ใน <code>text-classification</code> pipeline ผลลัพธ์จะไม่สมเหตุสมผล เพราะหัวข้อของ <code>camembert-base</code> ไม่เหมาะสมกับงานประเภทนี้! เราแนะนำให้ใช้ตัวเลือกประเภทงาน (task selector) ในอินเตอร์เฟซของ Hugging Face Hub เพื่อเลือก checkpoints ที่เหมาะสม",P,C,pe='<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter4/tasks.png" alt="The task selector on the web interface." width="80%"/>',K,Q,ue="คุณสามารถเรียกใช้ checkpoint โดยการใช้สถาปัตยกรรมโมเดล (model architecture) ได้โดยตรงด้วย:",O,x,$,Y,Z,ee,B,te,X,se;u=new Ve({props:{fw:d[0]}}),b=new Ne({props:{title:"การใช้งานโมเดลที่ผ่านการเทรนมาแล้ว (pretrained models)",local:"การใชงานโมเดลทผานการเทรนมาแลว-pretrained-models",headingTag:"h1"}});const be=[Ee,ze],F=[];function Me(e,a){return e[0]==="pt"?0:1}i=Me(d),U=F[i]=be[i](d),v=new A({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMHBpcGVsaW5lJTBBJTBBY2FtZW1iZXJ0X2ZpbGxfbWFzayUyMCUzRCUyMHBpcGVsaW5lKCUyMmZpbGwtbWFzayUyMiUyQyUyMG1vZGVsJTNEJTIyY2FtZW1iZXJ0LWJhc2UlMjIpJTBBcmVzdWx0cyUyMCUzRCUyMGNhbWVtYmVydF9maWxsX21hc2soJTIyTGUlMjBjYW1lbWJlcnQlMjBlc3QlMjAlM0NtYXNrJTNFJTIwJTNBKSUyMik=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline

camembert_fill_mask = pipeline(<span class="hljs-string">&quot;fill-mask&quot;</span>, model=<span class="hljs-string">&quot;camembert-base&quot;</span>)
results = camembert_fill_mask(<span class="hljs-string">&quot;Le camembert est &lt;mask&gt; :)&quot;</span>)`,wrap:!1}}),z=new A({props:{code:"JTVCJTBBJTIwJTIwJTdCJ3NlcXVlbmNlJyUzQSUyMCdMZSUyMGNhbWVtYmVydCUyMGVzdCUyMGQlQzMlQTlsaWNpZXV4JTIwJTNBKSclMkMlMjAnc2NvcmUnJTNBJTIwMC40OTA5MTAwNTMyNTMxNzM4MyUyQyUyMCd0b2tlbiclM0ElMjA3MjAwJTJDJTIwJ3Rva2VuX3N0ciclM0ElMjAnZCVDMyVBOWxpY2lldXgnJTdEJTJDJTIwJTBBJTIwJTIwJTdCJ3NlcXVlbmNlJyUzQSUyMCdMZSUyMGNhbWVtYmVydCUyMGVzdCUyMGV4Y2VsbGVudCUyMCUzQSknJTJDJTIwJ3Njb3JlJyUzQSUyMDAuMTA1NTY5NzQyNjE5OTkxMyUyQyUyMCd0b2tlbiclM0ElMjAyMTgzJTJDJTIwJ3Rva2VuX3N0ciclM0ElMjAnZXhjZWxsZW50JyU3RCUyQyUyMCUwQSUyMCUyMCU3QidzZXF1ZW5jZSclM0ElMjAnTGUlMjBjYW1lbWJlcnQlMjBlc3QlMjBzdWNjdWxlbnQlMjAlM0EpJyUyQyUyMCdzY29yZSclM0ElMjAwLjAzNDUzMzEzMTg2NzY0NzE3JTJDJTIwJ3Rva2VuJyUzQSUyMDI2MjAyJTJDJTIwJ3Rva2VuX3N0ciclM0ElMjAnc3VjY3VsZW50JyU3RCUyQyUyMCUwQSUyMCUyMCU3QidzZXF1ZW5jZSclM0ElMjAnTGUlMjBjYW1lbWJlcnQlMjBlc3QlMjBtZWlsbGV1ciUyMCUzQSknJTJDJTIwJ3Njb3JlJyUzQSUyMDAuMDMzMDMxNDExNDY4OTgyNyUyQyUyMCd0b2tlbiclM0ElMjA1MjglMkMlMjAndG9rZW5fc3RyJyUzQSUyMCdtZWlsbGV1ciclN0QlMkMlMjAlMEElMjAlMjAlN0Inc2VxdWVuY2UnJTNBJTIwJ0xlJTIwY2FtZW1iZXJ0JTIwZXN0JTIwcGFyZmFpdCUyMCUzQSknJTJDJTIwJ3Njb3JlJyUzQSUyMDAuMDMwMDc2NTAxODkxMDE2OTYlMkMlMjAndG9rZW4nJTNBJTIwMTY1NCUyQyUyMCd0b2tlbl9zdHInJTNBJTIwJ3BhcmZhaXQnJTdEJTBBJTVE",highlighted:`[
  {<span class="hljs-string">&#x27;sequence&#x27;</span>: <span class="hljs-string">&#x27;Le camembert est délicieux :)&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.49091005325317383</span>, <span class="hljs-string">&#x27;token&#x27;</span>: <span class="hljs-number">7200</span>, <span class="hljs-string">&#x27;token_str&#x27;</span>: <span class="hljs-string">&#x27;délicieux&#x27;</span>}, 
  {<span class="hljs-string">&#x27;sequence&#x27;</span>: <span class="hljs-string">&#x27;Le camembert est excellent :)&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.1055697426199913</span>, <span class="hljs-string">&#x27;token&#x27;</span>: <span class="hljs-number">2183</span>, <span class="hljs-string">&#x27;token_str&#x27;</span>: <span class="hljs-string">&#x27;excellent&#x27;</span>}, 
  {<span class="hljs-string">&#x27;sequence&#x27;</span>: <span class="hljs-string">&#x27;Le camembert est succulent :)&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.03453313186764717</span>, <span class="hljs-string">&#x27;token&#x27;</span>: <span class="hljs-number">26202</span>, <span class="hljs-string">&#x27;token_str&#x27;</span>: <span class="hljs-string">&#x27;succulent&#x27;</span>}, 
  {<span class="hljs-string">&#x27;sequence&#x27;</span>: <span class="hljs-string">&#x27;Le camembert est meilleur :)&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.0330314114689827</span>, <span class="hljs-string">&#x27;token&#x27;</span>: <span class="hljs-number">528</span>, <span class="hljs-string">&#x27;token_str&#x27;</span>: <span class="hljs-string">&#x27;meilleur&#x27;</span>}, 
  {<span class="hljs-string">&#x27;sequence&#x27;</span>: <span class="hljs-string">&#x27;Le camembert est parfait :)&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.03007650189101696</span>, <span class="hljs-string">&#x27;token&#x27;</span>: <span class="hljs-number">1654</span>, <span class="hljs-string">&#x27;token_str&#x27;</span>: <span class="hljs-string">&#x27;parfait&#x27;</span>}
]`,wrap:!1}});const ye=[Be,Qe],G=[];function fe(e,a){return e[0]==="pt"?0:1}return x=fe(d),$=G[x]=ye[x](d),Z=new We({props:{$$slots:{default:[Fe]},$$scope:{ctx:d}}}),B=new ve({props:{source:"https://github.com/huggingface/course/blob/main/chapters/th/chapter4/2.mdx"}}),{c(){s=h("meta"),c=o(),l=h("p"),M=o(),J(u.$$.fragment),p=o(),J(b.$$.fragment),t=o(),U.c(),I=o(),W=h("p"),W.textContent=re,S=o(),V=h("p"),V.textContent=ce,R=o(),_=h("div"),_.innerHTML=ie,L=o(),N=h("p"),N.innerHTML=oe,H=o(),J(v.$$.fragment),q=o(),J(z.$$.fragment),D=o(),E=h("p"),E.innerHTML=me,P=o(),C=h("div"),C.innerHTML=pe,K=o(),Q=h("p"),Q.textContent=ue,O=o(),$.c(),Y=o(),J(Z.$$.fragment),ee=o(),J(B.$$.fragment),te=o(),X=h("p"),this.h()},l(e){const a=we("svelte-u9bgzb",document.head);s=g(a,"META",{name:!0,content:!0}),a.forEach(n),c=m(e),l=g(e,"P",{}),ge(l).forEach(n),M=m(e),T(u.$$.fragment,e),p=m(e),T(b.$$.fragment,e),t=m(e),U.l(e),I=m(e),W=g(e,"P",{"data-svelte-h":!0}),w(W)!=="svelte-cciipp"&&(W.textContent=re),S=m(e),V=g(e,"P",{"data-svelte-h":!0}),w(V)!=="svelte-12xbsc3"&&(V.textContent=ce),R=m(e),_=g(e,"DIV",{class:!0,"data-svelte-h":!0}),w(_)!=="svelte-4k6hvy"&&(_.innerHTML=ie),L=m(e),N=g(e,"P",{"data-svelte-h":!0}),w(N)!=="svelte-sx7m40"&&(N.innerHTML=oe),H=m(e),T(v.$$.fragment,e),q=m(e),T(z.$$.fragment,e),D=m(e),E=g(e,"P",{"data-svelte-h":!0}),w(E)!=="svelte-ig1uuj"&&(E.innerHTML=me),P=m(e),C=g(e,"DIV",{class:!0,"data-svelte-h":!0}),w(C)!=="svelte-1cl7xbt"&&(C.innerHTML=pe),K=m(e),Q=g(e,"P",{"data-svelte-h":!0}),w(Q)!=="svelte-rnw1cq"&&(Q.textContent=ue),O=m(e),$.l(e),Y=m(e),T(Z.$$.fragment,e),ee=m(e),T(B.$$.fragment,e),te=m(e),X=g(e,"P",{}),ge(X).forEach(n),this.h()},h(){le(s,"name","hf:doc:metadata"),le(s,"content",Ie),le(_,"class","flex justify-center"),le(C,"class","flex justify-center")},m(e,a){_e(document.head,s),r(e,c,a),r(e,l,a),r(e,M,a),k(u,e,a),r(e,p,a),k(b,e,a),r(e,t,a),F[i].m(e,a),r(e,I,a),r(e,W,a),r(e,S,a),r(e,V,a),r(e,R,a),r(e,_,a),r(e,L,a),r(e,N,a),r(e,H,a),k(v,e,a),r(e,q,a),k(z,e,a),r(e,D,a),r(e,E,a),r(e,P,a),r(e,C,a),r(e,K,a),r(e,Q,a),r(e,O,a),G[x].m(e,a),r(e,Y,a),k(Z,e,a),r(e,ee,a),k(B,e,a),r(e,te,a),r(e,X,a),se=!0},p(e,[a]){const de={};a&1&&(de.fw=e[0]),u.$set(de);let ae=i;i=Me(e),i!==ae&&(Te(),y(F[ae],1,1,()=>{F[ae]=null}),Je(),U=F[i],U||(U=F[i]=be[i](e),U.c()),f(U,1),U.m(I.parentNode,I));let ne=x;x=fe(e),x!==ne&&(Te(),y(G[ne],1,1,()=>{G[ne]=null}),Je(),$=G[x],$||($=G[x]=ye[x](e),$.c()),f($,1),$.m(Y.parentNode,Y));const he={};a&2&&(he.$$scope={dirty:a,ctx:e}),Z.$set(he)},i(e){se||(f(u.$$.fragment,e),f(b.$$.fragment,e),f(U),f(v.$$.fragment,e),f(z.$$.fragment,e),f($),f(Z.$$.fragment,e),f(B.$$.fragment,e),se=!0)},o(e){y(u.$$.fragment,e),y(b.$$.fragment,e),y(U),y(v.$$.fragment,e),y(z.$$.fragment,e),y($),y(Z.$$.fragment,e),y(B.$$.fragment,e),se=!1},d(e){e&&(n(c),n(l),n(M),n(p),n(t),n(I),n(W),n(S),n(V),n(R),n(_),n(L),n(N),n(H),n(q),n(D),n(E),n(P),n(C),n(K),n(Q),n(O),n(Y),n(ee),n(te),n(X)),n(s),j(u,e),j(b,e),F[i].d(e),j(v,e),j(z,e),G[x].d(e),j(Z,e),j(B,e)}}}const Ie='{"title":"การใช้งานโมเดลที่ผ่านการเทรนมาแล้ว (pretrained models)","local":"การใชงานโมเดลทผานการเทรนมาแลว-pretrained-models","sections":[],"depth":1}';function Ye(d,s,c){let l="pt";return Ue(()=>{const M=new URLSearchParams(window.location.search);c(0,l=M.get("fw")||"pt")}),[l]}class De extends xe{constructor(s){super(),$e(this,s,Ye,Ge,je,{})}}export{De as component};
