import{s as Bl,o as Wl,n as Ll}from"../chunks/scheduler.37c15a92.js";import{S as Fl,i as Xl,g as y,s as p,r as T,A as ql,h as f,f as s,c as u,j as Zl,u as d,x as b,k as de,y as Yl,a,v as g,t as m,b as L,d as o,w as J,m as Pl,n as Kl,p as F}from"../chunks/index.2bf4358c.js";import{T as zl}from"../chunks/Tip.363c041f.js";import{Y as Rl}from"../chunks/Youtube.1e50a667.js";import{C as j}from"../chunks/CodeBlock.4f5fc1ad.js";import{C as Sl}from"../chunks/CourseFloatingBanner.06521e8b.js";import{F as Ol}from"../chunks/FrameworkSwitchCourse.8d4d4ab6.js";import{H as fn,E as ts}from"../chunks/EditOnGithub.8916dc7c.js";function ns(M){let e,c;return e=new Sl({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/vi/chapter2/section2_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/vi/chapter2/section2_tf.ipynb"}]}}),{c(){T(e.$$.fragment)},l(n){d(e.$$.fragment,n)},m(n,r){g(e,n,r),c=!0},i(n){c||(o(e.$$.fragment,n),c=!0)},o(n){m(e.$$.fragment,n),c=!1},d(n){J(e,n)}}}function es(M){let e,c;return e=new Sl({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/vi/chapter2/section2_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/vi/chapter2/section2_pt.ipynb"}]}}),{c(){T(e.$$.fragment)},l(n){d(e.$$.fragment,n)},m(n,r){g(e,n,r),c=!0},i(n){c||(o(e.$$.fragment,n),c=!0)},o(n){m(e.$$.fragment,n),c=!1},d(n){J(e,n)}}}function ls(M){let e;return{c(){e=Pl("Đây là phần đầu tiên có nội dung hơi khác một chút tùy thuộc vào việc bạn sử dụng PyTorch hay TensorFlow. Chuyển đổi công tắc trên đầu tiêu đề để chọn nền tảng bạn thích!")},l(c){e=Kl(c,"Đây là phần đầu tiên có nội dung hơi khác một chút tùy thuộc vào việc bạn sử dụng PyTorch hay TensorFlow. Chuyển đổi công tắc trên đầu tiêu đề để chọn nền tảng bạn thích!")},m(c,n){a(c,e,n)},d(c){c&&s(e)}}}function ss(M){let e,c;return e=new Rl({props:{id:"wVN12smEvqg"}}),{c(){T(e.$$.fragment)},l(n){d(e.$$.fragment,n)},m(n,r){g(e,n,r),c=!0},i(n){c||(o(e.$$.fragment,n),c=!0)},o(n){m(e.$$.fragment,n),c=!1},d(n){J(e,n)}}}function as(M){let e,c;return e=new Rl({props:{id:"1pedAIvTWXk"}}),{c(){T(e.$$.fragment)},l(n){d(e.$$.fragment,n)},m(n,r){g(e,n,r),c=!0},i(n){c||(o(e.$$.fragment,n),c=!0)},o(n){m(e.$$.fragment,n),c=!1},d(n){J(e,n)}}}function cs(M){let e,c;return e=new j({props:{code:"cmF3X2lucHV0cyUyMCUzRCUyMCU1QiUwQSUyMCUyMCUyMCUyMCUyMkkndmUlMjBiZWVuJTIwd2FpdGluZyUyMGZvciUyMGElMjBIdWdnaW5nRmFjZSUyMGNvdXJzZSUyMG15JTIwd2hvbGUlMjBsaWZlLiUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMkklMjBoYXRlJTIwdGhpcyUyMHNvJTIwbXVjaCElMjIlMkMlMEElNUQlMEFpbnB1dHMlMjAlM0QlMjB0b2tlbml6ZXIocmF3X2lucHV0cyUyQyUyMHBhZGRpbmclM0RUcnVlJTJDJTIwdHJ1bmNhdGlvbiUzRFRydWUlMkMlMjByZXR1cm5fdGVuc29ycyUzRCUyMnRmJTIyKSUwQXByaW50KGlucHV0cyk=",highlighted:`raw_inputs = [
    <span class="hljs-string">&quot;I&#x27;ve been waiting for a HuggingFace course my whole life.&quot;</span>,
    <span class="hljs-string">&quot;I hate this so much!&quot;</span>,
]
inputs = tokenizer(raw_inputs, padding=<span class="hljs-literal">True</span>, truncation=<span class="hljs-literal">True</span>, return_tensors=<span class="hljs-string">&quot;tf&quot;</span>)
<span class="hljs-built_in">print</span>(inputs)`,wrap:!1}}),{c(){T(e.$$.fragment)},l(n){d(e.$$.fragment,n)},m(n,r){g(e,n,r),c=!0},i(n){c||(o(e.$$.fragment,n),c=!0)},o(n){m(e.$$.fragment,n),c=!1},d(n){J(e,n)}}}function is(M){let e,c;return e=new j({props:{code:"cmF3X2lucHV0cyUyMCUzRCUyMCU1QiUwQSUyMCUyMCUyMCUyMCUyMkkndmUlMjBiZWVuJTIwd2FpdGluZyUyMGZvciUyMGElMjBIdWdnaW5nRmFjZSUyMGNvdXJzZSUyMG15JTIwd2hvbGUlMjBsaWZlLiUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMkklMjBoYXRlJTIwdGhpcyUyMHNvJTIwbXVjaCElMjIlMkMlMEElNUQlMEFpbnB1dHMlMjAlM0QlMjB0b2tlbml6ZXIocmF3X2lucHV0cyUyQyUyMHBhZGRpbmclM0RUcnVlJTJDJTIwdHJ1bmNhdGlvbiUzRFRydWUlMkMlMjByZXR1cm5fdGVuc29ycyUzRCUyMnB0JTIyKSUwQXByaW50KGlucHV0cyk=",highlighted:`raw_inputs = [
    <span class="hljs-string">&quot;I&#x27;ve been waiting for a HuggingFace course my whole life.&quot;</span>,
    <span class="hljs-string">&quot;I hate this so much!&quot;</span>,
]
inputs = tokenizer(raw_inputs, padding=<span class="hljs-literal">True</span>, truncation=<span class="hljs-literal">True</span>, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)
<span class="hljs-built_in">print</span>(inputs)`,wrap:!1}}),{c(){T(e.$$.fragment)},l(n){d(e.$$.fragment,n)},m(n,r){g(e,n,r),c=!0},i(n){c||(o(e.$$.fragment,n),c=!0)},o(n){m(e.$$.fragment,n),c=!1},d(n){J(e,n)}}}function rs(M){let e,c="Đây là kết quả tương ứng tensor Tensorflow:",n,r,h;return r=new j({props:{code:"JTdCJTBBJTIwJTIwJTIwJTIwJ2lucHV0X2lkcyclM0ElMjAlM0N0Zi5UZW5zb3IlM0ElMjBzaGFwZSUzRCgyJTJDJTIwMTYpJTJDJTIwZHR5cGUlM0RpbnQzMiUyQyUyMG51bXB5JTNEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYXJyYXkoJTVCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVCJTIwJTIwMTAxJTJDJTIwJTIwMTA0NSUyQyUyMCUyMDEwMDUlMkMlMjAlMjAyMzEwJTJDJTIwJTIwMjA0MiUyQyUyMCUyMDM0MDMlMkMlMjAlMjAyMDA1JTJDJTIwJTIwMTAzNyUyQyUyMDE3NjYyJTJDJTIwMTIxNzIlMkMlMjAlMjAyNjA3JTJDJTIwJTIwMjAyNiUyQyUyMCUyMDI4NzglMkMlMjAlMjAyMTY2JTJDJTIwJTIwMTAxMiUyQyUyMCUyMCUyMDEwMiU1RCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QiUyMCUyMDEwMSUyQyUyMCUyMDEwNDUlMkMlMjAlMjA1MjIzJTJDJTIwJTIwMjAyMyUyQyUyMCUyMDIwNjElMkMlMjAlMjAyMTcyJTJDJTIwJTIwJTIwOTk5JTJDJTIwJTIwJTIwMTAyJTJDJTIwJTIwJTIwJTIwJTIwMCUyQyUyMCUyMCUyMCUyMCUyMDAlMkMlMjAlMjAlMjAlMjAlMjAwJTJDJTIwJTIwJTIwJTIwJTIwMCUyQyUyMCUyMCUyMCUyMCUyMDAlMkMlMjAlMjAlMjAlMjAlMjAwJTJDJTIwJTIwJTIwJTIwJTIwMCUyQyUyMCUyMCUyMCUyMCUyMDAlNUQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUQlMkMlMjBkdHlwZSUzRGludDMyKSUzRSUyQyUyMCUwQSUyMCUyMCUyMCUyMCdhdHRlbnRpb25fbWFzayclM0ElMjAlM0N0Zi5UZW5zb3IlM0ElMjBzaGFwZSUzRCgyJTJDJTIwMTYpJTJDJTIwZHR5cGUlM0RpbnQzMiUyQyUyMG51bXB5JTNEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYXJyYXkoJTVCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVCMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSU1RCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QjElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAwJTJDJTIwMCUyQyUyMDAlMkMlMjAwJTJDJTIwMCUyQyUyMDAlMkMlMjAwJTJDJTIwMCUyQyUyMDAlNUQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUQlMkMlMjBkdHlwZSUzRGludDMyKSUzRSUwQSU3RA==",highlighted:`{
    <span class="hljs-string">&#x27;input_ids&#x27;</span>: &lt;tf.Tensor: shape=(<span class="hljs-number">2</span>, <span class="hljs-number">16</span>), dtype=int32, numpy=
        array([
            [  <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">101</span>,  <span class="hljs-number">1045</span>,  <span class="hljs-number">5223</span>,  <span class="hljs-number">2023</span>,  <span class="hljs-number">2061</span>,  <span class="hljs-number">2172</span>,   <span class="hljs-number">999</span>,   <span class="hljs-number">102</span>,     <span class="hljs-number">0</span>,     <span class="hljs-number">0</span>,     <span class="hljs-number">0</span>,     <span class="hljs-number">0</span>,     <span class="hljs-number">0</span>,     <span class="hljs-number">0</span>,     <span class="hljs-number">0</span>,     <span class="hljs-number">0</span>]
        ], dtype=int32)&gt;, 
    <span class="hljs-string">&#x27;attention_mask&#x27;</span>: &lt;tf.Tensor: shape=(<span class="hljs-number">2</span>, <span class="hljs-number">16</span>), dtype=int32, numpy=
        array([
            [<span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>],
            [<span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>]
        ], dtype=int32)&gt;
}`,wrap:!1}}),{c(){e=y("p"),e.textContent=c,n=p(),T(r.$$.fragment)},l(i){e=f(i,"P",{"data-svelte-h":!0}),b(e)!=="svelte-13jvs2"&&(e.textContent=c),n=u(i),d(r.$$.fragment,i)},m(i,U){a(i,e,U),a(i,n,U),g(r,i,U),h=!0},i(i){h||(o(r.$$.fragment,i),h=!0)},o(i){m(r.$$.fragment,i),h=!1},d(i){i&&(s(e),s(n)),J(r,i)}}}function ps(M){let e,c="Đây là kết quả tương ứng tensor PyTorch:",n,r,h;return r=new j({props:{code:"JTdCJTBBJTIwJTIwJTIwJTIwJ2lucHV0X2lkcyclM0ElMjB0ZW5zb3IoJTVCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVCJTIwJTIwMTAxJTJDJTIwJTIwMTA0NSUyQyUyMCUyMDEwMDUlMkMlMjAlMjAyMzEwJTJDJTIwJTIwMjA0MiUyQyUyMCUyMDM0MDMlMkMlMjAlMjAyMDA1JTJDJTIwJTIwMTAzNyUyQyUyMDE3NjYyJTJDJTIwMTIxNzIlMkMlMjAyNjA3JTJDJTIwJTIwMjAyNiUyQyUyMCUyMDI4NzglMkMlMjAlMjAyMTY2JTJDJTIwJTIwMTAxMiUyQyUyMCUyMCUyMDEwMiU1RCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QiUyMCUyMDEwMSUyQyUyMCUyMDEwNDUlMkMlMjAlMjA1MjIzJTJDJTIwJTIwMjAyMyUyQyUyMCUyMDIwNjElMkMlMjAlMjAyMTcyJTJDJTIwJTIwJTIwOTk5JTJDJTIwJTIwJTIwMTAyJTJDJTIwJTIwJTIwJTIwJTIwMCUyQyUyMCUyMCUyMCUyMCUyMDAlMkMlMjAlMjAlMjAlMjAlMjAwJTJDJTIwJTIwJTIwJTIwJTIwMCUyQyUyMCUyMCUyMCUyMCUyMDAlMkMlMjAlMjAlMjAlMjAlMjAwJTJDJTIwJTIwJTIwJTIwJTIwMCUyQyUyMCUyMCUyMCUyMCUyMDAlNUQlMEElMjAlMjAlMjAlMjAlNUQpJTJDJTIwJTBBJTIwJTIwJTIwJTIwJ2F0dGVudGlvbl9tYXNrJyUzQSUyMHRlbnNvciglNUIlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUIxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVCMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDAlMkMlMjAwJTJDJTIwMCUyQyUyMDAlMkMlMjAwJTJDJTIwMCUyQyUyMDAlMkMlMjAwJTJDJTIwMCU1RCUwQSUyMCUyMCUyMCUyMCU1RCklMEElN0Q=",highlighted:`{
    <span class="hljs-string">&#x27;input_ids&#x27;</span>: tensor([
        [  <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">101</span>,  <span class="hljs-number">1045</span>,  <span class="hljs-number">5223</span>,  <span class="hljs-number">2023</span>,  <span class="hljs-number">2061</span>,  <span class="hljs-number">2172</span>,   <span class="hljs-number">999</span>,   <span class="hljs-number">102</span>,     <span class="hljs-number">0</span>,     <span class="hljs-number">0</span>,     <span class="hljs-number">0</span>,     <span class="hljs-number">0</span>,     <span class="hljs-number">0</span>,     <span class="hljs-number">0</span>,     <span class="hljs-number">0</span>,     <span class="hljs-number">0</span>]
    ]), 
    <span class="hljs-string">&#x27;attention_mask&#x27;</span>: tensor([
        [<span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>],
        [<span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>]
    ])
}`,wrap:!1}}),{c(){e=y("p"),e.textContent=c,n=p(),T(r.$$.fragment)},l(i){e=f(i,"P",{"data-svelte-h":!0}),b(e)!=="svelte-g55e0q"&&(e.textContent=c),n=u(i),d(r.$$.fragment,i)},m(i,U){a(i,e,U),a(i,n,U),g(r,i,U),h=!0},i(i){h||(o(r.$$.fragment,i),h=!0)},o(i){m(r.$$.fragment,i),h=!1},d(i){i&&(s(e),s(n)),J(r,i)}}}function us(M){let e,c="Chúng ta có thể tải xuống mô hình được huấn luyện trước của mình giống như cách đã làm với tokenizer. 🤗 Transformers cung cấp một lớp <code>TFAutoModel</code> cũng có phương thức <code>from_pretrained()</code>:",n,r,h;return r=new j({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRGQXV0b01vZGVsJTBBJTBBY2hlY2twb2ludCUyMCUzRCUyMCUyMmRpc3RpbGJlcnQtYmFzZS11bmNhc2VkLWZpbmV0dW5lZC1zc3QtMi1lbmdsaXNoJTIyJTBBbW9kZWwlMjAlM0QlMjBURkF1dG9Nb2RlbC5mcm9tX3ByZXRyYWluZWQoY2hlY2twb2ludCk=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TFAutoModel

checkpoint = <span class="hljs-string">&quot;distilbert-base-uncased-finetuned-sst-2-english&quot;</span>
model = TFAutoModel.from_pretrained(checkpoint)`,wrap:!1}}),{c(){e=y("p"),e.innerHTML=c,n=p(),T(r.$$.fragment)},l(i){e=f(i,"P",{"data-svelte-h":!0}),b(e)!=="svelte-1tbd6kb"&&(e.innerHTML=c),n=u(i),d(r.$$.fragment,i)},m(i,U){a(i,e,U),a(i,n,U),g(r,i,U),h=!0},i(i){h||(o(r.$$.fragment,i),h=!0)},o(i){m(r.$$.fragment,i),h=!1},d(i){i&&(s(e),s(n)),J(r,i)}}}function hs(M){let e,c="Chúng ta có thể tải xuống mô hình được huấn luyện trước của mình giống như cách đã làm với tokenizer. 🤗 Transformers cung cấp một lớp <code>AutoModel</code> cũng có phương thức <code>from_pretrained()</code>:",n,r,h;return r=new j({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbCUwQSUwQWNoZWNrcG9pbnQlMjAlM0QlMjAlMjJkaXN0aWxiZXJ0LWJhc2UtdW5jYXNlZC1maW5ldHVuZWQtc3N0LTItZW5nbGlzaCUyMiUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModel

checkpoint = <span class="hljs-string">&quot;distilbert-base-uncased-finetuned-sst-2-english&quot;</span>
model = AutoModel.from_pretrained(checkpoint)`,wrap:!1}}),{c(){e=y("p"),e.innerHTML=c,n=p(),T(r.$$.fragment)},l(i){e=f(i,"P",{"data-svelte-h":!0}),b(e)!=="svelte-br1cip"&&(e.innerHTML=c),n=u(i),d(r.$$.fragment,i)},m(i,U){a(i,e,U),a(i,n,U),g(r,i,U),h=!0},i(i){h||(o(r.$$.fragment,i),h=!0)},o(i){m(r.$$.fragment,i),h=!1},d(i){i&&(s(e),s(n)),J(r,i)}}}function ms(M){let e,c,n,r;return e=new j({props:{code:"b3V0cHV0cyUyMCUzRCUyMG1vZGVsKGlucHV0cyklMEFwcmludChvdXRwdXRzLmxhc3RfaGlkZGVuX3N0YXRlLnNoYXBlKQ==",highlighted:`outputs = model(inputs)
<span class="hljs-built_in">print</span>(outputs.last_hidden_state.shape)`,wrap:!1}}),n=new j({props:{code:"KDIlMkMlMjAxNiUyQyUyMDc2OCk=",highlighted:'(<span class="hljs-number">2</span>, <span class="hljs-number">16</span>, <span class="hljs-number">768</span>)',wrap:!1}}),{c(){T(e.$$.fragment),c=p(),T(n.$$.fragment)},l(h){d(e.$$.fragment,h),c=u(h),d(n.$$.fragment,h)},m(h,i){g(e,h,i),a(h,c,i),g(n,h,i),r=!0},i(h){r||(o(e.$$.fragment,h),o(n.$$.fragment,h),r=!0)},o(h){m(e.$$.fragment,h),m(n.$$.fragment,h),r=!1},d(h){h&&s(c),J(e,h),J(n,h)}}}function os(M){let e,c,n,r;return e=new j({props:{code:"b3V0cHV0cyUyMCUzRCUyMG1vZGVsKCoqaW5wdXRzKSUwQXByaW50KG91dHB1dHMubGFzdF9oaWRkZW5fc3RhdGUuc2hhcGUp",highlighted:`outputs = model(**inputs)
<span class="hljs-built_in">print</span>(outputs.last_hidden_state.shape)`,wrap:!1}}),n=new j({props:{code:"dG9yY2guU2l6ZSglNUIyJTJDJTIwMTYlMkMlMjA3NjglNUQp",highlighted:'torch.Size([<span class="hljs-number">2</span>, <span class="hljs-number">16</span>, <span class="hljs-number">768</span>])',wrap:!1}}),{c(){T(e.$$.fragment),c=p(),T(n.$$.fragment)},l(h){d(e.$$.fragment,h),c=u(h),d(n.$$.fragment,h)},m(h,i){g(e,h,i),a(h,c,i),g(n,h,i),r=!0},i(h){r||(o(e.$$.fragment,h),o(n.$$.fragment,h),r=!0)},o(h){m(e.$$.fragment,h),m(n.$$.fragment,h),r=!1},d(h){h&&s(c),J(e,h),J(n,h)}}}function Ms(M){let e,c="Với ví dụ của mình, chúng ta sẽ cần một mô hình có đầu phân loại tuần tự (để có thể phân loại các câu là khẳng định hoặc phủ định). Vì vậy, ta sẽ không sử dụng lớp <code>TFAutoModel</code> mà là <code>TFAutoModelForSequenceClassification</code>:",n,r,h;return r=new j({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRGQXV0b01vZGVsRm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbiUwQSUwQWNoZWNrcG9pbnQlMjAlM0QlMjAlMjJkaXN0aWxiZXJ0LWJhc2UtdW5jYXNlZC1maW5ldHVuZWQtc3N0LTItZW5nbGlzaCUyMiUwQW1vZGVsJTIwJTNEJTIwVEZBdXRvTW9kZWxGb3JTZXF1ZW5jZUNsYXNzaWZpY2F0aW9uLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KSUwQW91dHB1dHMlMjAlM0QlMjBtb2RlbChpbnB1dHMp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TFAutoModelForSequenceClassification

checkpoint = <span class="hljs-string">&quot;distilbert-base-uncased-finetuned-sst-2-english&quot;</span>
model = TFAutoModelForSequenceClassification.from_pretrained(checkpoint)
outputs = model(inputs)`,wrap:!1}}),{c(){e=y("p"),e.innerHTML=c,n=p(),T(r.$$.fragment)},l(i){e=f(i,"P",{"data-svelte-h":!0}),b(e)!=="svelte-dpid6d"&&(e.innerHTML=c),n=u(i),d(r.$$.fragment,i)},m(i,U){a(i,e,U),a(i,n,U),g(r,i,U),h=!0},i(i){h||(o(r.$$.fragment,i),h=!0)},o(i){m(r.$$.fragment,i),h=!1},d(i){i&&(s(e),s(n)),J(r,i)}}}function ys(M){let e,c="Với ví dụ của mình, chúng ta sẽ cần một mô hình có đầu phân loại tuần tự (để có thể phân loại các câu là khẳng định hoặc phủ định). Vì vậy, ta sẽ không sử dụng lớp <code>AutoModel</code> mà là <code>AutoModelForSequenceClassification</code>:",n,r,h;return r=new j({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24lMEElMEFjaGVja3BvaW50JTIwJTNEJTIwJTIyZGlzdGlsYmVydC1iYXNlLXVuY2FzZWQtZmluZXR1bmVkLXNzdC0yLWVuZ2xpc2glMjIlMEFtb2RlbCUyMCUzRCUyMEF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24uZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBb3V0cHV0cyUyMCUzRCUyMG1vZGVsKCoqaW5wdXRzKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForSequenceClassification

checkpoint = <span class="hljs-string">&quot;distilbert-base-uncased-finetuned-sst-2-english&quot;</span>
model = AutoModelForSequenceClassification.from_pretrained(checkpoint)
outputs = model(**inputs)`,wrap:!1}}),{c(){e=y("p"),e.innerHTML=c,n=p(),T(r.$$.fragment)},l(i){e=f(i,"P",{"data-svelte-h":!0}),b(e)!=="svelte-1tn0pjt"&&(e.innerHTML=c),n=u(i),d(r.$$.fragment,i)},m(i,U){a(i,e,U),a(i,n,U),g(r,i,U),h=!0},i(i){h||(o(r.$$.fragment,i),h=!0)},o(i){m(r.$$.fragment,i),h=!1},d(i){i&&(s(e),s(n)),J(r,i)}}}function fs(M){let e,c;return e=new j({props:{code:"KDIlMkMlMjAyKQ==",highlighted:'(<span class="hljs-number">2</span>, <span class="hljs-number">2</span>)',wrap:!1}}),{c(){T(e.$$.fragment)},l(n){d(e.$$.fragment,n)},m(n,r){g(e,n,r),c=!0},i(n){c||(o(e.$$.fragment,n),c=!0)},o(n){m(e.$$.fragment,n),c=!1},d(n){J(e,n)}}}function bs(M){let e,c;return e=new j({props:{code:"dG9yY2guU2l6ZSglNUIyJTJDJTIwMiU1RCk=",highlighted:'torch.Size([<span class="hljs-number">2</span>, <span class="hljs-number">2</span>])',wrap:!1}}),{c(){T(e.$$.fragment)},l(n){d(e.$$.fragment,n)},m(n,r){g(e,n,r),c=!0},i(n){c||(o(e.$$.fragment,n),c=!0)},o(n){m(e.$$.fragment,n),c=!1},d(n){J(e,n)}}}function Ts(M){let e,c;return e=new j({props:{code:"JTNDdGYuVGVuc29yJTNBJTIwc2hhcGUlM0QoMiUyQyUyMDIpJTJDJTIwZHR5cGUlM0RmbG9hdDMyJTJDJTIwbnVtcHklM0QlMEElMjAlMjAlMjAlMjBhcnJheSglNUIlNUItMS41NjA2OTkxJTJDJTIwJTIwMS42MTIyODQyJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVCJTIwNC4xNjkyMzElMjAlMkMlMjAtMy4zNDY0NDcyJTVEJTVEJTJDJTIwZHR5cGUlM0RmbG9hdDMyKSUzRQ==",highlighted:`&lt;tf.Tensor: shape=(<span class="hljs-number">2</span>, <span class="hljs-number">2</span>), dtype=float32, numpy=
    array([[-<span class="hljs-number">1.5606991</span>,  <span class="hljs-number">1.6122842</span>],
           [ <span class="hljs-number">4.169231</span> , -<span class="hljs-number">3.3464472</span>]], dtype=float32)&gt;`,wrap:!1}}),{c(){T(e.$$.fragment)},l(n){d(e.$$.fragment,n)},m(n,r){g(e,n,r),c=!0},i(n){c||(o(e.$$.fragment,n),c=!0)},o(n){m(e.$$.fragment,n),c=!1},d(n){J(e,n)}}}function ds(M){let e,c;return e=new j({props:{code:"dGVuc29yKCU1QiU1Qi0xLjU2MDclMkMlMjAlMjAxLjYxMjMlNUQlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUIlMjA0LjE2OTIlMkMlMjAtMy4zNDY0JTVEJTVEJTJDJTIwZ3JhZF9mbiUzRCUzQ0FkZG1tQmFja3dhcmQlM0Up",highlighted:`tensor([[-<span class="hljs-number">1.5607</span>,  <span class="hljs-number">1.6123</span>],
        [ <span class="hljs-number">4.1692</span>, -<span class="hljs-number">3.3464</span>]], grad_fn=&lt;AddmmBackward&gt;)`,wrap:!1}}),{c(){T(e.$$.fragment)},l(n){d(e.$$.fragment,n)},m(n,r){g(e,n,r),c=!0},i(n){c||(o(e.$$.fragment,n),c=!0)},o(n){m(e.$$.fragment,n),c=!1},d(n){J(e,n)}}}function gs(M){let e,c;return e=new j({props:{code:"aW1wb3J0JTIwdGVuc29yZmxvdyUyMGFzJTIwdGYlMEElMEFwcmVkaWN0aW9ucyUyMCUzRCUyMHRmLm1hdGguc29mdG1heChvdXRwdXRzLmxvZ2l0cyUyQyUyMGF4aXMlM0QtMSklMEFwcmludChwcmVkaWN0aW9ucyk=",highlighted:`<span class="hljs-keyword">import</span> tensorflow <span class="hljs-keyword">as</span> tf

predictions = tf.math.softmax(outputs.logits, axis=-<span class="hljs-number">1</span>)
<span class="hljs-built_in">print</span>(predictions)`,wrap:!1}}),{c(){T(e.$$.fragment)},l(n){d(e.$$.fragment,n)},m(n,r){g(e,n,r),c=!0},i(n){c||(o(e.$$.fragment,n),c=!0)},o(n){m(e.$$.fragment,n),c=!1},d(n){J(e,n)}}}function Js(M){let e,c;return e=new j({props:{code:"aW1wb3J0JTIwdG9yY2glMEElMEFwcmVkaWN0aW9ucyUyMCUzRCUyMHRvcmNoLm5uLmZ1bmN0aW9uYWwuc29mdG1heChvdXRwdXRzLmxvZ2l0cyUyQyUyMGRpbSUzRC0xKSUwQXByaW50KHByZWRpY3Rpb25zKQ==",highlighted:`<span class="hljs-keyword">import</span> torch

predictions = torch.nn.functional.softmax(outputs.logits, dim=-<span class="hljs-number">1</span>)
<span class="hljs-built_in">print</span>(predictions)`,wrap:!1}}),{c(){T(e.$$.fragment)},l(n){d(e.$$.fragment,n)},m(n,r){g(e,n,r),c=!0},i(n){c||(o(e.$$.fragment,n),c=!0)},o(n){m(e.$$.fragment,n),c=!1},d(n){J(e,n)}}}function Us(M){let e,c;return e=new j({props:{code:"dGYuVGVuc29yKCUwQSU1QiU1QjQuMDE5NTE2NzFlLTAyJTIwOS41OTgwNDgzM2UtMDElNUQlMEElMjAlNUI5Ljk5NDU1ODdlLTAxJTIwNS40NDE4NDI0ZS0wNCU1RCU1RCUyQyUyMHNoYXBlJTNEKDIlMkMlMjAyKSUyQyUyMGR0eXBlJTNEZmxvYXQzMik=",highlighted:`tf.Tensor(
[[<span class="hljs-number">4.01951671e-02</span> <span class="hljs-number">9.59804833e-01</span>]
 [<span class="hljs-number">9.9945587e-01</span> <span class="hljs-number">5.4418424e-04</span>]], shape=(<span class="hljs-number">2</span>, <span class="hljs-number">2</span>), dtype=float32)`,wrap:!1}}),{c(){T(e.$$.fragment)},l(n){d(e.$$.fragment,n)},m(n,r){g(e,n,r),c=!0},i(n){c||(o(e.$$.fragment,n),c=!0)},o(n){m(e.$$.fragment,n),c=!1},d(n){J(e,n)}}}function js(M){let e,c;return e=new j({props:{code:"dGVuc29yKCU1QiU1QjQuMDE5NWUtMDIlMkMlMjA5LjU5ODBlLTAxJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVCOS45OTQ2ZS0wMSUyQyUyMDUuNDQxOGUtMDQlNUQlNUQlMkMlMjBncmFkX2ZuJTNEJTNDU29mdG1heEJhY2t3YXJkJTNFKQ==",highlighted:`tensor([[<span class="hljs-number">4.0195e-02</span>, <span class="hljs-number">9.5980e-01</span>],
        [<span class="hljs-number">9.9946e-01</span>, <span class="hljs-number">5.4418e-04</span>]], grad_fn=&lt;SoftmaxBackward&gt;)`,wrap:!1}}),{c(){T(e.$$.fragment)},l(n){d(e.$$.fragment,n)},m(n,r){g(e,n,r),c=!0},i(n){c||(o(e.$$.fragment,n),c=!0)},o(n){m(e.$$.fragment,n),c=!1},d(n){J(e,n)}}}function ws(M){let e,c="✏️ <strong>Thử nghiệm thôi!</strong> Chọn hai (hoặc nhiều) văn bản của riêng bạn và chạy chúng thông qua <code>sentiment-analysis</code>. Sau đó, tự mình lặp lại các bước bạn đã thấy ở đây và kiểm tra xem bạn có thu được kết quả tương tự không!";return{c(){e=y("p"),e.innerHTML=c},l(n){e=f(n,"P",{"data-svelte-h":!0}),b(e)!=="svelte-egnqcp"&&(e.innerHTML=c)},m(n,r){a(n,e,r)},p:Ll,d(n){n&&s(e)}}}function ks(M){let e,c,n,r,h,i,U,Tn,w,k,sn,X,dn,C,_,an,K,xe='Hãy bắt đầu với một ví dụ hoàn chỉnh, cùng xem những gì xảy ra phía sau khi chúng tôi thực thi đoạn mã sau trong <a href="/course/chapter1">Chương 1</a>:',gn,O,Jn,tt,Ae="và thu được:",Un,nt,jn,et,Qe='Như chúng ta đã thấy trong <a href="/course/chapter1">Chương 1</a>, pipeline này nhóm ba bước lại với nhau: tiền xử lý, đưa các đầu vào qua mô hình và hậu xử lý:',wn,q,Ne='<img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter2/full_nlp_pipeline.svg" alt="The full NLP pipeline: tokenization of text, conversion to IDs, and inference through the Transformer model and the model head."/> <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter2/full_nlp_pipeline-dark.svg" alt="The full NLP pipeline: tokenization of text, conversion to IDs, and inference through the Transformer model and the model head."/>',kn,lt,De="Hãy cùng đi qua từng phần này.",Cn,st,_n,at,Ge="Giống như các mạng nơ-ron khác, các mô hình Transformers không thể xử lý trực tiếp văn bản thô, vì vậy bước đầu tiên trong quy trình của chúng ta là chuyển các đầu vào văn bản thành dạng số mà mô hình có thể hiểu được. Để làm điều này, chúng ta sử dụng <em>tokenizer</em>, hàm sẽ chịu trách nhiệm về:",$n,ct,Ee="<li>Tách đầu vào thành các từ, từ phụ, hoặc ký hiệu (như dấu chấm câu) được gọi là <em>tokens</em></li> <li>Ánh xạ mỗi token thành một số nguyên</li> <li>Thêm đầu vào bổ sung có thể hữu ích cho mô hình</li>",vn,it,Ve='Tất cả quá trình tiền xử lý này cần được thực hiện giống hệt như khi mô hình được huấn luyện trước, vì vậy trước tiên chúng ta cần tải xuống thông tin đó từ <a href="https://huggingface.co/models" rel="nofollow">Model Hub</a>. Để làm điều này, chúng tôi sử dụng lớp <code>AutoTokenizer</code> và phương thức <code>from_pretrained()</code> của nó. Sử dụng tên checkpoint mô hình của chúng ta, nó sẽ tự động tìm nạp dữ liệu được liên kết với tokenizer của mô hình và lưu vào bộ nhớ cache (vì vậy nó chỉ được tải xuống lần đầu tiên bạn chạy mã bên dưới).',In,rt,He='Vì checkpoint mặc định của <code>sentiment-analysis</code> là <code>distilbert-base-unsased-finetuned-sst-2-english</code> (bạn có thể xem thẻ mô hình của nó <a href="https://huggingface.co/distilbert-base-uncased-finetuned-sst-2-english" rel="nofollow">tại đây</a>), chúng ta chạy như sau:',xn,pt,An,ut,Ze="Khi có tokenizer rồi, chúng ta có thể truyền trực tiếp các câu của mình vào bên trong và nhận lại một từ điển đã sẵn sàng để cung cấp cho mô hình! Việc duy nhất cần làm là chuyển đổi danh sách các ID đầu vào thành các tensor.",Qn,ht,ze="Bạn có thể sử dụng 🤗 Transformers mà không phải lo lắng về khung ML nào được sử dụng phía dưới; nó có thể là PyTorch hoặc TensorFlow hoặc Flax đối với một số mô hình. Tuy nhiên, các mô hình Transformer chỉ chấp nhận <em>tensor</em> làm đầu vào. Nếu đây là lần đầu tiên bạn nghe về tensor, bạn có thể nghĩ chúng như là mảng NumPy. Mảng NumPy có thể là giá trị vô hướng (0D), vectơ (1D), ma trận (2D) hoặc có nhiều kích thước hơn. Nó thực sự là một tensor; Các tensor của các khung ML khác hoạt động tương tự và thường khởi tạo đơn giản như các mảng NumPy.",Nn,mt,Re="Để chỉ định loại tensors mà chúng ta muốn trả về (PyTorch, TensorFlow hoặc thuần NumPy), ta sử dụng tham số <code>return_tensors</code>:",Dn,$,v,cn,ot,Se="Đừng lo lắng về padding (đệm) và truncation (cắt bớt) vội; chúng tôi sẽ giải thích những điều đó sau. Những điều chính cần nhớ ở đây là bạn có thể chuyển một câu hoặc một danh sách các câu, cũng như chỉ định loại tensors bạn muốn lấy lại (nếu không có loại nào được truyền vào, mặc định bạn sẽ nhận được kết quả trả về là một danh sách).",Gn,I,x,rn,Mt,Be="Bản thân kết quả đầu ra là một từ điển có chứa hai khóa, <code>input_ids</code> và <code>attention_mask</code>. <code>input_ids</code> chứa hai hàng số nguyên (một cho mỗi câu) là số nhận dạng duy nhất của token trong mỗi câu. Chúng tôi sẽ giải thích <code>attention_mask</code> là gì ở phần sau của chương này.",En,yt,Vn,A,Q,pn,ft,We="Trong đoạn mã này, chúng ta đã tải xuống cùng một checkpoint đã sử dụng trong pipeline của mình trước đây (nó được lưu vào bộ nhớ đệm rồi) và khởi tạo một mô hình với nó.",Hn,bt,Le="Kiến trúc này chỉ chứa mô-đun Transformer cơ sở: với một số đầu vào, nó xuất ra cái mà chúng ta sẽ gọi là <em>hidden states</em> (<em>trạng thái ẩn</em>), còn được gọi là <em>đặc trưng</em>. Đối với mỗi đầu vào mô hình, chúng ta sẽ truy xuất một vectơ đa chiều đại diện cho <strong>sự hiểu theo ngữ cảnh của đầu vào đó bằng mô hình Transformer</strong>.",Zn,Tt,Fe="Nếu điều này không hợp lý, đừng lo lắng về nó. Chúng tôi sẽ giải thích tất cả sau.",zn,dt,Xe='Mặc dù những trạng thái ẩn này có thể tự hữu ích, nhưng chúng thường là đầu vào cho một phần khác của mô hình, được gọi là <em>head</em> (<em>đầu</em>). Trong <a href="/course/chapter1">Chapter 1</a>, các tác vụ khác nhau có thể được thực hiện với cùng một kiến trúc, nhưng mỗi tác vụ này sẽ có một phần đầu khác nhau được liên kết với nó.',Rn,gt,Sn,Jt,qe="Đầu ra vectơ của mô-đun Transformer thường lớn với ba chiều:",Bn,Ut,Ye="<li><strong>Kích thước batch (lô)</strong>: Số chuỗi được xử lý tại một thời điểm (trong ví dụ của chúng tôi là 2).</li> <li><strong>Độ dài chuỗi</strong>: Độ dài biểu diễn số của chuỗi (trong ví dụ của chúng tôi là 16).</li> <li><strong>Kích thước ẩn</strong>: Kích thước vectơ của mỗi đầu vào mô hình.</li>",Wn,jt,Pe="Nó được cho là “có số chiều cao” vì giá trị cuối cùng. Kích thước ẩn có thể rất lớn (768 là giá trị phổ biến cho các mô hình nhỏ hơn và trong các mô hình lớn hơn, con số này có thể đạt tới 3072 hoặc hơn).",Ln,wt,Ke="Có thể thấy điều này nếu chúng ta cung cấp các đầu vào đã xử lý trước cho mô hình của mình:",Fn,N,D,un,kt,Oe="Lưu ý rằng đầu ra của các mô hình 🤗 Transformers hoạt động giống như các <code>namedtuple</code> hoặc từ điển. Bạn có thể truy cập các phần tử theo thuộc tính (như chúng ta đã làm) hoặc theo khóa (<code>outputs[&quot;last_hidden_state&quot;]</code>), hoặc thậm chí theo chỉ mục nếu bạn biết chính xác nơi bạn đang tìm kiếm (<code>outputs[0]</code>).",Xn,Ct,qn,_t,tl="Các đầu mô hình lấy vector đa chiều của các trạng thái ẩn làm đầu vào và chiếu chúng lên một chiều khác. Chúng thường bao gồm một hoặc một vài lớp tuyến tính:",Yn,Y,nl='<img class="block dark:hidden" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter2/transformer_and_head.svg" alt="A Transformer network alongside its head."/> <img class="hidden dark:block" src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter2/transformer_and_head-dark.svg" alt="A Transformer network alongside its head."/>',Pn,$t,el="Đầu ra của mô hình Transformer được gửi trực tiếp đến đầu mô hình để được xử lý.",Kn,vt,ll="Trong biểu đồ này, mô hình được biểu diễn bằng lớp nhúng của nó và các lớp tiếp theo. Lớp nhúng chuyển đổi mỗi ID trong đầu vào được mã hóa thành một vectơ đại diện cho token được liên kết. Các lớp tiếp theo thao tác các vectơ đó bằng cách sử dụng cơ chế chú ý để tạo ra biểu diễn cuối cùng của các câu.",On,It,sl="Có nhiều kiến trúc khác nhau có sẵn trong 🤗 Transformers, với mỗi kiến trúc được thiết kế xoay quanh một tác vụ cụ thể. Đây là danh sách không đầy đủ:",te,xt,al="<li><code>*Model</code> (truy xuất các trạng thái ẩn)</li> <li><code>*ForCausalLM</code></li> <li><code>*ForMaskedLM</code></li> <li><code>*ForMultipleChoice</code></li> <li><code>*ForQuestionAnswering</code></li> <li><code>*ForSequenceClassification</code></li> <li><code>*ForTokenClassification</code></li> <li>and others 🤗</li>",ne,G,E,hn,At,cl="Giờ thì nếu chúng ta nhìn vào hình dạng các đầu vào của mình, kích thước sẽ thấp hơn nhiều: đầu mô hình lấy các vectơ đa chiều mà chúng ta đã thấy trước đây và xuất ra các vectơ có chứa hai giá trị (mỗi giá trị tương ứng một nhãn):",ee,Qt,le,V,H,mn,Nt,il="Vì chúng ta chỉ có hai câu và hai nhãn, kết quả nhận được từ mô hình của chúng ta là dạng 2 x 2.",se,Dt,ae,Gt,rl="Các giá trị chúng ta nhận được dưới dạng đầu ra từ mô hình không nhất thiết phải tự có nghĩa. Hãy cùng xem:",ce,Et,ie,Z,z,on,Vt,pl='Mô hình đã dự đoán <code>[-1.5607, 1.6123]</code> cho câu đầu tiên và <code>[4.1692, -3.3464]</code> cho câu thứ hai. Đó không phải là xác suất mà là <em>logits</em>, điểm số thô, chưa chuẩn hóa được xuất ra bởi lớp cuối cùng của mô hình. Để được chuyển đổi thành xác suất, chúng cần phải trải qua lớp <a href="https://en.wikipedia.org/wiki/Softmax_function" rel="nofollow">SoftMax</a> (tất cả các mô hình 🤗 Transformers đều xuất ra logits, vì hàm mất mát cho việc huấn luyện thường sẽ kết hợp hàm kích hoạt cuối cùng, chẳng hạn như SoftMax, với hàm mất mát thực tế, chẳng hạn như entropy chéo):',re,R,S,Mn,B,W,yn,Ht,ul="Bây giờ chúng ta có thể thấy rằng mô hình đã dự đoán <code>[0.0402, 0.9598]</code> cho câu đầu tiên và <code>[0.9995, 0.0005]</code> cho câu thứ hai. Đây là những điểm xác suất dễ nhận biết.",pe,Zt,hl="Để lấy các nhãn tương ứng với từng vị trí, chúng ta có thể kiểm tra thuộc tính <code>id2label</code> của cấu hình mô hình (tìm hiểu thêm về điều này trong phần tiếp theo):",ue,zt,he,Rt,me,St,ml="Bây giờ chúng ta có thể kết luận rằng mô hình đã dự đoán như sau:",oe,Bt,ol="<li>Câu đầu tiên: TIÊU CỰC: 0,0402, TÍCH CỰC: 0,9598</li> <li>Câu thứ hai: TIÊU CỰC: 0,9995, TÍCH CỰC: 0,0005</li>",Me,Wt,Ml="Chúng tôi đã tái tạo thành công ba bước của quy trình: tiền xử lý bằng tokenizers, đưa đầu vào qua mô hình và hậu xử lý! Giờ thì chúng ta hãy dành một chút thời gian để đi sâu hơn vào từng bước đó.",ye,P,fe,Lt,be,bn,Te;h=new Ol({props:{fw:M[0]}}),U=new fn({props:{title:"Đằng sau pipeline",local:"đằng-sau-pipeline",headingTag:"h1"}});const yl=[es,ns],Ft=[];function fl(t,l){return t[0]==="pt"?0:1}w=fl(M),k=Ft[w]=yl[w](M),X=new zl({props:{$$slots:{default:[ls]},$$scope:{ctx:M}}});const bl=[as,ss],Xt=[];function Tl(t,l){return t[0]==="pt"?0:1}C=Tl(M),_=Xt[C]=bl[C](M),O=new j({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMHBpcGVsaW5lJTBBJTBBY2xhc3NpZmllciUyMCUzRCUyMHBpcGVsaW5lKCUyMnNlbnRpbWVudC1hbmFseXNpcyUyMiklMEFjbGFzc2lmaWVyKCUwQSUyMCUyMCUyMCUyMCU1QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMkkndmUlMjBiZWVuJTIwd2FpdGluZyUyMGZvciUyMGElMjBIdWdnaW5nRmFjZSUyMGNvdXJzZSUyMG15JTIwd2hvbGUlMjBsaWZlLiUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMkklMjBoYXRlJTIwdGhpcyUyMHNvJTIwbXVjaCElMjIlMkMlMEElMjAlMjAlMjAlMjAlNUQlMEEp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline

classifier = pipeline(<span class="hljs-string">&quot;sentiment-analysis&quot;</span>)
classifier(
    [
        <span class="hljs-string">&quot;I&#x27;ve been waiting for a HuggingFace course my whole life.&quot;</span>,
        <span class="hljs-string">&quot;I hate this so much!&quot;</span>,
    ]
)`,wrap:!1}}),nt=new j({props:{code:"JTVCJTdCJ2xhYmVsJyUzQSUyMCdQT1NJVElWRSclMkMlMjAnc2NvcmUnJTNBJTIwMC45NTk4MDQ3MTM3MjYwNDM3JTdEJTJDJTBBJTIwJTdCJ2xhYmVsJyUzQSUyMCdORUdBVElWRSclMkMlMjAnc2NvcmUnJTNBJTIwMC45OTk0NTU4MDk1OTMyMDA3JTdEJTVE",highlighted:`[{<span class="hljs-string">&#x27;label&#x27;</span>: <span class="hljs-string">&#x27;POSITIVE&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.9598047137260437</span>},
 {<span class="hljs-string">&#x27;label&#x27;</span>: <span class="hljs-string">&#x27;NEGATIVE&#x27;</span>, <span class="hljs-string">&#x27;score&#x27;</span>: <span class="hljs-number">0.9994558095932007</span>}]`,wrap:!1}}),st=new fn({props:{title:"Tiền xử lý với một tokenizer",local:"tiền-xử-lý-với-một-tokenizer",headingTag:"h2"}}),pt=new j({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEElMEFjaGVja3BvaW50JTIwJTNEJTIwJTIyZGlzdGlsYmVydC1iYXNlLXVuY2FzZWQtZmluZXR1bmVkLXNzdC0yLWVuZ2xpc2glMjIlMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KQ==",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)`,wrap:!1}});const dl=[is,cs],qt=[];function gl(t,l){return t[0]==="pt"?0:1}$=gl(M),v=qt[$]=dl[$](M);const Jl=[ps,rs],Yt=[];function Ul(t,l){return t[0]==="pt"?0:1}I=Ul(M),x=Yt[I]=Jl[I](M),yt=new fn({props:{title:"Đi qua mô hình",local:"đi-qua-mô-hình",headingTag:"h2"}});const jl=[hs,us],Pt=[];function wl(t,l){return t[0]==="pt"?0:1}A=wl(M),Q=Pt[A]=jl[A](M),gt=new fn({props:{title:"Một vectơ đa chiều",local:"một-vectơ-đa-chiều",headingTag:"h3"}});const kl=[os,ms],Kt=[];function Cl(t,l){return t[0]==="pt"?0:1}N=Cl(M),D=Kt[N]=kl[N](M),Ct=new fn({props:{title:"Đầu mô hình: Hợp lý tời từng con số",local:"đầu-mô-hình-hợp-lý-tời-từng-con-số",headingTag:"h3"}});const _l=[ys,Ms],Ot=[];function $l(t,l){return t[0]==="pt"?0:1}G=$l(M),E=Ot[G]=_l[G](M),Qt=new j({props:{code:"cHJpbnQob3V0cHV0cy5sb2dpdHMuc2hhcGUp",highlighted:'<span class="hljs-built_in">print</span>(outputs.logits.shape)',wrap:!1}});const vl=[bs,fs],tn=[];function Il(t,l){return t[0]==="pt"?0:1}V=Il(M),H=tn[V]=vl[V](M),Dt=new fn({props:{title:"Hậu xử lý đầu ra",local:"hậu-xử-lý-đầu-ra",headingTag:"h2"}}),Et=new j({props:{code:"cHJpbnQob3V0cHV0cy5sb2dpdHMp",highlighted:'<span class="hljs-built_in">print</span>(outputs.logits)',wrap:!1}});const xl=[ds,Ts],nn=[];function Al(t,l){return t[0]==="pt"?0:1}Z=Al(M),z=nn[Z]=xl[Z](M);const Ql=[Js,gs],en=[];function Nl(t,l){return t[0]==="pt"?0:1}R=Nl(M),S=en[R]=Ql[R](M);const Dl=[js,Us],ln=[];function Gl(t,l){return t[0]==="pt"?0:1}return B=Gl(M),W=ln[B]=Dl[B](M),zt=new j({props:{code:"bW9kZWwuY29uZmlnLmlkMmxhYmVs",highlighted:"model.config.id2label",wrap:!1}}),Rt=new j({props:{code:"JTdCMCUzQSUyMCdORUdBVElWRSclMkMlMjAxJTNBJTIwJ1BPU0lUSVZFJyU3RA==",highlighted:'{<span class="hljs-number">0</span>: <span class="hljs-string">&#x27;NEGATIVE&#x27;</span>, <span class="hljs-number">1</span>: <span class="hljs-string">&#x27;POSITIVE&#x27;</span>}',wrap:!1}}),P=new zl({props:{$$slots:{default:[ws]},$$scope:{ctx:M}}}),Lt=new ts({props:{source:"https://github.com/huggingface/course/blob/main/chapters/vi/chapter2/2.mdx"}}),{c(){e=y("meta"),c=p(),n=y("p"),r=p(),T(h.$$.fragment),i=p(),T(U.$$.fragment),Tn=p(),k.c(),sn=p(),T(X.$$.fragment),dn=p(),_.c(),an=p(),K=y("p"),K.innerHTML=xe,gn=p(),T(O.$$.fragment),Jn=p(),tt=y("p"),tt.textContent=Ae,Un=p(),T(nt.$$.fragment),jn=p(),et=y("p"),et.innerHTML=Qe,wn=p(),q=y("div"),q.innerHTML=Ne,kn=p(),lt=y("p"),lt.textContent=De,Cn=p(),T(st.$$.fragment),_n=p(),at=y("p"),at.innerHTML=Ge,$n=p(),ct=y("ul"),ct.innerHTML=Ee,vn=p(),it=y("p"),it.innerHTML=Ve,In=p(),rt=y("p"),rt.innerHTML=He,xn=p(),T(pt.$$.fragment),An=p(),ut=y("p"),ut.textContent=Ze,Qn=p(),ht=y("p"),ht.innerHTML=ze,Nn=p(),mt=y("p"),mt.innerHTML=Re,Dn=p(),v.c(),cn=p(),ot=y("p"),ot.textContent=Se,Gn=p(),x.c(),rn=p(),Mt=y("p"),Mt.innerHTML=Be,En=p(),T(yt.$$.fragment),Vn=p(),Q.c(),pn=p(),ft=y("p"),ft.textContent=We,Hn=p(),bt=y("p"),bt.innerHTML=Le,Zn=p(),Tt=y("p"),Tt.textContent=Fe,zn=p(),dt=y("p"),dt.innerHTML=Xe,Rn=p(),T(gt.$$.fragment),Sn=p(),Jt=y("p"),Jt.textContent=qe,Bn=p(),Ut=y("ul"),Ut.innerHTML=Ye,Wn=p(),jt=y("p"),jt.textContent=Pe,Ln=p(),wt=y("p"),wt.textContent=Ke,Fn=p(),D.c(),un=p(),kt=y("p"),kt.innerHTML=Oe,Xn=p(),T(Ct.$$.fragment),qn=p(),_t=y("p"),_t.textContent=tl,Yn=p(),Y=y("div"),Y.innerHTML=nl,Pn=p(),$t=y("p"),$t.textContent=el,Kn=p(),vt=y("p"),vt.textContent=ll,On=p(),It=y("p"),It.textContent=sl,te=p(),xt=y("ul"),xt.innerHTML=al,ne=p(),E.c(),hn=p(),At=y("p"),At.textContent=cl,ee=p(),T(Qt.$$.fragment),le=p(),H.c(),mn=p(),Nt=y("p"),Nt.textContent=il,se=p(),T(Dt.$$.fragment),ae=p(),Gt=y("p"),Gt.textContent=rl,ce=p(),T(Et.$$.fragment),ie=p(),z.c(),on=p(),Vt=y("p"),Vt.innerHTML=pl,re=p(),S.c(),Mn=p(),W.c(),yn=p(),Ht=y("p"),Ht.innerHTML=ul,pe=p(),Zt=y("p"),Zt.innerHTML=hl,ue=p(),T(zt.$$.fragment),he=p(),T(Rt.$$.fragment),me=p(),St=y("p"),St.textContent=ml,oe=p(),Bt=y("ul"),Bt.innerHTML=ol,Me=p(),Wt=y("p"),Wt.textContent=Ml,ye=p(),T(P.$$.fragment),fe=p(),T(Lt.$$.fragment),be=p(),bn=y("p"),this.h()},l(t){const l=ql("svelte-u9bgzb",document.head);e=f(l,"META",{name:!0,content:!0}),l.forEach(s),c=u(t),n=f(t,"P",{}),Zl(n).forEach(s),r=u(t),d(h.$$.fragment,t),i=u(t),d(U.$$.fragment,t),Tn=u(t),k.l(t),sn=u(t),d(X.$$.fragment,t),dn=u(t),_.l(t),an=u(t),K=f(t,"P",{"data-svelte-h":!0}),b(K)!=="svelte-12ymkmp"&&(K.innerHTML=xe),gn=u(t),d(O.$$.fragment,t),Jn=u(t),tt=f(t,"P",{"data-svelte-h":!0}),b(tt)!=="svelte-99g8l6"&&(tt.textContent=Ae),Un=u(t),d(nt.$$.fragment,t),jn=u(t),et=f(t,"P",{"data-svelte-h":!0}),b(et)!=="svelte-1mf0ugc"&&(et.innerHTML=Qe),wn=u(t),q=f(t,"DIV",{class:!0,"data-svelte-h":!0}),b(q)!=="svelte-fbe70j"&&(q.innerHTML=Ne),kn=u(t),lt=f(t,"P",{"data-svelte-h":!0}),b(lt)!=="svelte-1k1avj2"&&(lt.textContent=De),Cn=u(t),d(st.$$.fragment,t),_n=u(t),at=f(t,"P",{"data-svelte-h":!0}),b(at)!=="svelte-1gxaui6"&&(at.innerHTML=Ge),$n=u(t),ct=f(t,"UL",{"data-svelte-h":!0}),b(ct)!=="svelte-1t5hpik"&&(ct.innerHTML=Ee),vn=u(t),it=f(t,"P",{"data-svelte-h":!0}),b(it)!=="svelte-1or7k28"&&(it.innerHTML=Ve),In=u(t),rt=f(t,"P",{"data-svelte-h":!0}),b(rt)!=="svelte-15l107l"&&(rt.innerHTML=He),xn=u(t),d(pt.$$.fragment,t),An=u(t),ut=f(t,"P",{"data-svelte-h":!0}),b(ut)!=="svelte-poro1y"&&(ut.textContent=Ze),Qn=u(t),ht=f(t,"P",{"data-svelte-h":!0}),b(ht)!=="svelte-jiuzgi"&&(ht.innerHTML=ze),Nn=u(t),mt=f(t,"P",{"data-svelte-h":!0}),b(mt)!=="svelte-1rw9z7d"&&(mt.innerHTML=Re),Dn=u(t),v.l(t),cn=u(t),ot=f(t,"P",{"data-svelte-h":!0}),b(ot)!=="svelte-1fr2c6w"&&(ot.textContent=Se),Gn=u(t),x.l(t),rn=u(t),Mt=f(t,"P",{"data-svelte-h":!0}),b(Mt)!=="svelte-14rikxq"&&(Mt.innerHTML=Be),En=u(t),d(yt.$$.fragment,t),Vn=u(t),Q.l(t),pn=u(t),ft=f(t,"P",{"data-svelte-h":!0}),b(ft)!=="svelte-1oju4wy"&&(ft.textContent=We),Hn=u(t),bt=f(t,"P",{"data-svelte-h":!0}),b(bt)!=="svelte-1k2u2bn"&&(bt.innerHTML=Le),Zn=u(t),Tt=f(t,"P",{"data-svelte-h":!0}),b(Tt)!=="svelte-irg5q4"&&(Tt.textContent=Fe),zn=u(t),dt=f(t,"P",{"data-svelte-h":!0}),b(dt)!=="svelte-evahp9"&&(dt.innerHTML=Xe),Rn=u(t),d(gt.$$.fragment,t),Sn=u(t),Jt=f(t,"P",{"data-svelte-h":!0}),b(Jt)!=="svelte-vcztty"&&(Jt.textContent=qe),Bn=u(t),Ut=f(t,"UL",{"data-svelte-h":!0}),b(Ut)!=="svelte-30crxr"&&(Ut.innerHTML=Ye),Wn=u(t),jt=f(t,"P",{"data-svelte-h":!0}),b(jt)!=="svelte-15oqgcn"&&(jt.textContent=Pe),Ln=u(t),wt=f(t,"P",{"data-svelte-h":!0}),b(wt)!=="svelte-1oyx4i2"&&(wt.textContent=Ke),Fn=u(t),D.l(t),un=u(t),kt=f(t,"P",{"data-svelte-h":!0}),b(kt)!=="svelte-11w4x3q"&&(kt.innerHTML=Oe),Xn=u(t),d(Ct.$$.fragment,t),qn=u(t),_t=f(t,"P",{"data-svelte-h":!0}),b(_t)!=="svelte-ctb5xr"&&(_t.textContent=tl),Yn=u(t),Y=f(t,"DIV",{class:!0,"data-svelte-h":!0}),b(Y)!=="svelte-8mo6lt"&&(Y.innerHTML=nl),Pn=u(t),$t=f(t,"P",{"data-svelte-h":!0}),b($t)!=="svelte-1xvaowr"&&($t.textContent=el),Kn=u(t),vt=f(t,"P",{"data-svelte-h":!0}),b(vt)!=="svelte-ydi6a0"&&(vt.textContent=ll),On=u(t),It=f(t,"P",{"data-svelte-h":!0}),b(It)!=="svelte-6mo9x9"&&(It.textContent=sl),te=u(t),xt=f(t,"UL",{"data-svelte-h":!0}),b(xt)!=="svelte-1xajmmj"&&(xt.innerHTML=al),ne=u(t),E.l(t),hn=u(t),At=f(t,"P",{"data-svelte-h":!0}),b(At)!=="svelte-3y9wej"&&(At.textContent=cl),ee=u(t),d(Qt.$$.fragment,t),le=u(t),H.l(t),mn=u(t),Nt=f(t,"P",{"data-svelte-h":!0}),b(Nt)!=="svelte-cmzqvl"&&(Nt.textContent=il),se=u(t),d(Dt.$$.fragment,t),ae=u(t),Gt=f(t,"P",{"data-svelte-h":!0}),b(Gt)!=="svelte-12e4cf2"&&(Gt.textContent=rl),ce=u(t),d(Et.$$.fragment,t),ie=u(t),z.l(t),on=u(t),Vt=f(t,"P",{"data-svelte-h":!0}),b(Vt)!=="svelte-t78rtc"&&(Vt.innerHTML=pl),re=u(t),S.l(t),Mn=u(t),W.l(t),yn=u(t),Ht=f(t,"P",{"data-svelte-h":!0}),b(Ht)!=="svelte-1ivcpmi"&&(Ht.innerHTML=ul),pe=u(t),Zt=f(t,"P",{"data-svelte-h":!0}),b(Zt)!=="svelte-2jnsaa"&&(Zt.innerHTML=hl),ue=u(t),d(zt.$$.fragment,t),he=u(t),d(Rt.$$.fragment,t),me=u(t),St=f(t,"P",{"data-svelte-h":!0}),b(St)!=="svelte-1b302ck"&&(St.textContent=ml),oe=u(t),Bt=f(t,"UL",{"data-svelte-h":!0}),b(Bt)!=="svelte-1mxrb9x"&&(Bt.innerHTML=ol),Me=u(t),Wt=f(t,"P",{"data-svelte-h":!0}),b(Wt)!=="svelte-rk8mjb"&&(Wt.textContent=Ml),ye=u(t),d(P.$$.fragment,t),fe=u(t),d(Lt.$$.fragment,t),be=u(t),bn=f(t,"P",{}),Zl(bn).forEach(s),this.h()},h(){de(e,"name","hf:doc:metadata"),de(e,"content",Cs),de(q,"class","flex justify-center"),de(Y,"class","flex justify-center")},m(t,l){Yl(document.head,e),a(t,c,l),a(t,n,l),a(t,r,l),g(h,t,l),a(t,i,l),g(U,t,l),a(t,Tn,l),Ft[w].m(t,l),a(t,sn,l),g(X,t,l),a(t,dn,l),Xt[C].m(t,l),a(t,an,l),a(t,K,l),a(t,gn,l),g(O,t,l),a(t,Jn,l),a(t,tt,l),a(t,Un,l),g(nt,t,l),a(t,jn,l),a(t,et,l),a(t,wn,l),a(t,q,l),a(t,kn,l),a(t,lt,l),a(t,Cn,l),g(st,t,l),a(t,_n,l),a(t,at,l),a(t,$n,l),a(t,ct,l),a(t,vn,l),a(t,it,l),a(t,In,l),a(t,rt,l),a(t,xn,l),g(pt,t,l),a(t,An,l),a(t,ut,l),a(t,Qn,l),a(t,ht,l),a(t,Nn,l),a(t,mt,l),a(t,Dn,l),qt[$].m(t,l),a(t,cn,l),a(t,ot,l),a(t,Gn,l),Yt[I].m(t,l),a(t,rn,l),a(t,Mt,l),a(t,En,l),g(yt,t,l),a(t,Vn,l),Pt[A].m(t,l),a(t,pn,l),a(t,ft,l),a(t,Hn,l),a(t,bt,l),a(t,Zn,l),a(t,Tt,l),a(t,zn,l),a(t,dt,l),a(t,Rn,l),g(gt,t,l),a(t,Sn,l),a(t,Jt,l),a(t,Bn,l),a(t,Ut,l),a(t,Wn,l),a(t,jt,l),a(t,Ln,l),a(t,wt,l),a(t,Fn,l),Kt[N].m(t,l),a(t,un,l),a(t,kt,l),a(t,Xn,l),g(Ct,t,l),a(t,qn,l),a(t,_t,l),a(t,Yn,l),a(t,Y,l),a(t,Pn,l),a(t,$t,l),a(t,Kn,l),a(t,vt,l),a(t,On,l),a(t,It,l),a(t,te,l),a(t,xt,l),a(t,ne,l),Ot[G].m(t,l),a(t,hn,l),a(t,At,l),a(t,ee,l),g(Qt,t,l),a(t,le,l),tn[V].m(t,l),a(t,mn,l),a(t,Nt,l),a(t,se,l),g(Dt,t,l),a(t,ae,l),a(t,Gt,l),a(t,ce,l),g(Et,t,l),a(t,ie,l),nn[Z].m(t,l),a(t,on,l),a(t,Vt,l),a(t,re,l),en[R].m(t,l),a(t,Mn,l),ln[B].m(t,l),a(t,yn,l),a(t,Ht,l),a(t,pe,l),a(t,Zt,l),a(t,ue,l),g(zt,t,l),a(t,he,l),g(Rt,t,l),a(t,me,l),a(t,St,l),a(t,oe,l),a(t,Bt,l),a(t,Me,l),a(t,Wt,l),a(t,ye,l),g(P,t,l),a(t,fe,l),g(Lt,t,l),a(t,be,l),a(t,bn,l),Te=!0},p(t,[l]){const El={};l&1&&(El.fw=t[0]),h.$set(El);let ge=w;w=fl(t),w!==ge&&(F(),m(Ft[ge],1,1,()=>{Ft[ge]=null}),L(),k=Ft[w],k||(k=Ft[w]=yl[w](t),k.c()),o(k,1),k.m(sn.parentNode,sn));const Vl={};l&2&&(Vl.$$scope={dirty:l,ctx:t}),X.$set(Vl);let Je=C;C=Tl(t),C!==Je&&(F(),m(Xt[Je],1,1,()=>{Xt[Je]=null}),L(),_=Xt[C],_||(_=Xt[C]=bl[C](t),_.c()),o(_,1),_.m(an.parentNode,an));let Ue=$;$=gl(t),$!==Ue&&(F(),m(qt[Ue],1,1,()=>{qt[Ue]=null}),L(),v=qt[$],v||(v=qt[$]=dl[$](t),v.c()),o(v,1),v.m(cn.parentNode,cn));let je=I;I=Ul(t),I!==je&&(F(),m(Yt[je],1,1,()=>{Yt[je]=null}),L(),x=Yt[I],x||(x=Yt[I]=Jl[I](t),x.c()),o(x,1),x.m(rn.parentNode,rn));let we=A;A=wl(t),A!==we&&(F(),m(Pt[we],1,1,()=>{Pt[we]=null}),L(),Q=Pt[A],Q||(Q=Pt[A]=jl[A](t),Q.c()),o(Q,1),Q.m(pn.parentNode,pn));let ke=N;N=Cl(t),N!==ke&&(F(),m(Kt[ke],1,1,()=>{Kt[ke]=null}),L(),D=Kt[N],D||(D=Kt[N]=kl[N](t),D.c()),o(D,1),D.m(un.parentNode,un));let Ce=G;G=$l(t),G!==Ce&&(F(),m(Ot[Ce],1,1,()=>{Ot[Ce]=null}),L(),E=Ot[G],E||(E=Ot[G]=_l[G](t),E.c()),o(E,1),E.m(hn.parentNode,hn));let _e=V;V=Il(t),V!==_e&&(F(),m(tn[_e],1,1,()=>{tn[_e]=null}),L(),H=tn[V],H||(H=tn[V]=vl[V](t),H.c()),o(H,1),H.m(mn.parentNode,mn));let $e=Z;Z=Al(t),Z!==$e&&(F(),m(nn[$e],1,1,()=>{nn[$e]=null}),L(),z=nn[Z],z||(z=nn[Z]=xl[Z](t),z.c()),o(z,1),z.m(on.parentNode,on));let ve=R;R=Nl(t),R!==ve&&(F(),m(en[ve],1,1,()=>{en[ve]=null}),L(),S=en[R],S||(S=en[R]=Ql[R](t),S.c()),o(S,1),S.m(Mn.parentNode,Mn));let Ie=B;B=Gl(t),B!==Ie&&(F(),m(ln[Ie],1,1,()=>{ln[Ie]=null}),L(),W=ln[B],W||(W=ln[B]=Dl[B](t),W.c()),o(W,1),W.m(yn.parentNode,yn));const Hl={};l&2&&(Hl.$$scope={dirty:l,ctx:t}),P.$set(Hl)},i(t){Te||(o(h.$$.fragment,t),o(U.$$.fragment,t),o(k),o(X.$$.fragment,t),o(_),o(O.$$.fragment,t),o(nt.$$.fragment,t),o(st.$$.fragment,t),o(pt.$$.fragment,t),o(v),o(x),o(yt.$$.fragment,t),o(Q),o(gt.$$.fragment,t),o(D),o(Ct.$$.fragment,t),o(E),o(Qt.$$.fragment,t),o(H),o(Dt.$$.fragment,t),o(Et.$$.fragment,t),o(z),o(S),o(W),o(zt.$$.fragment,t),o(Rt.$$.fragment,t),o(P.$$.fragment,t),o(Lt.$$.fragment,t),Te=!0)},o(t){m(h.$$.fragment,t),m(U.$$.fragment,t),m(k),m(X.$$.fragment,t),m(_),m(O.$$.fragment,t),m(nt.$$.fragment,t),m(st.$$.fragment,t),m(pt.$$.fragment,t),m(v),m(x),m(yt.$$.fragment,t),m(Q),m(gt.$$.fragment,t),m(D),m(Ct.$$.fragment,t),m(E),m(Qt.$$.fragment,t),m(H),m(Dt.$$.fragment,t),m(Et.$$.fragment,t),m(z),m(S),m(W),m(zt.$$.fragment,t),m(Rt.$$.fragment,t),m(P.$$.fragment,t),m(Lt.$$.fragment,t),Te=!1},d(t){t&&(s(c),s(n),s(r),s(i),s(Tn),s(sn),s(dn),s(an),s(K),s(gn),s(Jn),s(tt),s(Un),s(jn),s(et),s(wn),s(q),s(kn),s(lt),s(Cn),s(_n),s(at),s($n),s(ct),s(vn),s(it),s(In),s(rt),s(xn),s(An),s(ut),s(Qn),s(ht),s(Nn),s(mt),s(Dn),s(cn),s(ot),s(Gn),s(rn),s(Mt),s(En),s(Vn),s(pn),s(ft),s(Hn),s(bt),s(Zn),s(Tt),s(zn),s(dt),s(Rn),s(Sn),s(Jt),s(Bn),s(Ut),s(Wn),s(jt),s(Ln),s(wt),s(Fn),s(un),s(kt),s(Xn),s(qn),s(_t),s(Yn),s(Y),s(Pn),s($t),s(Kn),s(vt),s(On),s(It),s(te),s(xt),s(ne),s(hn),s(At),s(ee),s(le),s(mn),s(Nt),s(se),s(ae),s(Gt),s(ce),s(ie),s(on),s(Vt),s(re),s(Mn),s(yn),s(Ht),s(pe),s(Zt),s(ue),s(he),s(me),s(St),s(oe),s(Bt),s(Me),s(Wt),s(ye),s(fe),s(be),s(bn)),s(e),J(h,t),J(U,t),Ft[w].d(t),J(X,t),Xt[C].d(t),J(O,t),J(nt,t),J(st,t),J(pt,t),qt[$].d(t),Yt[I].d(t),J(yt,t),Pt[A].d(t),J(gt,t),Kt[N].d(t),J(Ct,t),Ot[G].d(t),J(Qt,t),tn[V].d(t),J(Dt,t),J(Et,t),nn[Z].d(t),en[R].d(t),ln[B].d(t),J(zt,t),J(Rt,t),J(P,t),J(Lt,t)}}}const Cs='{"title":"Đằng sau pipeline","local":"đằng-sau-pipeline","sections":[{"title":"Tiền xử lý với một tokenizer","local":"tiền-xử-lý-với-một-tokenizer","sections":[],"depth":2},{"title":"Đi qua mô hình","local":"đi-qua-mô-hình","sections":[{"title":"Một vectơ đa chiều","local":"một-vectơ-đa-chiều","sections":[],"depth":3},{"title":"Đầu mô hình: Hợp lý tời từng con số","local":"đầu-mô-hình-hợp-lý-tời-từng-con-số","sections":[],"depth":3}],"depth":2},{"title":"Hậu xử lý đầu ra","local":"hậu-xử-lý-đầu-ra","sections":[],"depth":2}],"depth":1}';function _s(M,e,c){let n="pt";return Wl(()=>{const r=new URLSearchParams(window.location.search);c(0,n=r.get("fw")||"pt")}),[n]}class Gs extends Fl{constructor(e){super(),Xl(this,e,_s,ks,Bl,{})}}export{Gs as component};
