import{s as le,o as ee}from"../chunks/scheduler.37c15a92.js";import{S as se,i as te,g as u,s as J,r as i,A as ne,h as j,f as t,c as U,j as Dl,u as M,x as w,k as Hl,y as ae,a as n,v as r,t as o,b as Pl,d as T,w as c,p as Ll}from"../chunks/index.2bf4358c.js";import{C as I}from"../chunks/CodeBlock.4f5fc1ad.js";import{C as Kl}from"../chunks/CourseFloatingBanner.15ba07e6.js";import{F as Je}from"../chunks/FrameworkSwitchCourse.8d4d4ab6.js";import{H as Zl}from"../chunks/Heading.8ada512a.js";function Ue(b){let a,p;return a=new Kl({props:{chapter:2,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/chapter2/section6_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/th/chapter2/section6_tf.ipynb"}]}}),{c(){i(a.$$.fragment)},l(s){M(a.$$.fragment,s)},m(s,m){r(a,s,m),p=!0},i(s){p||(T(a.$$.fragment,s),p=!0)},o(s){o(a.$$.fragment,s),p=!1},d(s){c(a,s)}}}function pe(b){let a,p;return a=new Kl({props:{chapter:2,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/chapter2/section6_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/th/chapter2/section6_pt.ipynb"}]}}),{c(){i(a.$$.fragment)},l(s){M(a.$$.fragment,s)},m(s,m){r(a,s,m),p=!0},i(s){p||(T(a.$$.fragment,s),p=!0)},o(s){o(a.$$.fragment,s),p=!1},d(s){c(a,s)}}}function oe(b){let a,p;return a=new I({props:{code:"aW1wb3J0JTIwdGVuc29yZmxvdyUyMGFzJTIwdGYlMEFmcm9tJTIwdHJhbnNmb3JtZXJzJTIwaW1wb3J0JTIwQXV0b1Rva2VuaXplciUyQyUyMFRGQXV0b01vZGVsRm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbiUwQSUwQWNoZWNrcG9pbnQlMjAlM0QlMjAlMjJkaXN0aWxiZXJ0LWJhc2UtdW5jYXNlZC1maW5ldHVuZWQtc3N0LTItZW5nbGlzaCUyMiUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBbW9kZWwlMjAlM0QlMjBURkF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24uZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBc2VxdWVuY2VzJTIwJTNEJTIwJTVCJTIySSd2ZSUyMGJlZW4lMjB3YWl0aW5nJTIwZm9yJTIwYSUyMEh1Z2dpbmdGYWNlJTIwY291cnNlJTIwbXklMjB3aG9sZSUyMGxpZmUuJTIyJTJDJTIwJTIyU28lMjBoYXZlJTIwSSElMjIlNUQlMEElMEF0b2tlbnMlMjAlM0QlMjB0b2tlbml6ZXIoc2VxdWVuY2VzJTJDJTIwcGFkZGluZyUzRFRydWUlMkMlMjB0cnVuY2F0aW9uJTNEVHJ1ZSUyQyUyMHJldHVybl90ZW5zb3JzJTNEJTIydGYlMjIpJTBBb3V0cHV0JTIwJTNEJTIwbW9kZWwoKip0b2tlbnMp",highlighted:`<span class="hljs-keyword">import</span> tensorflow <span class="hljs-keyword">as</span> tf
<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer, TFAutoModelForSequenceClassification

checkpoint = <span class="hljs-string">&quot;distilbert-base-uncased-finetuned-sst-2-english&quot;</span>
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = TFAutoModelForSequenceClassification.from_pretrained(checkpoint)
sequences = [<span class="hljs-string">&quot;I&#x27;ve been waiting for a HuggingFace course my whole life.&quot;</span>, <span class="hljs-string">&quot;So have I!&quot;</span>]

tokens = tokenizer(sequences, padding=<span class="hljs-literal">True</span>, truncation=<span class="hljs-literal">True</span>, return_tensors=<span class="hljs-string">&quot;tf&quot;</span>)
output = model(**tokens)`,wrap:!1}}),{c(){i(a.$$.fragment)},l(s){M(a.$$.fragment,s)},m(s,m){r(a,s,m),p=!0},i(s){p||(T(a.$$.fragment,s),p=!0)},o(s){o(a.$$.fragment,s),p=!1},d(s){c(a,s)}}}function Te(b){let a,p;return a=new I({props:{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwdHJhbnNmb3JtZXJzJTIwaW1wb3J0JTIwQXV0b1Rva2VuaXplciUyQyUyMEF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24lMEElMEFjaGVja3BvaW50JTIwJTNEJTIwJTIyZGlzdGlsYmVydC1iYXNlLXVuY2FzZWQtZmluZXR1bmVkLXNzdC0yLWVuZ2xpc2glMjIlMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KSUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsRm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbi5mcm9tX3ByZXRyYWluZWQoY2hlY2twb2ludCklMEFzZXF1ZW5jZXMlMjAlM0QlMjAlNUIlMjJJJ3ZlJTIwYmVlbiUyMHdhaXRpbmclMjBmb3IlMjBhJTIwSHVnZ2luZ0ZhY2UlMjBjb3Vyc2UlMjBteSUyMHdob2xlJTIwbGlmZS4lMjIlMkMlMjAlMjJTbyUyMGhhdmUlMjBJISUyMiU1RCUwQSUwQXRva2VucyUyMCUzRCUyMHRva2VuaXplcihzZXF1ZW5jZXMlMkMlMjBwYWRkaW5nJTNEVHJ1ZSUyQyUyMHRydW5jYXRpb24lM0RUcnVlJTJDJTIwcmV0dXJuX3RlbnNvcnMlM0QlMjJwdCUyMiklMEFvdXRwdXQlMjAlM0QlMjBtb2RlbCgqKnRva2Vucyk=",highlighted:`<span class="hljs-keyword">import</span> torch
<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer, AutoModelForSequenceClassification

checkpoint = <span class="hljs-string">&quot;distilbert-base-uncased-finetuned-sst-2-english&quot;</span>
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForSequenceClassification.from_pretrained(checkpoint)
sequences = [<span class="hljs-string">&quot;I&#x27;ve been waiting for a HuggingFace course my whole life.&quot;</span>, <span class="hljs-string">&quot;So have I!&quot;</span>]

tokens = tokenizer(sequences, padding=<span class="hljs-literal">True</span>, truncation=<span class="hljs-literal">True</span>, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)
output = model(**tokens)`,wrap:!1}}),{c(){i(a.$$.fragment)},l(s){M(a.$$.fragment,s)},m(s,m){r(a,s,m),p=!0},i(s){p||(T(a.$$.fragment,s),p=!0)},o(s){o(a.$$.fragment,s),p=!1},d(s){c(a,s)}}}function ie(b){let a,p,s,m,Q,sl,d,tl,y,g,K,f,Al="ในสองสาม sections ที่ผ่านมา เราได้พยายามทำทุกอย่างด้วยมือของเราเอง เราได้ลองศึกษาว่า tokenizer นั้นทำงานอย่างไรและวิธีการ tokenization, แปลงข้อมูลไปเป็น input IDs, การเติม(padding), การตัด(truncation), และ attention masks",nl,k,$l="อย่างไรก็ตาม เหมือนที่เราเห็นใน section 2, 🤗 Transformers API นั้นสามารถจัดการกับสิ่งต่างๆเหล่านั้นให้เราได้ด้วย high-level ฟังก์ชันที่เราจะลงลึงในรายละเอียดกันในที่นี่ เมื่อคุณเรียกใช้งาน <code>tokenizer</code> ของคุณตรงๆกับประโยคหนึ่งๆ, คุณได้อินพุตที่พร้อมจะใส่เข้าไปยังโมเดลกลับมา:",al,h,Jl,R,El="ในที่นี้ ตัวแปร <code>model_inputs</code> นั้นประกอบด้วยทุกอย่างที่จำเป็นสำหรับโมเดลที่จะทำงานได้เป็นอย่างดี สำหรับ DistilBERT นั้นรวมไปถึง input IDs และ attention mask ด้วย ส่วนโมเดลอื่นๆที่รองรับอินพุตต่างๆเพิ่มเติมก็จะได้ผลลัพท์เหล่านั้นจาก <code>tokenizer</code> object ด้วย",Ul,Z,Wl="อย่างที่เราจะได้เห็นในบางตัวอย่างด้านล่างนี้ วิธีนี้เป็นวิธีที่ทรงพลังมาก อันดับแรก มันสามารถที่จะ tokenize ประโยคเพียงประโยคเดียวได้:",pl,A,ol,$,Nl="มันยังสามารถจัดการกับประโยคหลายๆประโยคได้ในคราวเดียวกัน โดยที่ไม่มีอะไรเปลี่ยนใน  API เลย:",Tl,E,il,W,Fl="มันสามารถที่จะเติม(padding) ให้สอดคล้องกับหลายๆวัตถุประสงค์:",Ml,N,rl,F,Bl="มันสามารถตัดประโยคได้อีกด้วย:",cl,B,ul,S,Sl="<code>tokenizer</code> object สามารถที่จะจัดการกับการแปลงข้อมูลไปเป็น tensors สำหรับ framework ที่เฉพาะเจาะจงได้ ซึ่งสามารถที่จะส่งเข้าโมเดลได้ทันที ยกตัวอย่างเช่น ในโค้ดตัวอย่างต่อไปนี้ เราจะสั่งให้ tokenizer ส่ง tensors จาก frameworks ต่างๆ กัน — <code>&quot;pt&quot;</code> ให้ PyTorch tensors, <code>&quot;tf&quot;</code> ให้ TensorFlow tensors, and <code>&quot;np&quot;</code> ให้ NumPy arrays:",jl,z,ml,_,wl,O,zl="ถ้าเราดูที่ input IDs ที่ได้จาก tokenizer เราจะเห็นได้ว่ามันค่อนข้างแตกต่างไปจากสิ่งที่เราเคยได้ก่อนหน้านี้:",Il,X,bl,G,yl,x,_l="มีหนึ่ง token ID ได้ถูกใส่เข้ามาด้านหน้าสุด และอีกหนึ่ง token ID ใส่ด้านหลังสุด มาถอดรหัสสองประโยคของ IDs ด้านบนดูว่ามันเกี่ยกับอะไร:",gl,q,Vl,v,Cl,Y,Ol="tokenizer ทำการเพิ่มคำพิเศษ <code>[CLS]</code> ที่ด้านหน้าสุด และคำพิเศษ <code>[SEP]</code> ที่ด้านหลังสุด นั้นก็เพราะว่าโมเดลนั้นได้ผ่านการเทรนมาแบบนั้น ดังนั้นเพื่อให้ได้ผลลัพท์เดียวกันสำหรับการอนุมาน(inference) เราจำเป็นต้องเพิ่มมันเข้าไปเช่นเดียวกัน แต่ก็ต้องตระหนักว่าบางโมเดลนั้นไม่ได้เพิ่มคำพิเศษ หรือ ใส่คำที่ต่างออกไป; โมเดลอาจจะเพิ่มคำพิเศษเหล่านี้แค่เฉพาะด้านหน้าสุด หรือ ด้านหลังสุดเท่านั้น ไม่ว่าจะในกรณีใดๆ tokenizer รู้ว่าอันไหนเป็นอันที่ต้องการและมันจะจัดการให้คุณเอง:",Ql,D,dl,H,Xl="ถึงตรงนี้เราได้เห็นขั้นตอนแต่ละอย่างทั้งหมดที่ <code>tokenizer</code> ใช้เพื่อประมวลผลข้อความ เรามาดูกันครั้งสุดท้ายว่ามันสามารถจัดการประโยคหลายๆประโยค (padding!), ประโยคยาวๆ, และ tensors หลายๆ ประเภทได้อย่างไรด้วย API หลักของมัน:",fl,V,C,ll,el,kl;Q=new Je({props:{fw:b[0]}}),d=new Zl({props:{title:"ประกอบทุกอย่างเข้าด้วยกัน",local:"ประกอบทกอยางเขาดวยกน",headingTag:"h1"}});const Gl=[pe,Ue],P=[];function xl(l,e){return l[0]==="pt"?0:1}y=xl(b),g=P[y]=Gl[y](b),h=new I({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEElMEFjaGVja3BvaW50JTIwJTNEJTIwJTIyZGlzdGlsYmVydC1iYXNlLXVuY2FzZWQtZmluZXR1bmVkLXNzdC0yLWVuZ2xpc2glMjIlMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KSUwQSUwQXNlcXVlbmNlJTIwJTNEJTIwJTIySSd2ZSUyMGJlZW4lMjB3YWl0aW5nJTIwZm9yJTIwYSUyMEh1Z2dpbmdGYWNlJTIwY291cnNlJTIwbXklMjB3aG9sZSUyMGxpZmUuJTIyJTBBJTBBbW9kZWxfaW5wdXRzJTIwJTNEJTIwdG9rZW5pemVyKHNlcXVlbmNlKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer

checkpoint = <span class="hljs-string">&quot;distilbert-base-uncased-finetuned-sst-2-english&quot;</span>
tokenizer = AutoTokenizer.from_pretrained(checkpoint)

sequence = <span class="hljs-string">&quot;I&#x27;ve been waiting for a HuggingFace course my whole life.&quot;</span>

model_inputs = tokenizer(sequence)`,wrap:!1}}),A=new I({props:{code:"c2VxdWVuY2UlMjAlM0QlMjAlMjJJJ3ZlJTIwYmVlbiUyMHdhaXRpbmclMjBmb3IlMjBhJTIwSHVnZ2luZ0ZhY2UlMjBjb3Vyc2UlMjBteSUyMHdob2xlJTIwbGlmZS4lMjIlMEElMEFtb2RlbF9pbnB1dHMlMjAlM0QlMjB0b2tlbml6ZXIoc2VxdWVuY2Up",highlighted:`sequence = <span class="hljs-string">&quot;I&#x27;ve been waiting for a HuggingFace course my whole life.&quot;</span>

model_inputs = tokenizer(sequence)`,wrap:!1}}),E=new I({props:{code:"c2VxdWVuY2VzJTIwJTNEJTIwJTVCJTIySSd2ZSUyMGJlZW4lMjB3YWl0aW5nJTIwZm9yJTIwYSUyMEh1Z2dpbmdGYWNlJTIwY291cnNlJTIwbXklMjB3aG9sZSUyMGxpZmUuJTIyJTJDJTIwJTIyU28lMjBoYXZlJTIwSSElMjIlNUQlMEElMEFtb2RlbF9pbnB1dHMlMjAlM0QlMjB0b2tlbml6ZXIoc2VxdWVuY2VzKQ==",highlighted:`sequences = [<span class="hljs-string">&quot;I&#x27;ve been waiting for a HuggingFace course my whole life.&quot;</span>, <span class="hljs-string">&quot;So have I!&quot;</span>]

model_inputs = tokenizer(sequences)`,wrap:!1}}),N=new I({props:{code:"JTIzJTIwJUUwJUI4JTg4JUUwJUI4JUIwJUUwJUI5JTgwJUUwJUI4JTk1JUUwJUI4JUI0JUUwJUI4JUExJUUwJUI4JTlCJUUwJUI4JUEzJUUwJUI4JUIwJUUwJUI5JTgyJUUwJUI4JUEyJUUwJUI4JTg0JUUwJUI5JTg0JUUwJUI4JTlCJUUwJUI4JTg4JUUwJUI4JTk5JUUwJUI4JTk2JUUwJUI4JUI2JUUwJUI4JTg3JUUwJUI4JTg0JUUwJUI4JUE3JUUwJUI4JUIyJUUwJUI4JUExJUUwJUI4JUEyJUUwJUI4JUIyJUUwJUI4JUE3JUUwJUI4JTk3JUUwJUI4JUI1JUUwJUI5JTg4JUUwJUI4JUEyJUUwJUI4JUIyJUUwJUI4JUE3JUUwJUI4JTk3JUUwJUI4JUI1JUUwJUI5JTg4JUUwJUI4JUFBJUUwJUI4JUI4JUUwJUI4JTk0JUUwJUI4JTgyJUUwJUI4JUFEJUUwJUI4JTg3JUUwJUI4JTlCJUUwJUI4JUEzJUUwJUI4JUIwJUUwJUI5JTgyJUUwJUI4JUEyJUUwJUI4JTg0JTBBbW9kZWxfaW5wdXRzJTIwJTNEJTIwdG9rZW5pemVyKHNlcXVlbmNlcyUyQyUyMHBhZGRpbmclM0QlMjJsb25nZXN0JTIyKSUwQSUwQSUyMyUyMCVFMCVCOCU4OCVFMCVCOCVCMCVFMCVCOSU4MCVFMCVCOCU5NSVFMCVCOCVCNCVFMCVCOCVBMSVFMCVCOCU5QiVFMCVCOCVBMyVFMCVCOCVCMCVFMCVCOSU4MiVFMCVCOCVBMiVFMCVCOCU4NCVFMCVCOSU4NCVFMCVCOCU5QiVFMCVCOCU4OCVFMCVCOCU5OSVFMCVCOCU5NiVFMCVCOCVCNiVFMCVCOCU4NyVFMCVCOCU4NCVFMCVCOCVBNyVFMCVCOCVCMiVFMCVCOCVBMSVFMCVCOCVBMiVFMCVCOCVCMiVFMCVCOCVBNyVFMCVCOCU5NyVFMCVCOCVCNSVFMCVCOSU4OCVFMCVCOCVBMiVFMCVCOCVCMiVFMCVCOCVBNyVFMCVCOCU5NyVFMCVCOCVCNSVFMCVCOSU4OCVFMCVCOCVBQSVFMCVCOCVCOCVFMCVCOCU5NCVFMCVCOCU5NyVFMCVCOCVCNSVFMCVCOSU4OCVFMCVCOSU4MiVFMCVCOCVBMSVFMCVCOSU4MCVFMCVCOCU5NCVFMCVCOCVBNSVFMCVCOCVBMyVFMCVCOCVCMSVFMCVCOCU5QSVFMCVCOSU4NCVFMCVCOCU5NCVFMCVCOSU4OSUwQSUyMyUyMCg1MTIlMjBmb3IlMjBCRVJUJTIwb3IlMjBEaXN0aWxCRVJUKSUwQW1vZGVsX2lucHV0cyUyMCUzRCUyMHRva2VuaXplcihzZXF1ZW5jZXMlMkMlMjBwYWRkaW5nJTNEJTIybWF4X2xlbmd0aCUyMiklMEElMEElMjMlMjAlRTAlQjglODglRTAlQjglQjAlRTAlQjklODAlRTAlQjglOTUlRTAlQjglQjQlRTAlQjglQTElRTAlQjglOUIlRTAlQjglQTMlRTAlQjglQjAlRTAlQjklODIlRTAlQjglQTIlRTAlQjglODQlRTAlQjklODQlRTAlQjglOUIlRTAlQjglODglRTAlQjglOTklRTAlQjglOTYlRTAlQjglQjYlRTAlQjglODclRTAlQjglODQlRTAlQjglQTclRTAlQjglQjIlRTAlQjglQTElRTAlQjglQTIlRTAlQjglQjIlRTAlQjglQTclRTAlQjglOTclRTAlQjglQjUlRTAlQjklODglRTAlQjglQTIlRTAlQjglQjIlRTAlQjglQTclRTAlQjglOTclRTAlQjglQjUlRTAlQjklODglRTAlQjglQUElRTAlQjglQjglRTAlQjglOTQlRTAlQjglOTclRTAlQjglQjUlRTAlQjklODglRTAlQjglQTMlRTAlQjglQjAlRTAlQjglOUElRTAlQjglQjglRTAlQjklODQlRTAlQjglQTclRTAlQjklODklMEFtb2RlbF9pbnB1dHMlMjAlM0QlMjB0b2tlbml6ZXIoc2VxdWVuY2VzJTJDJTIwcGFkZGluZyUzRCUyMm1heF9sZW5ndGglMjIlMkMlMjBtYXhfbGVuZ3RoJTNEOCk=",highlighted:`<span class="hljs-comment"># จะเติมประโยคไปจนถึงความยาวที่ยาวที่สุดของประโยค</span>
model_inputs = tokenizer(sequences, padding=<span class="hljs-string">&quot;longest&quot;</span>)

<span class="hljs-comment"># จะเติมประโยคไปจนถึงความยาวที่ยาวที่สุดที่โมเดลรับได้</span>
<span class="hljs-comment"># (512 for BERT or DistilBERT)</span>
model_inputs = tokenizer(sequences, padding=<span class="hljs-string">&quot;max_length&quot;</span>)

<span class="hljs-comment"># จะเติมประโยคไปจนถึงความยาวที่ยาวที่สุดที่ระบุไว้</span>
model_inputs = tokenizer(sequences, padding=<span class="hljs-string">&quot;max_length&quot;</span>, max_length=<span class="hljs-number">8</span>)`,wrap:!1}}),B=new I({props:{code:"c2VxdWVuY2VzJTIwJTNEJTIwJTVCJTIySSd2ZSUyMGJlZW4lMjB3YWl0aW5nJTIwZm9yJTIwYSUyMEh1Z2dpbmdGYWNlJTIwY291cnNlJTIwbXklMjB3aG9sZSUyMGxpZmUuJTIyJTJDJTIwJTIyU28lMjBoYXZlJTIwSSElMjIlNUQlMEElMEElMjMlMjAlRTAlQjglODglRTAlQjglQjAlRTAlQjglOTUlRTAlQjglQjElRTAlQjglOTQlRTAlQjglOUIlRTAlQjglQTMlRTAlQjglQjAlRTAlQjklODIlRTAlQjglQTIlRTAlQjglODQlRTAlQjglOTclRTAlQjglQjUlRTAlQjklODglRTAlQjglQTElRTAlQjglQjUlRTAlQjglODQlRTAlQjglQTclRTAlQjglQjIlRTAlQjglQTElRTAlQjglQTIlRTAlQjglQjIlRTAlQjglQTclRTAlQjklODAlRTAlQjglODElRTAlQjglQjQlRTAlQjglOTklRTAlQjglODElRTAlQjglQTclRTAlQjklODglRTAlQjglQjIlRTAlQjglODQlRTAlQjglQTclRTAlQjglQjIlRTAlQjglQTElRTAlQjglQTIlRTAlQjglQjIlRTAlQjglQTclRTAlQjglOTclRTAlQjglQjUlRTAlQjklODglRTAlQjklODIlRTAlQjglQTElRTAlQjklODAlRTAlQjglOTQlRTAlQjglQTUlRTAlQjglQTMlRTAlQjglQjElRTAlQjglOUElRTAlQjklODQlRTAlQjglOTQlRTAlQjklODklMEElMjMlMjAoNTEyJTIwZm9yJTIwQkVSVCUyMG9yJTIwRGlzdGlsQkVSVCklMEFtb2RlbF9pbnB1dHMlMjAlM0QlMjB0b2tlbml6ZXIoc2VxdWVuY2VzJTJDJTIwdHJ1bmNhdGlvbiUzRFRydWUpJTBBJTBBJTIzJTIwJUUwJUI4JTg4JUUwJUI4JUIwJUUwJUI4JTk1JUUwJUI4JUIxJUUwJUI4JTk0JUUwJUI4JTlCJUUwJUI4JUEzJUUwJUI4JUIwJUUwJUI5JTgyJUUwJUI4JUEyJUUwJUI4JTg0JUUwJUI4JTk3JUUwJUI4JUI1JUUwJUI5JTg4JUUwJUI4JUExJUUwJUI4JUI1JUUwJUI4JTg0JUUwJUI4JUE3JUUwJUI4JUIyJUUwJUI4JUExJUUwJUI4JUEyJUUwJUI4JUIyJUUwJUI4JUE3JUUwJUI5JTgwJUUwJUI4JTgxJUUwJUI4JUI0JUUwJUI4JTk5JUUwJUI4JTgxJUUwJUI4JUE3JUUwJUI5JTg4JUUwJUI4JUIyJUUwJUI4JTg0JUUwJUI4JUE3JUUwJUI4JUIyJUUwJUI4JUExJUUwJUI4JUEyJUUwJUI4JUIyJUUwJUI4JUE3JUUwJUI4JTk3JUUwJUI4JUI1JUUwJUI5JTg4JUUwJUI4JUEzJUUwJUI4JUIwJUUwJUI4JTlBJUUwJUI4JUI4JUUwJUI5JTg0JUUwJUI4JUE3JUUwJUI5JTg5JTBBbW9kZWxfaW5wdXRzJTIwJTNEJTIwdG9rZW5pemVyKHNlcXVlbmNlcyUyQyUyMG1heF9sZW5ndGglM0Q4JTJDJTIwdHJ1bmNhdGlvbiUzRFRydWUp",highlighted:`sequences = [<span class="hljs-string">&quot;I&#x27;ve been waiting for a HuggingFace course my whole life.&quot;</span>, <span class="hljs-string">&quot;So have I!&quot;</span>]

<span class="hljs-comment"># จะตัดประโยคที่มีความยาวเกินกว่าความยาวที่โมเดลรับได้</span>
<span class="hljs-comment"># (512 for BERT or DistilBERT)</span>
model_inputs = tokenizer(sequences, truncation=<span class="hljs-literal">True</span>)

<span class="hljs-comment"># จะตัดประโยคที่มีความยาวเกินกว่าความยาวที่ระบุไว้</span>
model_inputs = tokenizer(sequences, max_length=<span class="hljs-number">8</span>, truncation=<span class="hljs-literal">True</span>)`,wrap:!1}}),z=new I({props:{code:"c2VxdWVuY2VzJTIwJTNEJTIwJTVCJTIySSd2ZSUyMGJlZW4lMjB3YWl0aW5nJTIwZm9yJTIwYSUyMEh1Z2dpbmdGYWNlJTIwY291cnNlJTIwbXklMjB3aG9sZSUyMGxpZmUuJTIyJTJDJTIwJTIyU28lMjBoYXZlJTIwSSElMjIlNUQlMEElMEElMjMlMjBSZXR1cm5zJTIwUHlUb3JjaCUyMHRlbnNvcnMlMEFtb2RlbF9pbnB1dHMlMjAlM0QlMjB0b2tlbml6ZXIoc2VxdWVuY2VzJTJDJTIwcGFkZGluZyUzRFRydWUlMkMlMjByZXR1cm5fdGVuc29ycyUzRCUyMnB0JTIyKSUwQSUwQSUyMyUyMFJldHVybnMlMjBUZW5zb3JGbG93JTIwdGVuc29ycyUwQW1vZGVsX2lucHV0cyUyMCUzRCUyMHRva2VuaXplcihzZXF1ZW5jZXMlMkMlMjBwYWRkaW5nJTNEVHJ1ZSUyQyUyMHJldHVybl90ZW5zb3JzJTNEJTIydGYlMjIpJTBBJTBBJTIzJTIwUmV0dXJucyUyME51bVB5JTIwYXJyYXlzJTBBbW9kZWxfaW5wdXRzJTIwJTNEJTIwdG9rZW5pemVyKHNlcXVlbmNlcyUyQyUyMHBhZGRpbmclM0RUcnVlJTJDJTIwcmV0dXJuX3RlbnNvcnMlM0QlMjJucCUyMik=",highlighted:`sequences = [<span class="hljs-string">&quot;I&#x27;ve been waiting for a HuggingFace course my whole life.&quot;</span>, <span class="hljs-string">&quot;So have I!&quot;</span>]

<span class="hljs-comment"># Returns PyTorch tensors</span>
model_inputs = tokenizer(sequences, padding=<span class="hljs-literal">True</span>, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)

<span class="hljs-comment"># Returns TensorFlow tensors</span>
model_inputs = tokenizer(sequences, padding=<span class="hljs-literal">True</span>, return_tensors=<span class="hljs-string">&quot;tf&quot;</span>)

<span class="hljs-comment"># Returns NumPy arrays</span>
model_inputs = tokenizer(sequences, padding=<span class="hljs-literal">True</span>, return_tensors=<span class="hljs-string">&quot;np&quot;</span>)`,wrap:!1}}),_=new Zl({props:{title:"tokens พิเศษ",local:"tokens-พเศษ",headingTag:"h2"}}),X=new I({props:{code:"c2VxdWVuY2UlMjAlM0QlMjAlMjJJJ3ZlJTIwYmVlbiUyMHdhaXRpbmclMjBmb3IlMjBhJTIwSHVnZ2luZ0ZhY2UlMjBjb3Vyc2UlMjBteSUyMHdob2xlJTIwbGlmZS4lMjIlMEElMEFtb2RlbF9pbnB1dHMlMjAlM0QlMjB0b2tlbml6ZXIoc2VxdWVuY2UpJTBBcHJpbnQobW9kZWxfaW5wdXRzJTVCJTIyaW5wdXRfaWRzJTIyJTVEKSUwQSUwQXRva2VucyUyMCUzRCUyMHRva2VuaXplci50b2tlbml6ZShzZXF1ZW5jZSklMEFpZHMlMjAlM0QlMjB0b2tlbml6ZXIuY29udmVydF90b2tlbnNfdG9faWRzKHRva2VucyklMEFwcmludChpZHMp",highlighted:`sequence = <span class="hljs-string">&quot;I&#x27;ve been waiting for a HuggingFace course my whole life.&quot;</span>

model_inputs = tokenizer(sequence)
<span class="hljs-built_in">print</span>(model_inputs[<span class="hljs-string">&quot;input_ids&quot;</span>])

tokens = tokenizer.tokenize(sequence)
ids = tokenizer.convert_tokens_to_ids(tokens)
<span class="hljs-built_in">print</span>(ids)`,wrap:!1}}),G=new I({props:{code:"JTVCMTAxJTJDJTIwMTA0NSUyQyUyMDEwMDUlMkMlMjAyMzEwJTJDJTIwMjA0MiUyQyUyMDM0MDMlMkMlMjAyMDA1JTJDJTIwMTAzNyUyQyUyMDE3NjYyJTJDJTIwMTIxNzIlMkMlMjAyNjA3JTJDJTIwMjAyNiUyQyUyMDI4NzglMkMlMjAyMTY2JTJDJTIwMTAxMiUyQyUyMDEwMiU1RCUwQSU1QjEwNDUlMkMlMjAxMDA1JTJDJTIwMjMxMCUyQyUyMDIwNDIlMkMlMjAzNDAzJTJDJTIwMjAwNSUyQyUyMDEwMzclMkMlMjAxNzY2MiUyQyUyMDEyMTcyJTJDJTIwMjYwNyUyQyUyMDIwMjYlMkMlMjAyODc4JTJDJTIwMjE2NiUyQyUyMDEwMTIlNUQ=",highlighted:`[<span class="hljs-number">101</span>, <span class="hljs-number">1045</span>, <span class="hljs-number">1005</span>, <span class="hljs-number">2310</span>, <span class="hljs-number">2042</span>, <span class="hljs-number">3403</span>, <span class="hljs-number">2005</span>, <span class="hljs-number">1037</span>, <span class="hljs-number">17662</span>, <span class="hljs-number">12172</span>, <span class="hljs-number">2607</span>, <span class="hljs-number">2026</span>, <span class="hljs-number">2878</span>, <span class="hljs-number">2166</span>, <span class="hljs-number">1012</span>, <span class="hljs-number">102</span>]
[<span class="hljs-number">1045</span>, <span class="hljs-number">1005</span>, <span class="hljs-number">2310</span>, <span class="hljs-number">2042</span>, <span class="hljs-number">3403</span>, <span class="hljs-number">2005</span>, <span class="hljs-number">1037</span>, <span class="hljs-number">17662</span>, <span class="hljs-number">12172</span>, <span class="hljs-number">2607</span>, <span class="hljs-number">2026</span>, <span class="hljs-number">2878</span>, <span class="hljs-number">2166</span>, <span class="hljs-number">1012</span>]`,wrap:!1}}),q=new I({props:{code:"cHJpbnQodG9rZW5pemVyLmRlY29kZShtb2RlbF9pbnB1dHMlNUIlMjJpbnB1dF9pZHMlMjIlNUQpKSUwQXByaW50KHRva2VuaXplci5kZWNvZGUoaWRzKSk=",highlighted:`<span class="hljs-built_in">print</span>(tokenizer.decode(model_inputs[<span class="hljs-string">&quot;input_ids&quot;</span>]))
<span class="hljs-built_in">print</span>(tokenizer.decode(ids))`,wrap:!1}}),v=new I({props:{code:"JTIyJTVCQ0xTJTVEJTIwaSd2ZSUyMGJlZW4lMjB3YWl0aW5nJTIwZm9yJTIwYSUyMGh1Z2dpbmdmYWNlJTIwY291cnNlJTIwbXklMjB3aG9sZSUyMGxpZmUuJTIwJTVCU0VQJTVEJTIyJTBBJTIyaSd2ZSUyMGJlZW4lMjB3YWl0aW5nJTIwZm9yJTIwYSUyMGh1Z2dpbmdmYWNlJTIwY291cnNlJTIwbXklMjB3aG9sZSUyMGxpZmUuJTIy",highlighted:`<span class="hljs-string">&quot;[CLS] i&#x27;ve been waiting for a huggingface course my whole life. [SEP]&quot;</span>
<span class="hljs-string">&quot;i&#x27;ve been waiting for a huggingface course my whole life.&quot;</span>`,wrap:!1}}),D=new Zl({props:{title:"สรุป: จาก tokenizer ไปยังโมเดล",local:"สรป-จาก-tokenizer-ไปยงโมเดล",headingTag:"h2"}});const ql=[Te,oe],L=[];function vl(l,e){return l[0]==="pt"?0:1}return V=vl(b),C=L[V]=ql[V](b),{c(){a=u("meta"),p=J(),s=u("p"),m=J(),i(Q.$$.fragment),sl=J(),i(d.$$.fragment),tl=J(),g.c(),K=J(),f=u("p"),f.textContent=Al,nl=J(),k=u("p"),k.innerHTML=$l,al=J(),i(h.$$.fragment),Jl=J(),R=u("p"),R.innerHTML=El,Ul=J(),Z=u("p"),Z.textContent=Wl,pl=J(),i(A.$$.fragment),ol=J(),$=u("p"),$.textContent=Nl,Tl=J(),i(E.$$.fragment),il=J(),W=u("p"),W.textContent=Fl,Ml=J(),i(N.$$.fragment),rl=J(),F=u("p"),F.textContent=Bl,cl=J(),i(B.$$.fragment),ul=J(),S=u("p"),S.innerHTML=Sl,jl=J(),i(z.$$.fragment),ml=J(),i(_.$$.fragment),wl=J(),O=u("p"),O.textContent=zl,Il=J(),i(X.$$.fragment),bl=J(),i(G.$$.fragment),yl=J(),x=u("p"),x.textContent=_l,gl=J(),i(q.$$.fragment),Vl=J(),i(v.$$.fragment),Cl=J(),Y=u("p"),Y.innerHTML=Ol,Ql=J(),i(D.$$.fragment),dl=J(),H=u("p"),H.innerHTML=Xl,fl=J(),C.c(),ll=J(),el=u("p"),this.h()},l(l){const e=ne("svelte-u9bgzb",document.head);a=j(e,"META",{name:!0,content:!0}),e.forEach(t),p=U(l),s=j(l,"P",{}),Dl(s).forEach(t),m=U(l),M(Q.$$.fragment,l),sl=U(l),M(d.$$.fragment,l),tl=U(l),g.l(l),K=U(l),f=j(l,"P",{"data-svelte-h":!0}),w(f)!=="svelte-rkbdnp"&&(f.textContent=Al),nl=U(l),k=j(l,"P",{"data-svelte-h":!0}),w(k)!=="svelte-1w855g0"&&(k.innerHTML=$l),al=U(l),M(h.$$.fragment,l),Jl=U(l),R=j(l,"P",{"data-svelte-h":!0}),w(R)!=="svelte-1e3k74o"&&(R.innerHTML=El),Ul=U(l),Z=j(l,"P",{"data-svelte-h":!0}),w(Z)!=="svelte-10v5b9q"&&(Z.textContent=Wl),pl=U(l),M(A.$$.fragment,l),ol=U(l),$=j(l,"P",{"data-svelte-h":!0}),w($)!=="svelte-ck5tfo"&&($.textContent=Nl),Tl=U(l),M(E.$$.fragment,l),il=U(l),W=j(l,"P",{"data-svelte-h":!0}),w(W)!=="svelte-1jj0u2b"&&(W.textContent=Fl),Ml=U(l),M(N.$$.fragment,l),rl=U(l),F=j(l,"P",{"data-svelte-h":!0}),w(F)!=="svelte-8itadv"&&(F.textContent=Bl),cl=U(l),M(B.$$.fragment,l),ul=U(l),S=j(l,"P",{"data-svelte-h":!0}),w(S)!=="svelte-kubv7s"&&(S.innerHTML=Sl),jl=U(l),M(z.$$.fragment,l),ml=U(l),M(_.$$.fragment,l),wl=U(l),O=j(l,"P",{"data-svelte-h":!0}),w(O)!=="svelte-1xkl9cq"&&(O.textContent=zl),Il=U(l),M(X.$$.fragment,l),bl=U(l),M(G.$$.fragment,l),yl=U(l),x=j(l,"P",{"data-svelte-h":!0}),w(x)!=="svelte-10dsynk"&&(x.textContent=_l),gl=U(l),M(q.$$.fragment,l),Vl=U(l),M(v.$$.fragment,l),Cl=U(l),Y=j(l,"P",{"data-svelte-h":!0}),w(Y)!=="svelte-huvrxw"&&(Y.innerHTML=Ol),Ql=U(l),M(D.$$.fragment,l),dl=U(l),H=j(l,"P",{"data-svelte-h":!0}),w(H)!=="svelte-wwam1s"&&(H.innerHTML=Xl),fl=U(l),C.l(l),ll=U(l),el=j(l,"P",{}),Dl(el).forEach(t),this.h()},h(){Hl(a,"name","hf:doc:metadata"),Hl(a,"content",Me)},m(l,e){ae(document.head,a),n(l,p,e),n(l,s,e),n(l,m,e),r(Q,l,e),n(l,sl,e),r(d,l,e),n(l,tl,e),P[y].m(l,e),n(l,K,e),n(l,f,e),n(l,nl,e),n(l,k,e),n(l,al,e),r(h,l,e),n(l,Jl,e),n(l,R,e),n(l,Ul,e),n(l,Z,e),n(l,pl,e),r(A,l,e),n(l,ol,e),n(l,$,e),n(l,Tl,e),r(E,l,e),n(l,il,e),n(l,W,e),n(l,Ml,e),r(N,l,e),n(l,rl,e),n(l,F,e),n(l,cl,e),r(B,l,e),n(l,ul,e),n(l,S,e),n(l,jl,e),r(z,l,e),n(l,ml,e),r(_,l,e),n(l,wl,e),n(l,O,e),n(l,Il,e),r(X,l,e),n(l,bl,e),r(G,l,e),n(l,yl,e),n(l,x,e),n(l,gl,e),r(q,l,e),n(l,Vl,e),r(v,l,e),n(l,Cl,e),n(l,Y,e),n(l,Ql,e),r(D,l,e),n(l,dl,e),n(l,H,e),n(l,fl,e),L[V].m(l,e),n(l,ll,e),n(l,el,e),kl=!0},p(l,[e]){const Yl={};e&1&&(Yl.fw=l[0]),Q.$set(Yl);let hl=y;y=xl(l),y!==hl&&(Ll(),o(P[hl],1,1,()=>{P[hl]=null}),Pl(),g=P[y],g||(g=P[y]=Gl[y](l),g.c()),T(g,1),g.m(K.parentNode,K));let Rl=V;V=vl(l),V!==Rl&&(Ll(),o(L[Rl],1,1,()=>{L[Rl]=null}),Pl(),C=L[V],C||(C=L[V]=ql[V](l),C.c()),T(C,1),C.m(ll.parentNode,ll))},i(l){kl||(T(Q.$$.fragment,l),T(d.$$.fragment,l),T(g),T(h.$$.fragment,l),T(A.$$.fragment,l),T(E.$$.fragment,l),T(N.$$.fragment,l),T(B.$$.fragment,l),T(z.$$.fragment,l),T(_.$$.fragment,l),T(X.$$.fragment,l),T(G.$$.fragment,l),T(q.$$.fragment,l),T(v.$$.fragment,l),T(D.$$.fragment,l),T(C),kl=!0)},o(l){o(Q.$$.fragment,l),o(d.$$.fragment,l),o(g),o(h.$$.fragment,l),o(A.$$.fragment,l),o(E.$$.fragment,l),o(N.$$.fragment,l),o(B.$$.fragment,l),o(z.$$.fragment,l),o(_.$$.fragment,l),o(X.$$.fragment,l),o(G.$$.fragment,l),o(q.$$.fragment,l),o(v.$$.fragment,l),o(D.$$.fragment,l),o(C),kl=!1},d(l){l&&(t(p),t(s),t(m),t(sl),t(tl),t(K),t(f),t(nl),t(k),t(al),t(Jl),t(R),t(Ul),t(Z),t(pl),t(ol),t($),t(Tl),t(il),t(W),t(Ml),t(rl),t(F),t(cl),t(ul),t(S),t(jl),t(ml),t(wl),t(O),t(Il),t(bl),t(yl),t(x),t(gl),t(Vl),t(Cl),t(Y),t(Ql),t(dl),t(H),t(fl),t(ll),t(el)),t(a),c(Q,l),c(d,l),P[y].d(l),c(h,l),c(A,l),c(E,l),c(N,l),c(B,l),c(z,l),c(_,l),c(X,l),c(G,l),c(q,l),c(v,l),c(D,l),L[V].d(l)}}}const Me='{"title":"ประกอบทุกอย่างเข้าด้วยกัน","local":"ประกอบทกอยางเขาดวยกน","sections":[{"title":"tokens พิเศษ","local":"tokens-พเศษ","sections":[],"depth":2},{"title":"สรุป: จาก tokenizer ไปยังโมเดล","local":"สรป-จาก-tokenizer-ไปยงโมเดล","sections":[],"depth":2}],"depth":1}';function re(b,a,p){let s="pt";return ee(()=>{const m=new URLSearchParams(window.location.search);p(0,s=m.get("fw")||"pt")}),[s]}class be extends se{constructor(a){super(),te(this,a,re,ie,le,{})}}export{be as component};
