Buckets:
| import{s as ne,o as ae}from"../chunks/scheduler.505acc25.js";import{S as Je,i as Ue,e as u,s as J,c as i,h as pe,a as j,d as s,b as U,f as Kl,g as r,j as w,k as le,l as oe,m as n,n as M,o,q as ee,t as T,p as c,r as se}from"../chunks/index.17dd9071.js";import{C as Te,H as Wl,E as ie}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.2fb8816f.js";import{C as I}from"../chunks/CodeBlock.e5979fb3.js";import{C as te}from"../chunks/CourseFloatingBanner.9496b79e.js";import{F as re}from"../chunks/FrameworkSwitchCourse.7aa4b983.js";function Me(b){let a,p;return a=new te({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(t){r(a.$$.fragment,t)},m(t,m){M(a,t,m),p=!0},i(t){p||(T(a.$$.fragment,t),p=!0)},o(t){o(a.$$.fragment,t),p=!1},d(t){c(a,t)}}}function ce(b){let a,p;return a=new te({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(t){r(a.$$.fragment,t)},m(t,m){M(a,t,m),p=!0},i(t){p||(T(a.$$.fragment,t),p=!0)},o(t){o(a.$$.fragment,t),p=!1},d(t){c(a,t)}}}function ue(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">"distilbert-base-uncased-finetuned-sst-2-english"</span> | |
| tokenizer = AutoTokenizer.from_pretrained(checkpoint) | |
| model = TFAutoModelForSequenceClassification.from_pretrained(checkpoint) | |
| sequences = [<span class="hljs-string">"I've been waiting for a HuggingFace course my whole life."</span>, <span class="hljs-string">"So have I!"</span>] | |
| tokens = tokenizer(sequences, padding=<span class="hljs-literal">True</span>, truncation=<span class="hljs-literal">True</span>, return_tensors=<span class="hljs-string">"tf"</span>) | |
| output = model(**tokens)`,wrap:!1}}),{c(){i(a.$$.fragment)},l(t){r(a.$$.fragment,t)},m(t,m){M(a,t,m),p=!0},i(t){p||(T(a.$$.fragment,t),p=!0)},o(t){o(a.$$.fragment,t),p=!1},d(t){c(a,t)}}}function je(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">"distilbert-base-uncased-finetuned-sst-2-english"</span> | |
| tokenizer = AutoTokenizer.from_pretrained(checkpoint) | |
| model = AutoModelForSequenceClassification.from_pretrained(checkpoint) | |
| sequences = [<span class="hljs-string">"I've been waiting for a HuggingFace course my whole life."</span>, <span class="hljs-string">"So have I!"</span>] | |
| tokens = tokenizer(sequences, padding=<span class="hljs-literal">True</span>, truncation=<span class="hljs-literal">True</span>, return_tensors=<span class="hljs-string">"pt"</span>) | |
| output = model(**tokens)`,wrap:!1}}),{c(){i(a.$$.fragment)},l(t){r(a.$$.fragment,t)},m(t,m){M(a,t,m),p=!0},i(t){p||(T(a.$$.fragment,t),p=!0)},o(t){o(a.$$.fragment,t),p=!1},d(t){c(a,t)}}}function me(b){let a,p,t,m,Q,nl,d,al,f,Jl,g,y,el,h,Nl="ในสองสาม sections ที่ผ่านมา เราได้พยายามทำทุกอย่างด้วยมือของเราเอง เราได้ลองศึกษาว่า tokenizer นั้นทำงานอย่างไรและวิธีการ tokenization, แปลงข้อมูลไปเป็น input IDs, การเติม(padding), การตัด(truncation), และ attention masks",Ul,k,Fl="อย่างไรก็ตาม เหมือนที่เราเห็นใน section 2, 🤗 Transformers API นั้นสามารถจัดการกับสิ่งต่างๆเหล่านั้นให้เราได้ด้วย high-level ฟังก์ชันที่เราจะลงลึงในรายละเอียดกันในที่นี่ เมื่อคุณเรียกใช้งาน <code>tokenizer</code> ของคุณตรงๆกับประโยคหนึ่งๆ, คุณได้อินพุตที่พร้อมจะใส่เข้าไปยังโมเดลกลับมา:",pl,R,ol,Z,Bl="ในที่นี้ ตัวแปร <code>model_inputs</code> นั้นประกอบด้วยทุกอย่างที่จำเป็นสำหรับโมเดลที่จะทำงานได้เป็นอย่างดี สำหรับ DistilBERT นั้นรวมไปถึง input IDs และ attention mask ด้วย ส่วนโมเดลอื่นๆที่รองรับอินพุตต่างๆเพิ่มเติมก็จะได้ผลลัพท์เหล่านั้นจาก <code>tokenizer</code> object ด้วย",Tl,A,Sl="อย่างที่เราจะได้เห็นในบางตัวอย่างด้านล่างนี้ วิธีนี้เป็นวิธีที่ทรงพลังมาก อันดับแรก มันสามารถที่จะ tokenize ประโยคเพียงประโยคเดียวได้:",il,$,rl,E,zl="มันยังสามารถจัดการกับประโยคหลายๆประโยคได้ในคราวเดียวกัน โดยที่ไม่มีอะไรเปลี่ยนใน API เลย:",Ml,W,cl,N,Ol="มันสามารถที่จะเติม(padding) ให้สอดคล้องกับหลายๆวัตถุประสงค์:",ul,F,jl,B,_l="มันสามารถตัดประโยคได้อีกด้วย:",ml,S,wl,z,xl="<code>tokenizer</code> object สามารถที่จะจัดการกับการแปลงข้อมูลไปเป็น tensors สำหรับ framework ที่เฉพาะเจาะจงได้ ซึ่งสามารถที่จะส่งเข้าโมเดลได้ทันที ยกตัวอย่างเช่น ในโค้ดตัวอย่างต่อไปนี้ เราจะสั่งให้ tokenizer ส่ง tensors จาก frameworks ต่างๆ กัน — <code>"pt"</code> ให้ PyTorch tensors, <code>"tf"</code> ให้ TensorFlow tensors, and <code>"np"</code> ให้ NumPy arrays:",Il,O,bl,_,gl,x,Xl="ถ้าเราดูที่ input IDs ที่ได้จาก tokenizer เราจะเห็นได้ว่ามันค่อนข้างแตกต่างไปจากสิ่งที่เราเคยได้ก่อนหน้านี้:",yl,X,Vl,G,Cl,q,Gl="มีหนึ่ง token ID ได้ถูกใส่เข้ามาด้านหน้าสุด และอีกหนึ่ง token ID ใส่ด้านหลังสุด มาถอดรหัสสองประโยคของ IDs ด้านบนดูว่ามันเกี่ยกับอะไร:",Ql,v,dl,Y,fl,D,ql="tokenizer ทำการเพิ่มคำพิเศษ <code>[CLS]</code> ที่ด้านหน้าสุด และคำพิเศษ <code>[SEP]</code> ที่ด้านหลังสุด นั้นก็เพราะว่าโมเดลนั้นได้ผ่านการเทรนมาแบบนั้น ดังนั้นเพื่อให้ได้ผลลัพท์เดียวกันสำหรับการอนุมาน(inference) เราจำเป็นต้องเพิ่มมันเข้าไปเช่นเดียวกัน แต่ก็ต้องตระหนักว่าบางโมเดลนั้นไม่ได้เพิ่มคำพิเศษ หรือ ใส่คำที่ต่างออกไป; โมเดลอาจจะเพิ่มคำพิเศษเหล่านี้แค่เฉพาะด้านหน้าสุด หรือ ด้านหลังสุดเท่านั้น ไม่ว่าจะในกรณีใดๆ tokenizer รู้ว่าอันไหนเป็นอันที่ต้องการและมันจะจัดการให้คุณเอง:",hl,H,kl,L,vl="ถึงตรงนี้เราได้เห็นขั้นตอนแต่ละอย่างทั้งหมดที่ <code>tokenizer</code> ใช้เพื่อประมวลผลข้อความ เรามาดูกันครั้งสุดท้ายว่ามันสามารถจัดการประโยคหลายๆประโยค (padding!), ประโยคยาวๆ, และ tensors หลายๆ ประเภทได้อย่างไรด้วย API หลักของมัน:",Rl,V,C,sl,P,Zl,tl,Al;Q=new re({props:{fw:b[0]}}),d=new Te({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),f=new Wl({props:{title:"ประกอบทุกอย่างเข้าด้วยกัน",local:"ประกอบทกอยางเขาดวยกน",headingTag:"h1"}});const Yl=[ce,Me],K=[];function Dl(l,e){return l[0]==="pt"?0:1}g=Dl(b),y=K[g]=Yl[g](b),R=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">"distilbert-base-uncased-finetuned-sst-2-english"</span> | |
| tokenizer = AutoTokenizer.from_pretrained(checkpoint) | |
| sequence = <span class="hljs-string">"I've been waiting for a HuggingFace course my whole life."</span> | |
| model_inputs = tokenizer(sequence)`,wrap:!1}}),$=new I({props:{code:"c2VxdWVuY2UlMjAlM0QlMjAlMjJJJ3ZlJTIwYmVlbiUyMHdhaXRpbmclMjBmb3IlMjBhJTIwSHVnZ2luZ0ZhY2UlMjBjb3Vyc2UlMjBteSUyMHdob2xlJTIwbGlmZS4lMjIlMEElMEFtb2RlbF9pbnB1dHMlMjAlM0QlMjB0b2tlbml6ZXIoc2VxdWVuY2Up",highlighted:`sequence = <span class="hljs-string">"I've been waiting for a HuggingFace course my whole life."</span> | |
| model_inputs = tokenizer(sequence)`,wrap:!1}}),W=new I({props:{code:"c2VxdWVuY2VzJTIwJTNEJTIwJTVCJTIySSd2ZSUyMGJlZW4lMjB3YWl0aW5nJTIwZm9yJTIwYSUyMEh1Z2dpbmdGYWNlJTIwY291cnNlJTIwbXklMjB3aG9sZSUyMGxpZmUuJTIyJTJDJTIwJTIyU28lMjBoYXZlJTIwSSElMjIlNUQlMEElMEFtb2RlbF9pbnB1dHMlMjAlM0QlMjB0b2tlbml6ZXIoc2VxdWVuY2VzKQ==",highlighted:`sequences = [<span class="hljs-string">"I've been waiting for a HuggingFace course my whole life."</span>, <span class="hljs-string">"So have I!"</span>] | |
| model_inputs = tokenizer(sequences)`,wrap:!1}}),F=new I({props:{code:"JTIzJTIwJUUwJUI4JTg4JUUwJUI4JUIwJUUwJUI5JTgwJUUwJUI4JTk1JUUwJUI4JUI0JUUwJUI4JUExJUUwJUI4JTlCJUUwJUI4JUEzJUUwJUI4JUIwJUUwJUI5JTgyJUUwJUI4JUEyJUUwJUI4JTg0JUUwJUI5JTg0JUUwJUI4JTlCJUUwJUI4JTg4JUUwJUI4JTk5JUUwJUI4JTk2JUUwJUI4JUI2JUUwJUI4JTg3JUUwJUI4JTg0JUUwJUI4JUE3JUUwJUI4JUIyJUUwJUI4JUExJUUwJUI4JUEyJUUwJUI4JUIyJUUwJUI4JUE3JUUwJUI4JTk3JUUwJUI4JUI1JUUwJUI5JTg4JUUwJUI4JUEyJUUwJUI4JUIyJUUwJUI4JUE3JUUwJUI4JTk3JUUwJUI4JUI1JUUwJUI5JTg4JUUwJUI4JUFBJUUwJUI4JUI4JUUwJUI4JTk0JUUwJUI4JTgyJUUwJUI4JUFEJUUwJUI4JTg3JUUwJUI4JTlCJUUwJUI4JUEzJUUwJUI4JUIwJUUwJUI5JTgyJUUwJUI4JUEyJUUwJUI4JTg0JTBBbW9kZWxfaW5wdXRzJTIwJTNEJTIwdG9rZW5pemVyKHNlcXVlbmNlcyUyQyUyMHBhZGRpbmclM0QlMjJsb25nZXN0JTIyKSUwQSUwQSUyMyUyMCVFMCVCOCU4OCVFMCVCOCVCMCVFMCVCOSU4MCVFMCVCOCU5NSVFMCVCOCVCNCVFMCVCOCVBMSVFMCVCOCU5QiVFMCVCOCVBMyVFMCVCOCVCMCVFMCVCOSU4MiVFMCVCOCVBMiVFMCVCOCU4NCVFMCVCOSU4NCVFMCVCOCU5QiVFMCVCOCU4OCVFMCVCOCU5OSVFMCVCOCU5NiVFMCVCOCVCNiVFMCVCOCU4NyVFMCVCOCU4NCVFMCVCOCVBNyVFMCVCOCVCMiVFMCVCOCVBMSVFMCVCOCVBMiVFMCVCOCVCMiVFMCVCOCVBNyVFMCVCOCU5NyVFMCVCOCVCNSVFMCVCOSU4OCVFMCVCOCVBMiVFMCVCOCVCMiVFMCVCOCVBNyVFMCVCOCU5NyVFMCVCOCVCNSVFMCVCOSU4OCVFMCVCOCVBQSVFMCVCOCVCOCVFMCVCOCU5NCVFMCVCOCU5NyVFMCVCOCVCNSVFMCVCOSU4OCVFMCVCOSU4MiVFMCVCOCVBMSVFMCVCOSU4MCVFMCVCOCU5NCVFMCVCOCVBNSVFMCVCOCVBMyVFMCVCOCVCMSVFMCVCOCU5QSVFMCVCOSU4NCVFMCVCOCU5NCVFMCVCOSU4OSUwQSUyMyUyMCg1MTIlMjBmb3IlMjBCRVJUJTIwb3IlMjBEaXN0aWxCRVJUKSUwQW1vZGVsX2lucHV0cyUyMCUzRCUyMHRva2VuaXplcihzZXF1ZW5jZXMlMkMlMjBwYWRkaW5nJTNEJTIybWF4X2xlbmd0aCUyMiklMEElMEElMjMlMjAlRTAlQjglODglRTAlQjglQjAlRTAlQjklODAlRTAlQjglOTUlRTAlQjglQjQlRTAlQjglQTElRTAlQjglOUIlRTAlQjglQTMlRTAlQjglQjAlRTAlQjklODIlRTAlQjglQTIlRTAlQjglODQlRTAlQjklODQlRTAlQjglOUIlRTAlQjglODglRTAlQjglOTklRTAlQjglOTYlRTAlQjglQjYlRTAlQjglODclRTAlQjglODQlRTAlQjglQTclRTAlQjglQjIlRTAlQjglQTElRTAlQjglQTIlRTAlQjglQjIlRTAlQjglQTclRTAlQjglOTclRTAlQjglQjUlRTAlQjklODglRTAlQjglQTIlRTAlQjglQjIlRTAlQjglQTclRTAlQjglOTclRTAlQjglQjUlRTAlQjklODglRTAlQjglQUElRTAlQjglQjglRTAlQjglOTQlRTAlQjglOTclRTAlQjglQjUlRTAlQjklODglRTAlQjglQTMlRTAlQjglQjAlRTAlQjglOUElRTAlQjglQjglRTAlQjklODQlRTAlQjglQTclRTAlQjklODklMEFtb2RlbF9pbnB1dHMlMjAlM0QlMjB0b2tlbml6ZXIoc2VxdWVuY2VzJTJDJTIwcGFkZGluZyUzRCUyMm1heF9sZW5ndGglMjIlMkMlMjBtYXhfbGVuZ3RoJTNEOCk=",highlighted:`<span class="hljs-comment"># จะเติมประโยคไปจนถึงความยาวที่ยาวที่สุดของประโยค</span> | |
| model_inputs = tokenizer(sequences, padding=<span class="hljs-string">"longest"</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">"max_length"</span>) | |
| <span class="hljs-comment"># จะเติมประโยคไปจนถึงความยาวที่ยาวที่สุดที่ระบุไว้</span> | |
| model_inputs = tokenizer(sequences, padding=<span class="hljs-string">"max_length"</span>, max_length=<span class="hljs-number">8</span>)`,wrap:!1}}),S=new I({props:{code:"c2VxdWVuY2VzJTIwJTNEJTIwJTVCJTIySSd2ZSUyMGJlZW4lMjB3YWl0aW5nJTIwZm9yJTIwYSUyMEh1Z2dpbmdGYWNlJTIwY291cnNlJTIwbXklMjB3aG9sZSUyMGxpZmUuJTIyJTJDJTIwJTIyU28lMjBoYXZlJTIwSSElMjIlNUQlMEElMEElMjMlMjAlRTAlQjglODglRTAlQjglQjAlRTAlQjglOTUlRTAlQjglQjElRTAlQjglOTQlRTAlQjglOUIlRTAlQjglQTMlRTAlQjglQjAlRTAlQjklODIlRTAlQjglQTIlRTAlQjglODQlRTAlQjglOTclRTAlQjglQjUlRTAlQjklODglRTAlQjglQTElRTAlQjglQjUlRTAlQjglODQlRTAlQjglQTclRTAlQjglQjIlRTAlQjglQTElRTAlQjglQTIlRTAlQjglQjIlRTAlQjglQTclRTAlQjklODAlRTAlQjglODElRTAlQjglQjQlRTAlQjglOTklRTAlQjglODElRTAlQjglQTclRTAlQjklODglRTAlQjglQjIlRTAlQjglODQlRTAlQjglQTclRTAlQjglQjIlRTAlQjglQTElRTAlQjglQTIlRTAlQjglQjIlRTAlQjglQTclRTAlQjglOTclRTAlQjglQjUlRTAlQjklODglRTAlQjklODIlRTAlQjglQTElRTAlQjklODAlRTAlQjglOTQlRTAlQjglQTUlRTAlQjglQTMlRTAlQjglQjElRTAlQjglOUElRTAlQjklODQlRTAlQjglOTQlRTAlQjklODklMEElMjMlMjAoNTEyJTIwZm9yJTIwQkVSVCUyMG9yJTIwRGlzdGlsQkVSVCklMEFtb2RlbF9pbnB1dHMlMjAlM0QlMjB0b2tlbml6ZXIoc2VxdWVuY2VzJTJDJTIwdHJ1bmNhdGlvbiUzRFRydWUpJTBBJTBBJTIzJTIwJUUwJUI4JTg4JUUwJUI4JUIwJUUwJUI4JTk1JUUwJUI4JUIxJUUwJUI4JTk0JUUwJUI4JTlCJUUwJUI4JUEzJUUwJUI4JUIwJUUwJUI5JTgyJUUwJUI4JUEyJUUwJUI4JTg0JUUwJUI4JTk3JUUwJUI4JUI1JUUwJUI5JTg4JUUwJUI4JUExJUUwJUI4JUI1JUUwJUI4JTg0JUUwJUI4JUE3JUUwJUI4JUIyJUUwJUI4JUExJUUwJUI4JUEyJUUwJUI4JUIyJUUwJUI4JUE3JUUwJUI5JTgwJUUwJUI4JTgxJUUwJUI4JUI0JUUwJUI4JTk5JUUwJUI4JTgxJUUwJUI4JUE3JUUwJUI5JTg4JUUwJUI4JUIyJUUwJUI4JTg0JUUwJUI4JUE3JUUwJUI4JUIyJUUwJUI4JUExJUUwJUI4JUEyJUUwJUI4JUIyJUUwJUI4JUE3JUUwJUI4JTk3JUUwJUI4JUI1JUUwJUI5JTg4JUUwJUI4JUEzJUUwJUI4JUIwJUUwJUI4JTlBJUUwJUI4JUI4JUUwJUI5JTg0JUUwJUI4JUE3JUUwJUI5JTg5JTBBbW9kZWxfaW5wdXRzJTIwJTNEJTIwdG9rZW5pemVyKHNlcXVlbmNlcyUyQyUyMG1heF9sZW5ndGglM0Q4JTJDJTIwdHJ1bmNhdGlvbiUzRFRydWUp",highlighted:`sequences = [<span class="hljs-string">"I've been waiting for a HuggingFace course my whole life."</span>, <span class="hljs-string">"So have I!"</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}}),O=new I({props:{code:"c2VxdWVuY2VzJTIwJTNEJTIwJTVCJTIySSd2ZSUyMGJlZW4lMjB3YWl0aW5nJTIwZm9yJTIwYSUyMEh1Z2dpbmdGYWNlJTIwY291cnNlJTIwbXklMjB3aG9sZSUyMGxpZmUuJTIyJTJDJTIwJTIyU28lMjBoYXZlJTIwSSElMjIlNUQlMEElMEElMjMlMjBSZXR1cm5zJTIwUHlUb3JjaCUyMHRlbnNvcnMlMEFtb2RlbF9pbnB1dHMlMjAlM0QlMjB0b2tlbml6ZXIoc2VxdWVuY2VzJTJDJTIwcGFkZGluZyUzRFRydWUlMkMlMjByZXR1cm5fdGVuc29ycyUzRCUyMnB0JTIyKSUwQSUwQSUyMyUyMFJldHVybnMlMjBUZW5zb3JGbG93JTIwdGVuc29ycyUwQW1vZGVsX2lucHV0cyUyMCUzRCUyMHRva2VuaXplcihzZXF1ZW5jZXMlMkMlMjBwYWRkaW5nJTNEVHJ1ZSUyQyUyMHJldHVybl90ZW5zb3JzJTNEJTIydGYlMjIpJTBBJTBBJTIzJTIwUmV0dXJucyUyME51bVB5JTIwYXJyYXlzJTBBbW9kZWxfaW5wdXRzJTIwJTNEJTIwdG9rZW5pemVyKHNlcXVlbmNlcyUyQyUyMHBhZGRpbmclM0RUcnVlJTJDJTIwcmV0dXJuX3RlbnNvcnMlM0QlMjJucCUyMik=",highlighted:`sequences = [<span class="hljs-string">"I've been waiting for a HuggingFace course my whole life."</span>, <span class="hljs-string">"So have I!"</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">"pt"</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">"tf"</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">"np"</span>)`,wrap:!1}}),_=new Wl({props:{title:"tokens พิเศษ",local:"tokens-พเศษ",headingTag:"h2"}}),X=new I({props:{code:"c2VxdWVuY2UlMjAlM0QlMjAlMjJJJ3ZlJTIwYmVlbiUyMHdhaXRpbmclMjBmb3IlMjBhJTIwSHVnZ2luZ0ZhY2UlMjBjb3Vyc2UlMjBteSUyMHdob2xlJTIwbGlmZS4lMjIlMEElMEFtb2RlbF9pbnB1dHMlMjAlM0QlMjB0b2tlbml6ZXIoc2VxdWVuY2UpJTBBcHJpbnQobW9kZWxfaW5wdXRzJTVCJTIyaW5wdXRfaWRzJTIyJTVEKSUwQSUwQXRva2VucyUyMCUzRCUyMHRva2VuaXplci50b2tlbml6ZShzZXF1ZW5jZSklMEFpZHMlMjAlM0QlMjB0b2tlbml6ZXIuY29udmVydF90b2tlbnNfdG9faWRzKHRva2VucyklMEFwcmludChpZHMp",highlighted:`sequence = <span class="hljs-string">"I've been waiting for a HuggingFace course my whole life."</span> | |
| model_inputs = tokenizer(sequence) | |
| <span class="hljs-built_in">print</span>(model_inputs[<span class="hljs-string">"input_ids"</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}}),v=new I({props:{code:"cHJpbnQodG9rZW5pemVyLmRlY29kZShtb2RlbF9pbnB1dHMlNUIlMjJpbnB1dF9pZHMlMjIlNUQpKSUwQXByaW50KHRva2VuaXplci5kZWNvZGUoaWRzKSk=",highlighted:`<span class="hljs-built_in">print</span>(tokenizer.decode(model_inputs[<span class="hljs-string">"input_ids"</span>])) | |
| <span class="hljs-built_in">print</span>(tokenizer.decode(ids))`,wrap:!1}}),Y=new I({props:{code:"JTIyJTVCQ0xTJTVEJTIwaSd2ZSUyMGJlZW4lMjB3YWl0aW5nJTIwZm9yJTIwYSUyMGh1Z2dpbmdmYWNlJTIwY291cnNlJTIwbXklMjB3aG9sZSUyMGxpZmUuJTIwJTVCU0VQJTVEJTIyJTBBJTIyaSd2ZSUyMGJlZW4lMjB3YWl0aW5nJTIwZm9yJTIwYSUyMGh1Z2dpbmdmYWNlJTIwY291cnNlJTIwbXklMjB3aG9sZSUyMGxpZmUuJTIy",highlighted:`<span class="hljs-string">"[CLS] i've been waiting for a huggingface course my whole life. [SEP]"</span> | |
| <span class="hljs-string">"i've been waiting for a huggingface course my whole life."</span>`,wrap:!1}}),H=new Wl({props:{title:"สรุป: จาก tokenizer ไปยังโมเดล",local:"สรป-จาก-tokenizer-ไปยงโมเดล",headingTag:"h2"}});const Hl=[je,ue],ll=[];function Ll(l,e){return l[0]==="pt"?0:1}return V=Ll(b),C=ll[V]=Hl[V](b),P=new ie({props:{source:"https://github.com/huggingface/course/blob/main/chapters/th/chapter2/6.mdx"}}),{c(){a=u("meta"),p=J(),t=u("p"),m=J(),i(Q.$$.fragment),nl=J(),i(d.$$.fragment),al=J(),i(f.$$.fragment),Jl=J(),y.c(),el=J(),h=u("p"),h.textContent=Nl,Ul=J(),k=u("p"),k.innerHTML=Fl,pl=J(),i(R.$$.fragment),ol=J(),Z=u("p"),Z.innerHTML=Bl,Tl=J(),A=u("p"),A.textContent=Sl,il=J(),i($.$$.fragment),rl=J(),E=u("p"),E.textContent=zl,Ml=J(),i(W.$$.fragment),cl=J(),N=u("p"),N.textContent=Ol,ul=J(),i(F.$$.fragment),jl=J(),B=u("p"),B.textContent=_l,ml=J(),i(S.$$.fragment),wl=J(),z=u("p"),z.innerHTML=xl,Il=J(),i(O.$$.fragment),bl=J(),i(_.$$.fragment),gl=J(),x=u("p"),x.textContent=Xl,yl=J(),i(X.$$.fragment),Vl=J(),i(G.$$.fragment),Cl=J(),q=u("p"),q.textContent=Gl,Ql=J(),i(v.$$.fragment),dl=J(),i(Y.$$.fragment),fl=J(),D=u("p"),D.innerHTML=ql,hl=J(),i(H.$$.fragment),kl=J(),L=u("p"),L.innerHTML=vl,Rl=J(),C.c(),sl=J(),i(P.$$.fragment),Zl=J(),tl=u("p"),this.h()},l(l){const e=pe("svelte-u9bgzb",document.head);a=j(e,"META",{name:!0,content:!0}),e.forEach(s),p=U(l),t=j(l,"P",{}),Kl(t).forEach(s),m=U(l),r(Q.$$.fragment,l),nl=U(l),r(d.$$.fragment,l),al=U(l),r(f.$$.fragment,l),Jl=U(l),y.l(l),el=U(l),h=j(l,"P",{"data-svelte-h":!0}),w(h)!=="svelte-rkbdnp"&&(h.textContent=Nl),Ul=U(l),k=j(l,"P",{"data-svelte-h":!0}),w(k)!=="svelte-1w855g0"&&(k.innerHTML=Fl),pl=U(l),r(R.$$.fragment,l),ol=U(l),Z=j(l,"P",{"data-svelte-h":!0}),w(Z)!=="svelte-1e3k74o"&&(Z.innerHTML=Bl),Tl=U(l),A=j(l,"P",{"data-svelte-h":!0}),w(A)!=="svelte-10v5b9q"&&(A.textContent=Sl),il=U(l),r($.$$.fragment,l),rl=U(l),E=j(l,"P",{"data-svelte-h":!0}),w(E)!=="svelte-ck5tfo"&&(E.textContent=zl),Ml=U(l),r(W.$$.fragment,l),cl=U(l),N=j(l,"P",{"data-svelte-h":!0}),w(N)!=="svelte-1jj0u2b"&&(N.textContent=Ol),ul=U(l),r(F.$$.fragment,l),jl=U(l),B=j(l,"P",{"data-svelte-h":!0}),w(B)!=="svelte-8itadv"&&(B.textContent=_l),ml=U(l),r(S.$$.fragment,l),wl=U(l),z=j(l,"P",{"data-svelte-h":!0}),w(z)!=="svelte-kubv7s"&&(z.innerHTML=xl),Il=U(l),r(O.$$.fragment,l),bl=U(l),r(_.$$.fragment,l),gl=U(l),x=j(l,"P",{"data-svelte-h":!0}),w(x)!=="svelte-1xkl9cq"&&(x.textContent=Xl),yl=U(l),r(X.$$.fragment,l),Vl=U(l),r(G.$$.fragment,l),Cl=U(l),q=j(l,"P",{"data-svelte-h":!0}),w(q)!=="svelte-10dsynk"&&(q.textContent=Gl),Ql=U(l),r(v.$$.fragment,l),dl=U(l),r(Y.$$.fragment,l),fl=U(l),D=j(l,"P",{"data-svelte-h":!0}),w(D)!=="svelte-huvrxw"&&(D.innerHTML=ql),hl=U(l),r(H.$$.fragment,l),kl=U(l),L=j(l,"P",{"data-svelte-h":!0}),w(L)!=="svelte-wwam1s"&&(L.innerHTML=vl),Rl=U(l),C.l(l),sl=U(l),r(P.$$.fragment,l),Zl=U(l),tl=j(l,"P",{}),Kl(tl).forEach(s),this.h()},h(){le(a,"name","hf:doc:metadata"),le(a,"content",we)},m(l,e){oe(document.head,a),n(l,p,e),n(l,t,e),n(l,m,e),M(Q,l,e),n(l,nl,e),M(d,l,e),n(l,al,e),M(f,l,e),n(l,Jl,e),K[g].m(l,e),n(l,el,e),n(l,h,e),n(l,Ul,e),n(l,k,e),n(l,pl,e),M(R,l,e),n(l,ol,e),n(l,Z,e),n(l,Tl,e),n(l,A,e),n(l,il,e),M($,l,e),n(l,rl,e),n(l,E,e),n(l,Ml,e),M(W,l,e),n(l,cl,e),n(l,N,e),n(l,ul,e),M(F,l,e),n(l,jl,e),n(l,B,e),n(l,ml,e),M(S,l,e),n(l,wl,e),n(l,z,e),n(l,Il,e),M(O,l,e),n(l,bl,e),M(_,l,e),n(l,gl,e),n(l,x,e),n(l,yl,e),M(X,l,e),n(l,Vl,e),M(G,l,e),n(l,Cl,e),n(l,q,e),n(l,Ql,e),M(v,l,e),n(l,dl,e),M(Y,l,e),n(l,fl,e),n(l,D,e),n(l,hl,e),M(H,l,e),n(l,kl,e),n(l,L,e),n(l,Rl,e),ll[V].m(l,e),n(l,sl,e),M(P,l,e),n(l,Zl,e),n(l,tl,e),Al=!0},p(l,[e]){const Pl={};e&1&&(Pl.fw=l[0]),Q.$set(Pl);let $l=g;g=Dl(l),g!==$l&&(se(),o(K[$l],1,1,()=>{K[$l]=null}),ee(),y=K[g],y||(y=K[g]=Yl[g](l),y.c()),T(y,1),y.m(el.parentNode,el));let El=V;V=Ll(l),V!==El&&(se(),o(ll[El],1,1,()=>{ll[El]=null}),ee(),C=ll[V],C||(C=ll[V]=Hl[V](l),C.c()),T(C,1),C.m(sl.parentNode,sl))},i(l){Al||(T(Q.$$.fragment,l),T(d.$$.fragment,l),T(f.$$.fragment,l),T(y),T(R.$$.fragment,l),T($.$$.fragment,l),T(W.$$.fragment,l),T(F.$$.fragment,l),T(S.$$.fragment,l),T(O.$$.fragment,l),T(_.$$.fragment,l),T(X.$$.fragment,l),T(G.$$.fragment,l),T(v.$$.fragment,l),T(Y.$$.fragment,l),T(H.$$.fragment,l),T(C),T(P.$$.fragment,l),Al=!0)},o(l){o(Q.$$.fragment,l),o(d.$$.fragment,l),o(f.$$.fragment,l),o(y),o(R.$$.fragment,l),o($.$$.fragment,l),o(W.$$.fragment,l),o(F.$$.fragment,l),o(S.$$.fragment,l),o(O.$$.fragment,l),o(_.$$.fragment,l),o(X.$$.fragment,l),o(G.$$.fragment,l),o(v.$$.fragment,l),o(Y.$$.fragment,l),o(H.$$.fragment,l),o(C),o(P.$$.fragment,l),Al=!1},d(l){l&&(s(p),s(t),s(m),s(nl),s(al),s(Jl),s(el),s(h),s(Ul),s(k),s(pl),s(ol),s(Z),s(Tl),s(A),s(il),s(rl),s(E),s(Ml),s(cl),s(N),s(ul),s(jl),s(B),s(ml),s(wl),s(z),s(Il),s(bl),s(gl),s(x),s(yl),s(Vl),s(Cl),s(q),s(Ql),s(dl),s(fl),s(D),s(hl),s(kl),s(L),s(Rl),s(sl),s(Zl),s(tl)),s(a),c(Q,l),c(d,l),c(f,l),K[g].d(l),c(R,l),c($,l),c(W,l),c(F,l),c(S,l),c(O,l),c(_,l),c(X,l),c(G,l),c(v,l),c(Y,l),c(H,l),ll[V].d(l),c(P,l)}}}const we='{"title":"ประกอบทุกอย่างเข้าด้วยกัน","local":"ประกอบทกอยางเขาดวยกน","sections":[{"title":"tokens พิเศษ","local":"tokens-พเศษ","sections":[],"depth":2},{"title":"สรุป: จาก tokenizer ไปยังโมเดล","local":"สรป-จาก-tokenizer-ไปยงโมเดล","sections":[],"depth":2}],"depth":1}';function Ie(b,a,p){let t="pt";return ae(()=>{const m=new URLSearchParams(window.location.search);p(0,t=m.get("fw")||"pt")}),[t]}class de extends Je{constructor(a){super(),Ue(this,a,Ie,me,ne,{})}}export{de as component}; | |
Xet Storage Details
- Size:
- 30.3 kB
- Xet hash:
- ba89f32fafdaa9ec4e0fa5edcc8d2e9d65927d868d14307eb931b6b2d3612d9b
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.