import{s as nn,o as an,n as ln}from"../chunks/scheduler.39a43cde.js";import{S as rn,i as cn,g as o,s as i,r as m,A as pn,h as M,f as d,c as p,j as w,u as J,x as j,k as _,y as n,a as k,v as U,t as u,b as bs,d as h,w as f,m as on,n as Mn,p as gs}from"../chunks/index.23ec2204.js";import{T as Pl}from"../chunks/Tip.99600415.js";import{Y as Ze}from"../chunks/Youtube.70c27fbc.js";import{C}from"../chunks/CodeBlock.bc48cdff.js";import{C as tn}from"../chunks/CourseFloatingBanner.c5f43a8d.js";import{F as dn}from"../chunks/FrameworkSwitchCourse.9ca78d26.js";import{H as He}from"../chunks/Heading.c42e7061.js";function hn(T){let e,r;return e=new tn({props:{chapter:3,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"گوگل کولَب",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/fa/chapter3/section2_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/fa/chapter3/section2_tf.ipynb"}]}}),{c(){m(e.$$.fragment)},l(t){J(e.$$.fragment,t)},m(t,c){U(e,t,c),r=!0},i(t){r||(h(e.$$.fragment,t),r=!0)},o(t){u(e.$$.fragment,t),r=!1},d(t){f(e,t)}}}function un(T){let e,r;return e=new tn({props:{chapter:3,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"گوگل کولَب",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/fa/chapter3/section2_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/fa/chapter3/section2_pt.ipynb"}]}}),{c(){m(e.$$.fragment)},l(t){J(e.$$.fragment,t)},m(t,c){U(e,t,c),r=!0},i(t){r||(h(e.$$.fragment,t),r=!0)},o(t){u(e.$$.fragment,t),r=!1},d(t){f(e,t)}}}function yn(T){let e,r='در این بخش در ادامه مثال <a href="/course/chapter2">فصل قبل</a>، نحوه تعلیم مدل‌های دسته‌بندی کننده رشته‌ها را در یک بَتچ با استفاده از تِنسورفلو شرح می‌دهیم:',t,c,y,x;return y=new C({props:{code:"aW1wb3J0JTIwdGVuc29yZmxvdyUyMGFzJTIwdGYlMEFpbXBvcnQlMjBudW1weSUyMGFzJTIwbnAlMEFmcm9tJTIwdHJhbnNmb3JtZXJzJTIwaW1wb3J0JTIwQXV0b1Rva2VuaXplciUyQyUyMFRGQXV0b01vZGVsRm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbiUwQSUwQSUyMyUyMFNhbWUlMjBhcyUyMGJlZm9yZSUwQWNoZWNrcG9pbnQlMjAlM0QlMjAlMjJiZXJ0LWJhc2UtdW5jYXNlZCUyMiUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBbW9kZWwlMjAlM0QlMjBURkF1dG9Nb2RlbEZvclNlcXVlbmNlQ2xhc3NpZmljYXRpb24uZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBc2VxdWVuY2VzJTIwJTNEJTIwJTVCJTBBJTIwJTIwJTIwJTIwJTIySSd2ZSUyMGJlZW4lMjB3YWl0aW5nJTIwZm9yJTIwYSUyMEh1Z2dpbmdGYWNlJTIwY291cnNlJTIwbXklMjB3aG9sZSUyMGxpZmUuJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIyVGhpcyUyMGNvdXJzZSUyMGlzJTIwYW1hemluZyElMjIlMkMlMEElNUQlMEFiYXRjaCUyMCUzRCUyMGRpY3QodG9rZW5pemVyKHNlcXVlbmNlcyUyQyUyMHBhZGRpbmclM0RUcnVlJTJDJTIwdHJ1bmNhdGlvbiUzRFRydWUlMkMlMjByZXR1cm5fdGVuc29ycyUzRCUyMnRmJTIyKSklMEElMEElMjMlMjBUaGlzJTIwaXMlMjBuZXclMEFtb2RlbC5jb21waWxlKG9wdGltaXplciUzRCUyMmFkYW0lMjIlMkMlMjBsb3NzJTNEJTIyc3BhcnNlX2NhdGVnb3JpY2FsX2Nyb3NzZW50cm9weSUyMiklMEFsYWJlbHMlMjAlM0QlMjB0Zi5jb252ZXJ0X3RvX3RlbnNvciglNUIxJTJDJTIwMSU1RCklMEFtb2RlbC50cmFpbl9vbl9iYXRjaChiYXRjaCUyQyUyMGxhYmVscyk=",highlighted:`<span class="hljs-keyword">import</span> tensorflow <span class="hljs-keyword">as</span> tf
<span class="hljs-keyword">import</span> numpy <span class="hljs-keyword">as</span> np
<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer, TFAutoModelForSequenceClassification

<span class="hljs-comment"># Same as before</span>
checkpoint = <span class="hljs-string">&quot;bert-base-uncased&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;This course is amazing!&quot;</span>,
]
batch = <span class="hljs-built_in">dict</span>(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>))

<span class="hljs-comment"># This is new</span>
model.<span class="hljs-built_in">compile</span>(optimizer=<span class="hljs-string">&quot;adam&quot;</span>, loss=<span class="hljs-string">&quot;sparse_categorical_crossentropy&quot;</span>)
labels = tf.convert_to_tensor([<span class="hljs-number">1</span>, <span class="hljs-number">1</span>])
model.train_on_batch(batch, labels)`,wrap:!1}}),{c(){e=o("p"),e.innerHTML=r,t=i(),c=o("div"),m(y.$$.fragment),this.h()},l(s){e=M(s,"P",{"data-svelte-h":!0}),j(e)!=="svelte-161h743"&&(e.innerHTML=r),t=p(s),c=M(s,"DIV",{dir:!0});var b=w(c);J(y.$$.fragment,b),b.forEach(d),this.h()},h(){_(c,"dir","ltr")},m(s,b){k(s,e,b),k(s,t,b),k(s,c,b),U(y,c,null),x=!0},i(s){x||(h(y.$$.fragment,s),x=!0)},o(s){u(y.$$.fragment,s),x=!1},d(s){s&&(d(e),d(t),d(c)),f(y)}}}function jn(T){let e,r='در این بخش در ادامه مثال <a href="/course/chapter2">فصل قبل</a>، نحوه تعلیم مدل‌های دسته‌بندی کننده رشته‌ها را در یک بَتچ با استفاده از پایتورچ شرح می‌دهیم:',t,c,y,x;return y=new C({props:{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwdHJhbnNmb3JtZXJzJTIwaW1wb3J0JTIwQWRhbVclMkMlMjBBdXRvVG9rZW5pemVyJTJDJTIwQXV0b01vZGVsRm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbiUwQSUwQSUyMyUyMFNhbWUlMjBhcyUyMGJlZm9yZSUwQWNoZWNrcG9pbnQlMjAlM0QlMjAlMjJiZXJ0LWJhc2UtdW5jYXNlZCUyMiUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBbW9kZWwlMjAlM0QlMjBBdXRvTW9kZWxGb3JTZXF1ZW5jZUNsYXNzaWZpY2F0aW9uLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KSUwQXNlcXVlbmNlcyUyMCUzRCUyMCU1QiUwQSUyMCUyMCUyMCUyMCUyMkkndmUlMjBiZWVuJTIwd2FpdGluZyUyMGZvciUyMGElMjBIdWdnaW5nRmFjZSUyMGNvdXJzZSUyMG15JTIwd2hvbGUlMjBsaWZlLiUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMlRoaXMlMjBjb3Vyc2UlMjBpcyUyMGFtYXppbmchJTIyJTJDJTBBJTVEJTBBYmF0Y2glMjAlM0QlMjB0b2tlbml6ZXIoc2VxdWVuY2VzJTJDJTIwcGFkZGluZyUzRFRydWUlMkMlMjB0cnVuY2F0aW9uJTNEVHJ1ZSUyQyUyMHJldHVybl90ZW5zb3JzJTNEJTIycHQlMjIpJTBBJTBBJTIzJTIwVGhpcyUyMGlzJTIwbmV3JTBBYmF0Y2glNUIlMjJsYWJlbHMlMjIlNUQlMjAlM0QlMjB0b3JjaC50ZW5zb3IoJTVCMSUyQyUyMDElNUQpJTBBJTBBb3B0aW1pemVyJTIwJTNEJTIwQWRhbVcobW9kZWwucGFyYW1ldGVycygpKSUwQWxvc3MlMjAlM0QlMjBtb2RlbCgqKmJhdGNoKS5sb3NzJTBBbG9zcy5iYWNrd2FyZCgpJTBBb3B0aW1pemVyLnN0ZXAoKQ==",highlighted:`<span class="hljs-keyword">import</span> torch
<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AdamW, AutoTokenizer, AutoModelForSequenceClassification

<span class="hljs-comment"># Same as before</span>
checkpoint = <span class="hljs-string">&quot;bert-base-uncased&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;This course is amazing!&quot;</span>,
]
batch = 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>)

<span class="hljs-comment"># This is new</span>
batch[<span class="hljs-string">&quot;labels&quot;</span>] = torch.tensor([<span class="hljs-number">1</span>, <span class="hljs-number">1</span>])

optimizer = AdamW(model.parameters())
loss = model(**batch).loss
loss.backward()
optimizer.step()`,wrap:!1}}),{c(){e=o("p"),e.innerHTML=r,t=i(),c=o("div"),m(y.$$.fragment),this.h()},l(s){e=M(s,"P",{"data-svelte-h":!0}),j(e)!=="svelte-jyoxwm"&&(e.innerHTML=r),t=p(s),c=M(s,"DIV",{dir:!0});var b=w(c);J(y.$$.fragment,b),b.forEach(d),this.h()},h(){_(c,"dir","ltr")},m(s,b){k(s,e,b),k(s,t,b),k(s,c,b),U(y,c,null),x=!0},i(s){x||(h(y.$$.fragment,s),x=!0)},o(s){u(y.$$.fragment,s),x=!1},d(s){s&&(d(e),d(t),d(c)),f(y)}}}function mn(T){let e,r;return e=new Ze({props:{id:"W_gMJF0xomE"}}),{c(){m(e.$$.fragment)},l(t){J(e.$$.fragment,t)},m(t,c){U(e,t,c),r=!0},i(t){r||(h(e.$$.fragment,t),r=!0)},o(t){u(e.$$.fragment,t),r=!1},d(t){f(e,t)}}}function Jn(T){let e,r;return e=new Ze({props:{id:"_BZearw7f0w"}}),{c(){m(e.$$.fragment)},l(t){J(e.$$.fragment,t)},m(t,c){U(e,t,c),r=!0},i(t){r||(h(e.$$.fragment,t),r=!0)},o(t){u(e.$$.fragment,t),r=!1},d(t){f(e,t)}}}function Un(T){let e;return{c(){e=on("✏️ **امتحان کنید!** عنصر شماره ۱۵ از مجموعه `training` و عنصر شماره ۸۷ از مجموعه `validation` را مشاهده کنید. برچسب‌های آنها چیست؟")},l(r){e=Mn(r,"✏️ **امتحان کنید!** عنصر شماره ۱۵ از مجموعه `training` و عنصر شماره ۸۷ از مجموعه `validation` را مشاهده کنید. برچسب‌های آنها چیست؟")},m(r,t){k(r,e,t)},d(r){r&&d(e)}}}function fn(T){let e,r;return e=new Ze({props:{id:"P-rZWqcB6CE"}}),{c(){m(e.$$.fragment)},l(t){J(e.$$.fragment,t)},m(t,c){U(e,t,c),r=!0},i(t){r||(h(e.$$.fragment,t),r=!0)},o(t){u(e.$$.fragment,t),r=!1},d(t){f(e,t)}}}function Tn(T){let e,r;return e=new Ze({props:{id:"0u3ioSwev3s"}}),{c(){m(e.$$.fragment)},l(t){J(e.$$.fragment,t)},m(t,c){U(e,t,c),r=!0},i(t){r||(h(e.$$.fragment,t),r=!0)},o(t){u(e.$$.fragment,t),r=!1},d(t){f(e,t)}}}function bn(T){let e,r="✏️ <strong>امتحان کنید!</strong> عنصر شماره ۱۵ از مجموعه <code>training</code> را بردارید و دو جمله را به صورت جداگانه و جفت توکِن کنید. تفاوت دو نتیجه چیست؟";return{c(){e=o("p"),e.innerHTML=r},l(t){e=M(t,"P",{"data-svelte-h":!0}),j(e)!=="svelte-16csf4p"&&(e.innerHTML=r)},m(t,c){k(t,e,c)},p:ln,d(t){t&&d(e)}}}function gn(T){let e,r="تابعی که مسئول کنار هم گذاشتن نمونه‌ها در یک بَتچ می‌باشد <em>تابع ترکیب کننده</em> خوانده می‌شود. تابع ترکیب کننده پیش‌فرض تابعی است که فقط نمونه‌های شما را به <code>tf.Tensor</code> تبدیل کرده و آنها را به هم الحاق می‌کند (اگر عناصر شما لیست، تاپِل یا دیکشنری باشند این کار به صورت بازگشتی انجام می‌گیرد). از آنجایی که ورودی‌های ما هم‌طول نخواهند بود استفاده از این تابع برای ما امکان پذیر نیست. ناهم‌طولی ورودی‌ها به این خاطر است که ما فرایند هم‌طول‌سازی را عمدا به تعویق انداختیم تا فقط در زمان نیاز آن را روی هر بَتچ اجرا کنیم و از داشتن ورودی‌های بیش از اندازه طولانی با مقدار زیادی هم‌طول‌سازی پیش‌گیری کنیم. این روش، فرایند تعلیم را تا اندازه‌ای سرعت می‌بخشد، اما توجه داشته باشید که اگر شما در حال تعلیم روی TPU هستید این کار می‌تواند مشکل ساز باشد چرا که TPU اشکال معین را ترجیح می‌دهد، حتی اگر نیاز به هم‌طول‌سازی اضافه داشته باشد.";return{c(){e=o("p"),e.innerHTML=r},l(t){e=M(t,"P",{"data-svelte-h":!0}),j(e)!=="svelte-i7c8sq"&&(e.innerHTML=r)},m(t,c){k(t,e,c)},d(t){t&&d(e)}}}function wn(T){let e,r="تابعی که مسئول کنار هم گذاشتن نمونه‌ها در یک بَتچ می‌باشد <em>تابع ترکیب کننده</em> خوانده می‌شود. شما می‌توانید این تابع را که در حالت پیش‌ فرض نمونه‌های شما را به تِنسور پایتورچ تبدیل کرده و به هم الحاق می‌کند (اگر عناصر شما لیست، تاپِل یا دیکشنری باشند این کار به صورت بازگشتی انجام می‌گیرد) هنگام ساختن <code>DataLoader</code> به داخل آن ارسال کنید. از آنجایی که ورودی‌های ما هم‌طول نخواهند بود استفاده از این تابع برای ما امکان‌پذیر نیست. ناهم‌طولی ورودی‌ها به این خاطر است که ما فرایند هم‌طول‌سازی را عمدا به تعویق انداختیم تا فقط در زمان نیاز آن را روی هر بَتچ اجرا کنیم و از داشتن ورودی‌های بیش از اندازه طولانی با مقدار زیادی هم‌طول‌سازی پیش‌گیری کنیم. این روش، فرایند تعلیم را تا اندازه‌ای سرعت می‌بخشد، اما توجه داشته باشید که اگر شما در حال تعلیم روی TPU هستید این کار می‌تواند مشکل ساز باشد چرا که TPU اشکال معین را ترجیح می‌دهد، حتی اگر نیاز به هم‌طول‌سازی اضافه داشته باشد.";return{c(){e=o("p"),e.innerHTML=r},l(t){e=M(t,"P",{"data-svelte-h":!0}),j(e)!=="svelte-14mld1s"&&(e.innerHTML=r)},m(t,c){k(t,e,c)},d(t){t&&d(e)}}}function _n(T){let e,r,t;return r=new C({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMERhdGFDb2xsYXRvcldpdGhQYWRkaW5nJTBBJTBBZGF0YV9jb2xsYXRvciUyMCUzRCUyMERhdGFDb2xsYXRvcldpdGhQYWRkaW5nKHRva2VuaXplciUzRHRva2VuaXplciUyQyUyMHJldHVybl90ZW5zb3JzJTNEJTIydGYlMjIp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> DataCollatorWithPadding

data_collator = DataCollatorWithPadding(tokenizer=tokenizer, return_tensors=<span class="hljs-string">&quot;tf&quot;</span>)`,wrap:!1}}),{c(){e=o("div"),m(r.$$.fragment),this.h()},l(c){e=M(c,"DIV",{dir:!0});var y=w(e);J(r.$$.fragment,y),y.forEach(d),this.h()},h(){_(e,"dir","ltr")},m(c,y){k(c,e,y),U(r,e,null),t=!0},i(c){t||(h(r.$$.fragment,c),t=!0)},o(c){u(r.$$.fragment,c),t=!1},d(c){c&&d(e),f(r)}}}function kn(T){let e,r,t;return r=new C({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMERhdGFDb2xsYXRvcldpdGhQYWRkaW5nJTBBJTBBZGF0YV9jb2xsYXRvciUyMCUzRCUyMERhdGFDb2xsYXRvcldpdGhQYWRkaW5nKHRva2VuaXplciUzRHRva2VuaXplcik=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> DataCollatorWithPadding

data_collator = DataCollatorWithPadding(tokenizer=tokenizer)`,wrap:!1}}),{c(){e=o("div"),m(r.$$.fragment),this.h()},l(c){e=M(c,"DIV",{dir:!0});var y=w(e);J(r.$$.fragment,y),y.forEach(d),this.h()},h(){_(e,"dir","ltr")},m(c,y){k(c,e,y),U(r,e,null),t=!0},i(c){t||(h(r.$$.fragment,c),t=!0)},o(c){u(r.$$.fragment,c),t=!1},d(c){c&&d(e),f(r)}}}function $n(T){let e,r,t,c,y="به نظر خوب می‌آید! اکنون که از متن خالص به بَتچ‌هایی رسیده‌ایم که مدل‌مان می‌تواند با آنها کار کند، آماده کوک‌ کردن مدل هستیم:",x;return r=new C({props:{code:"JTdCJ2F0dGVudGlvbl9tYXNrJyUzQSUyMHRvcmNoLlNpemUoJTVCOCUyQyUyMDY3JTVEKSUyQyUwQSUyMCdpbnB1dF9pZHMnJTNBJTIwdG9yY2guU2l6ZSglNUI4JTJDJTIwNjclNUQpJTJDJTBBJTIwJ3Rva2VuX3R5cGVfaWRzJyUzQSUyMHRvcmNoLlNpemUoJTVCOCUyQyUyMDY3JTVEKSUyQyUwQSUyMCdsYWJlbHMnJTNBJTIwdG9yY2guU2l6ZSglNUI4JTVEKSU3RA==",highlighted:`{<span class="hljs-string">&#x27;attention_mask&#x27;</span>: torch.Size([<span class="hljs-number">8</span>, <span class="hljs-number">67</span>]),
 <span class="hljs-string">&#x27;input_ids&#x27;</span>: torch.Size([<span class="hljs-number">8</span>, <span class="hljs-number">67</span>]),
 <span class="hljs-string">&#x27;token_type_ids&#x27;</span>: torch.Size([<span class="hljs-number">8</span>, <span class="hljs-number">67</span>]),
 <span class="hljs-string">&#x27;labels&#x27;</span>: torch.Size([<span class="hljs-number">8</span>])}`,wrap:!1}}),{c(){e=o("div"),m(r.$$.fragment),t=i(),c=o("p"),c.textContent=y,this.h()},l(s){e=M(s,"DIV",{dir:!0});var b=w(e);J(r.$$.fragment,b),b.forEach(d),t=p(s),c=M(s,"P",{"data-svelte-h":!0}),j(c)!=="svelte-onjpfx"&&(c.textContent=y),this.h()},h(){_(e,"dir","ltr")},m(s,b){k(s,e,b),U(r,e,null),k(s,t,b),k(s,c,b),x=!0},i(s){x||(h(r.$$.fragment,s),x=!0)},o(s){u(r.$$.fragment,s),x=!1},d(s){s&&(d(e),d(t),d(c)),f(r)}}}function Cn(T){let e,r,t;return r=new C({props:{code:"JTdCJ2F0dGVudGlvbl9tYXNrJyUzQSUyMFRlbnNvclNoYXBlKCU1QjglMkMlMjA2NyU1RCklMkMlMEElMjAnaW5wdXRfaWRzJyUzQSUyMFRlbnNvclNoYXBlKCU1QjglMkMlMjA2NyU1RCklMkMlMEElMjAndG9rZW5fdHlwZV9pZHMnJTNBJTIwVGVuc29yU2hhcGUoJTVCOCUyQyUyMDY3JTVEKSUyQyUwQSUyMCdsYWJlbHMnJTNBJTIwVGVuc29yU2hhcGUoJTVCOCU1RCklN0Q=",highlighted:`{<span class="hljs-string">&#x27;attention_mask&#x27;</span>: TensorShape([<span class="hljs-number">8</span>, <span class="hljs-number">67</span>]),
 <span class="hljs-string">&#x27;input_ids&#x27;</span>: TensorShape([<span class="hljs-number">8</span>, <span class="hljs-number">67</span>]),
 <span class="hljs-string">&#x27;token_type_ids&#x27;</span>: TensorShape([<span class="hljs-number">8</span>, <span class="hljs-number">67</span>]),
 <span class="hljs-string">&#x27;labels&#x27;</span>: TensorShape([<span class="hljs-number">8</span>])}`,wrap:!1}}),{c(){e=o("div"),m(r.$$.fragment),this.h()},l(c){e=M(c,"DIV",{dir:!0});var y=w(e);J(r.$$.fragment,y),y.forEach(d),this.h()},h(){_(e,"dir","ltr")},m(c,y){k(c,e,y),U(r,e,null),t=!0},i(c){t||(h(r.$$.fragment,c),t=!0)},o(c){u(r.$$.fragment,c),t=!1},d(c){c&&d(e),f(r)}}}function xn(T){let e,r="✏️ <strong>امتحان کنید!</strong> پروسه پیش‌پردازش را روی دیتاسِت GLUE SST-2 باز تکرار کنید. از آنجایی که این مجموعه به جای دو جمله‌ها شامل تک جمله‌ها می‌باشد این کار کمی متفاوت است، اما بقیه کارهایی که انجام داده‌ایم باید یکسان به نظر برسند. برای یک چالش مشکل‌تر، سعی کنید تابع پیش‌پردازشی بنویسید که برای همه مسئله‌های GLUE کار کند.";return{c(){e=o("p"),e.innerHTML=r},l(t){e=M(t,"P",{"data-svelte-h":!0}),j(e)!=="svelte-hig0bc"&&(e.innerHTML=r)},m(t,c){k(t,e,c)},p:ln,d(t){t&&d(e)}}}function en(T){let e,r='اکنون که دیتاسِت‌مان و یک <code>collator</code> داده در اختیار داریم، نیاز داریم که آنها را باهم بکار ببریم. ما می‌توانستیم بَتچ‌ها را دستی لود کرده و آنها را <code>collate</code> کنیم، اما این روش کار زیادی می‌برد و احتمالا خیلی هم بهینه نخواهد بود. در عوض، تابعی ساده وجود دارد که راه حل بهینه‌ای برای این مسئله ارائه می‌کند: <span dir="ltr"><code>to_tf_dataset()</code></span>. این تابع یک <code>tf.data.Dataset</code> شامل پارامتری اختیاری برای تابع <code>collation</code> را دور دیتاسِت‌تان می‌پیچد. <code>tf.data.Dataset</code> یک فرمت بومی تِنسورفلو است که کِراس می‌تواند برای <span dir="ltr"><code>model.fit()</code></span> استفاده کند، در نتیجه همین یک تابع می‌تواند یک دیتاسِت هاگینگ‌فِیس را به سرعت به فرمت آماده برای تعلیم تبدیل کند. اجازه دهید آنرا در عمل با دیتاسِت‌مان مشاهده کنیم!',t,c,y,x,s,b="این هم از این! حالا می‌توانیم این دیتاسِت‌ها را به درس بعدی ببریم، جایی که تعلیم پس از همه سختی‌های  پیش‌پردازش به طرز خوشایندی سرراست خواهد بود.",z;return y=new C({props:{code:"dGZfdHJhaW5fZGF0YXNldCUyMCUzRCUyMHRva2VuaXplZF9kYXRhc2V0cyU1QiUyMnRyYWluJTIyJTVELnRvX3RmX2RhdGFzZXQoJTBBJTIwJTIwJTIwJTIwY29sdW1ucyUzRCU1QiUyMmF0dGVudGlvbl9tYXNrJTIyJTJDJTIwJTIyaW5wdXRfaWRzJTIyJTJDJTIwJTIydG9rZW5fdHlwZV9pZHMlMjIlNUQlMkMlMEElMjAlMjAlMjAlMjBsYWJlbF9jb2xzJTNEJTVCJTIybGFiZWxzJTIyJTVEJTJDJTBBJTIwJTIwJTIwJTIwc2h1ZmZsZSUzRFRydWUlMkMlMEElMjAlMjAlMjAlMjBjb2xsYXRlX2ZuJTNEZGF0YV9jb2xsYXRvciUyQyUwQSUyMCUyMCUyMCUyMGJhdGNoX3NpemUlM0Q4JTJDJTBBKSUwQSUwQXRmX3ZhbGlkYXRpb25fZGF0YXNldCUyMCUzRCUyMHRva2VuaXplZF9kYXRhc2V0cyU1QiUyMnZhbGlkYXRpb24lMjIlNUQudG9fdGZfZGF0YXNldCglMEElMjAlMjAlMjAlMjBjb2x1bW5zJTNEJTVCJTIyYXR0ZW50aW9uX21hc2slMjIlMkMlMjAlMjJpbnB1dF9pZHMlMjIlMkMlMjAlMjJ0b2tlbl90eXBlX2lkcyUyMiU1RCUyQyUwQSUyMCUyMCUyMCUyMGxhYmVsX2NvbHMlM0QlNUIlMjJsYWJlbHMlMjIlNUQlMkMlMEElMjAlMjAlMjAlMjBzaHVmZmxlJTNERmFsc2UlMkMlMEElMjAlMjAlMjAlMjBjb2xsYXRlX2ZuJTNEZGF0YV9jb2xsYXRvciUyQyUwQSUyMCUyMCUyMCUyMGJhdGNoX3NpemUlM0Q4JTJDJTBBKQ==",highlighted:`tf_train_dataset = tokenized_datasets[<span class="hljs-string">&quot;train&quot;</span>].to_tf_dataset(
    columns=[<span class="hljs-string">&quot;attention_mask&quot;</span>, <span class="hljs-string">&quot;input_ids&quot;</span>, <span class="hljs-string">&quot;token_type_ids&quot;</span>],
    label_cols=[<span class="hljs-string">&quot;labels&quot;</span>],
    shuffle=<span class="hljs-literal">True</span>,
    collate_fn=data_collator,
    batch_size=<span class="hljs-number">8</span>,
)

tf_validation_dataset = tokenized_datasets[<span class="hljs-string">&quot;validation&quot;</span>].to_tf_dataset(
    columns=[<span class="hljs-string">&quot;attention_mask&quot;</span>, <span class="hljs-string">&quot;input_ids&quot;</span>, <span class="hljs-string">&quot;token_type_ids&quot;</span>],
    label_cols=[<span class="hljs-string">&quot;labels&quot;</span>],
    shuffle=<span class="hljs-literal">False</span>,
    collate_fn=data_collator,
    batch_size=<span class="hljs-number">8</span>,
)`,wrap:!1}}),{c(){e=o("p"),e.innerHTML=r,t=i(),c=o("div"),m(y.$$.fragment),x=i(),s=o("p"),s.textContent=b,this.h()},l(g){e=M(g,"P",{"data-svelte-h":!0}),j(e)!=="svelte-1mf2c3v"&&(e.innerHTML=r),t=p(g),c=M(g,"DIV",{dir:!0});var v=w(c);J(y.$$.fragment,v),v.forEach(d),x=p(g),s=M(g,"P",{"data-svelte-h":!0}),j(s)!=="svelte-oiqtai"&&(s.textContent=b),this.h()},h(){_(c,"dir","ltr")},m(g,v){k(g,e,v),k(g,t,v),k(g,c,v),U(y,c,null),k(g,x,v),k(g,s,v),z=!0},i(g){z||(h(y.$$.fragment,g),z=!0)},o(g){u(y.$$.fragment,g),z=!1},d(g){g&&(d(e),d(t),d(c),d(x),d(s)),f(y)}}}function vn(T){let e,r,t,c,y,x,s,b,z,g,v,Ae,R,Z,Ne,ws,Kl="البته تعلیم با استفاده از دو جمله به نتایج چشم‌گیری منتهی نخواهد شد. برای به دست آوردن نتایج بهتر نیاز به آماده‌سازی دیتاسِت بزرگتری خواهید داشت.",Se,_s,Ol='در این بخش ما از دیتاسِت MRPC[^1] که در یک <a href="https://www.aclweb.org/anthology/I05-5002.pdf" rel="nofollow">مقاله</a>، نوشته‌ی ویلیام بی دالن و کریس براکت، معرفی شده به عنوان یک مثال استفاده خواهیم کرد. این دیتاسِت شامل ۵۸۰۱ جفت جمله و یک برچسب می‌باشد که برچسب نشان دهنده متناظر بودن جملات می‌باشد (به عنوان مثال اینکه آیا دو جمله معنی یکسانی دارند یا خیر). علت انتخاب این دیتاسِت این است که دیتاسِت کوچکی است و تجربه تعلیم روی آن آسان است.',Ye,Y,Fe,A,N,Qe,ks,st='هاب تنها شامل مدل‌ها نمی‌باشد؛ بلکه شامل دیتاسِت‌های متعدد در بسیاری از زبان‌های مختلف می‌باشد. شما می‌توانید دیتاسِت‌ها را در این <a href="https://huggingface.co/datasets" rel="nofollow">لینک</a> جستجو کنید و پیشنهاد می‌کنیم پس از اتمام این بخش یک دیتاسِت جدید را دریافت و پردازش کنید (بخش مستندات عمومی را در <a href="https://huggingface.co/docs/datasets/loading" rel="nofollow">اینجا</a> مشاهده کنید). اما اجازه بدهید اکنون روی دیتاسِت MRPC تمرکز کنیم! این یکی از ۱۰ دیتاسِت <a href="https://gluebenchmark.com/" rel="nofollow">GLUE benchmark</a> است که یک محک تهیه شده در محیط دانشگاهی جهت اندازه گیری کارکرد مدل‌های یادگیری ماشینی در ۱۰ مسئله دسته‌بندی متن مختلف می‌باشد.',qe,$s,et="کتابخانه دیتاسِت هاگینگ‌فِیس یک دستور بسیار ساده جهت دانلود و انبار کردن یک دیتاسِت در هاب ارائه می‌کند. ما می‌توانیم دیتاسِت MRPC را به روش زیر دانلود کنیم:",Le,Cs,F,Pe,xs,q,Ke,vs,lt="همانطور که می‌بینید یک شیء <code>DatasetDict</code> بدست می‌آوریم که شامل مجموعه <code>training</code>، مجموعه <code>validation</code> و مجموعه <code>test</code> می‌باشد. هر یک از این‌ها شامل چندین ستون (<code>label</code>، <code>sentence2</code>، <code>sentence1</code> و <code>idx</code>) و تعداد متغیری سطر که عناصر هر مجموعه را تشکیل می‌دهند می‌باشد. (بنابراین، ۳۶۶۸ جفت جمله در مجموعه <code>training</code> وجود دارد، ۴۰۸ تا در مجموعه <code>validation</code> و ۱۷۲۵ تا در مجموعه <code>test</code>).",Oe,Is,tt='این دستور دیتاسِت را دانلود و به صورت پیش‌فرض در پوشه‌ <span dir="ltr"><em>~/.cache/huggingface/dataset</em></span> انبار می‌کند. از فصل ۲ به یاد داشته باشید که می‌توانید پوشه‌ انبار کردن‌تان را با تنظیم متغیر محیطی <code>HF_HOME</code> به دلخواه تغییر دهید.',sl,Rs,nt="ما می‌توانیم به هر جفت از جملات در شئ <code>raw_datasets</code> با استفاده از اندیس, مانند یک دیکشنری دسترسی پیدا کنیم:",el,Zs,L,ll,As,P,tl,Ns,at="می‌بینیم که برچسب‌ها از پیش اعداد صحیح هستند، بنابراین لازم نیست هیچ پیش‌پردازشی روی آنها انجام دهیم. برای این که بدانیم کدام مقدار عددی صحیح به کدام برچسب مربوط می‌شود، می‌توانیم <code>features</code> از ‌<code>raw_train_dataset</code>‌مان را بررسی کنیم. این کار نوع هر ستون را به ما خواهد گفت.",nl,Qs,K,al,Vs,O,rl,Gs,rt="در پشت صحنه، <code>label</code> از نوع <code>ClassLabel</code> می‌باشد، و نگاشت اعداد صحیح به نام برچسب در پوشه‌ <em>names</em> ذخیره شده است. <code>0</code> مربوط به <code>not_equivalent</code> و <code>1</code> مربوط به <code>equivalent</code> می‌باشد.",cl,D,il,ss,pl,Q,V,Ve,Xs,ct='به منظور پیش‌پردازش دیتاسِت‌، لازم است متن را به اعدادی قابل پردازش برای مدل تبدیل کنیم. همانطور که در<a href="/course/chapter2">فصل قبل</a> مشاهده کردید، این کار با استفاده از یک توکِنایزر انجام می‌شود. ما می‌توانیم یک یا چند جمله را به توکِنایزر بدهیم، در نتیجه می‌توانیم به طور مستقیم تمام جملات اول و دوم هر جفت جمله را به صورت زیر توکِن کنیم:',ol,Bs,es,Ml,Es,it="با این حال، نمی‌توانیم دو جمله را به مدل ارسال کنیم تا پیش‌بینی کند که متناظر هستند یا خیر. ما نیاز داریم با دو رشته به صورت یک جفت برخورد کنیم و پیش‌پردازش مناسب را به آن اعمال کنیم. خوشبختانه، توکِنایزر می‌تواند یک جفت رشته را دریافت کند و آنرا به گونه‌ای که مدل BERT ما انتظار دارد آماده‌سازی کند:",dl,Ws,ls,hl,zs,ts,ul,Ds,pt='در <a href="/course/chapter2">فصل ۲</a> در مورد کلیدهای <code>input_ids</code> و <code>attention_mask</code> بحث کردیم، اما از گفتگو در مورد <code>token_type_ids</code> اجتناب کردیم. در این مثال این همان چیزی است که به مدل می‌گوید کدام بخش از ورودی جمله اول و کدام بخش جمله دوم است.',yl,H,jl,Hs,ot="اگر شناسه‌های داخل <code>input_ids</code> را به کلمات کدگشایی کنیم:",ml,Ss,ns,Jl,Ys,Mt="خواهیم داشت:",Ul,Fs,as,fl,qs,dt='بنابراین می‌بینیم که مدل انتظار دارد وقتی که دو جمله داریم ورودی‌ها به صورت <span dir="ltr"><code>[CLS] sentence1 [SEP] sentence2 [SEP]</code></span> باشند.',Tl,Ls,rs,bl,Ps,ht='همانطور که می‌بینید، بخش‌هایی از ورودی که مربوط به <span dir="ltr"><code>[CLS] sentence1 [SEP]</code></span> هستند اندیس نشان دهنده نوع توکِن آنها <code>0</code> و بخش‌هایی که مربوط به <span dir="ltr"><code>sentence2 [SEP]</code></span> هستند اندیس نشان دهنده نوع توکِن‌شان <code>1</code> می‌باشد.',gl,Ks,ut="توجه داشته باشید که اگر نقطه تعلیم متفاوتی را انتخاب کنید، در ورودی‌ها لزوما <code>token_type_ids</code> نخواهید داشت (به عنوان مثال، اگر از یک DistilBERT استفاده کنید آنها بازگردانده نخواهند شد). آنها فقط زمانی بازگردانده می‌شوند که مدل می‌داند با آنها چکار کند، به این خاطر که آنها را در زمان پیش‌تعلیم دیده است.",wl,Os,yt='در اینجا، مدل BERT با شناسه‌هایی که نشان دهنده نوع توکِن هستند از پیش‌ تعلیم دیده و علاوه بر هدف تکمیل جاهای خالی متن که در <a href="/course/chapter1">فصل ۱</a> در مورد آن صحبت کردیم وظیفه‌ دیگری تحت عنوان <em>پیش‌بینی جمله‌ بعدی</em> بر عهده دارد. هدف از این وظیفه مدل کردن رابطه بین جملات جفتی می‌باشد.',_l,se,jt="در پیش‌بینی جمله بعدی، لیستی از جمله‌های جفت شده (با کلماتی که به طور تصادفی پنهان شده‌اند) به مدل داده می‌شوند و از مدل خواسته می‌شود پیش‌بینی کند که آیا جمله دوم در ادامه‌ جمله‌ اول قرار دارد یا خیر. برای سخت‌تر کردن مسئله، در نیمی از حالت‌ها دو جمله در متن اصلی به دنبال هم آمده‌، و در نیمی دیگر از دو متن متفاوت می‌آیند.",kl,ee,mt="در مجموع، نیازی نیست نگران وجود یا عدم وجود <code>token_type_ids</code> در ورودی‌های توکِن شده خود باشید: مادامی که از نقطه تعلیم یکسان برای توکِنایزر و مدل استفاده کنید، همه چیز خوب پیش خواهد رفت چرا که توکِنایزر می‌داند چه چیزی برای مدل فراهم کند.",$l,le,Jt='اکنون که مشاهده کردیم چگونه توکِن کننده ما می‌تواند با دو جمله برخورد کند، می‌توانیم آن را برای توکِن کردن کل دیتاسِت‌مان به کار ببریم: مانند <a href="/course/chapter2">فصل قبل</a>، ما می‌توانیم توکِنایزر را با لیستی از جفت جمله‌ها، با دادن لیست جملات اول و سپس لیست جملات دوم، تغذیه کنیم. این روش همچنین با گزینه‌های <code>padding</code> و <code>truncation</code> که در <a href="/course/chapter2">فصل ۲</a> مشاهده کردیم سازگاری دارد. بنابراین، یک روش برای پیش‌پردازش دیتاسِت <code>training</code> اینگونه می‌باشد:',Cl,te,cs,xl,ne,Ut='این روش به خوبی کار می‌کند، اما مشکل‌اش این است که دیکشنری (از کلیدهای ما شامل، <code>input_ids</code>, <code>attention_mask</code> و <code>token_type_ids</code> و مقادیر آنها که لیست‌هایی از لیست‌ها هستند) برمی‌گرداند. همچنین این روش فقط زمانی کار می‌کند که حافظه موقت کافی جهت ذخیره‌سازی کل دیتاسِت در حین توکِن کردن داشته باشید (در حالی که دیتاسِت‌های موجود در کتابخانه <code>Datatasets</code> از هاگینگ‌فِیس فایل‌هایی از نوع <a href="https://arrow.apache.org/" rel="nofollow">Apache Arrow</a> هستند که روی دیسک ذخیره شده‌اند، بنابراین شما فقط نمونه‌هایی را که جهت ذخیره در حافظه درخواست کرده‌اید نگه‌ می‌دارید).',vl,ae,ft='به منظور نگه داشتن داده به صورت یک دیتاسِت، از تابع <span dir="ltr"><a href="https://huggingface.co/docs/datasets/package_reference/main_classes#datasets.Dataset.map" rel="nofollow"><code>Dataset.map()</code></a></span> استفاده می‌کنیم. چنانچه به پیش‌پردازش‌های بیشتری علاوه‌ بر توکِن کردن نیاز داشته باشیم این روش انعطاف‌پذیری لازم را به ما می‌دهد. تابع <span dir="ltr"><code>map()</code></span> با اعمال کردن یک عملیات روی هر عنصر دیتاسِت عمل می‌کند، بنابراین اجازه دهید تابعی تعریف کنیم که ورودی‌ها را توکِن کند:',Il,re,is,Rl,ce,Tt='این تابع دیکشنری (مثل اقلام داخل دیتاسِت) دریافت می‌کند و دیکشنری دیگری با کلیدهای <code>input_ids</code>، <code>attention_mask</code> و <code>token_type_ids</code> برمی‌گرداند. توجه داشته باشید از آنجایی که توکِنایزر روی لیست‌هایی از دو جمله‌ها کار می‌کند، همان‌طور که قبلا مشاهده کردیم، این تابع نیز در صورتی که دیکشنری <code>example</code> شامل چندین نمونه (هر کلید به عنوان لیستی از جمله‌ها) باشد کار می‌کند. این به ما این امکان را خواهد داد که از گزینه <code>batched=True</code> در فراخوانی تابع <span dir="ltr"><code>map()</code></span> استفاده کنیم که توکِنایزر را به میزان زیادی سریع‌تر خواهد کرد. این <code>tokenizer</code> با توکِنایزری در کتابخانه <a href="https://github.com/huggingface/tokenizers" rel="nofollow">Tokenizers</a> از هاگینگ‌فِیس که به زبان برنامه‌‌نویسی Rust نوشته شده پشتیبانی می‌شود. این توکِنایزر می‌تواند بسیار سریع باشد، اما فقط به شرطی که ورودی‌های زیادی را به صورت یک جا به آن بدهیم.',Zl,ie,bt="توجه داشته باشید که ما آرگومان هم‌طول‌سازی را در تابع توکِن کننده‌مان نادیده گرفته‌ایم. این به این خاطر است که هم‌طول‌سازی روی همه نمونه‌ها برای بیشترین طول به صرفه نیست: بهتر است که نمونه‌ها را زمانی که در حال ساختن بَتچ هستیم هم‌طول کنیم، در این صورت فقط نیاز داریم نمونه‌ها را به اندازه بزرگترین طول همان بَتچ و نه بیشترین طول در سرتاسر دیتاسِت‌ هم‌طول کنیم. این روش زمانی که ورودی‌ها دارای طول‌های بسیار متغیری هستند وقت و انرژی زیادی را صرفه‌جویی خواهد کرد.",Al,pe,gt="در اینجا نشان می‌دهیم چگونه تابع تولید توکِن را روی کل دیتاسِت به یکباره اعمال می‌کنیم. ما از <code>batched=True</code> در فراخوانی تابع <code>map</code> استفاده می‌کنیم بنابر این تابع ما به جای اینکه روی هر عنصر به صورت جداگانه عمل کند روی چندین عنصر از دیتاسِت به یکباره عمل می‌کند. این کار اجازه می‌دهد که پیش‌پردازش سریع‌تر انجام گیرد:",Nl,oe,ps,Ql,Me,wt="کتابخانه <code>Datasets</code> از هاگینگ‌فِیس این پیش‌پردازش را با افزودن -فیلدهای- جدید به دیتاسِت‌ها، یکی به اِزای هر کلید در -دیکشنری- که توسط تابع پیش‌پردازش بازگردانده می‌شوند، اعمال می‌کند:",Vl,de,os,Gl,he,_t='شما حتی می‌توانید زمانی که تابع پیش‌پردازش خود را اعمال می‌کنید، با ارسال آرگومان <code>num_proc</code> در تابع <span dir="ltr"><code>map()</code></span> از چندپردازشی استفاده کنید. در اینجا ما این کار را انجام ندادیم چرا که کتابخانه <code>Tokenizers</code> هاگینگ‌فِیس از پیش، از چندین رشته پردازشی برای توکِن کردن سریع‌تر نمونه‌های ما استفاده می‌کند، اما اگر شما از یک توکِنایزر سریع که با این کتابخانه پشتیبانی شود استفاده نمی‌کنید، این روش می‌تواند پیش‌پردازش شما را سریع‌تر کند.',Xl,ue,kt='تابع <code>tokenize_function</code> ما یک دیکشنری شامل کلیدهای <code>input_ids</code>، <code>attention_mask</code> و <code>token_type_ids</code> برمی‌گرداند به گونه‌ای که این کلیدها به صورت سه فیلد جدید به همه بخش‌های دیتاسِت افزوده گردند. توجه داشته باشید اگر تابع پیش‌پردازش ما برای یک کلید موجود در دیتاسِت مقدار جدیدی بازمی‌گرداند ما می‌توانستیم فیلدهای موجود در دیتاسِتی که تابع <span dir="ltr"><code>map()</code></span> به آن اعمال می‌شود را نیز تغییر دهیم.',Bl,ye,$t="آخرین کاری که باید انجام دهیم این است که هنگامی که عناصر را با هم در یک بَتچ قرار می‌دهیم، طول همه عناصر را به اندازه بلندترین عنصر برسانیم - تکنیکی که ما به آن <em>هم‌طول‌سازی پویا</em> می‌گوییم.",El,Ms,Wl,ds,zl,Ge,je,Ct="برای انجام این کار در عمل، ما باید یک تابع ترکیب کننده تعریف کنیم که میزان درستی از هم‌طول‌سازی را به آیتم‌های دیتاسِت‌هایی که ما می‌خواهیم باهم در یک بَتچ قرار دهیم اعمال کند. خوشبختانه، کتابخانه ترنسفورمرهای هاگینگ‌فِیس چنین قابلیتی را توسط کلاس <code>DataCollatorWithPadding</code> به ما می‌دهد. به محض این که شیء‌ای از این کلاس را تعریف کنیم (یعنی تعیین کنیم چه توکِنی برای هم‌طول‌سازی استفاده کند و مدل انتظار هم‌طول‌سازی از سمت چپ یا راست ورودی‌ها را داشته باشد) یک توکِنایزر را برداشته و هر کاری را که لازم دارید انجام می‌دهد:",Dl,G,X,Xe,me,xt="اجازه دهید چند نمونه از مجموعه <code>training</code> را که می‌خواهیم باهم در یک بَتچ قرار دهیم برداریم تا این ابزار جدید را امتحان کنیم. در اینجا ستون‌های <code>idx</code>، <code>sentence1</code> و <code>sentence2</code> را حذف می‌کنیم چرا که احتیاج نخواهند شد و شامل رشته‌های متنی می‌شوند (که ما نمی‌توانیم تنسورهایی از رشته‌های متنی ایجاد کنیم) و سپس نگاهی می‌اندازیم به طول هر ورودی در هر بَتچ:",Hl,Je,hs,Sl,Ue,us,Yl,fe,vt="تعجبی ندارد که نمونه‌هایی با طول‌های متغییر، از ۳۲ تا ۶۷ بدست می‌آوریم. هم‌طول‌سازی پویا به این معنی است که نمونه‌های موجود در این بَتچ باید همگی با طول ۶۷، که بزرگترین طول داخل بَتچ می‌باشد، هم‌طول شده باشند. بدون هم‌طول‌سازی پویا، همه نمونه‌ها در کل دیتاسِت باید به اندازه بزرگ‌ترین طول یا بزرگ‌ترین طول قابل پذیرش برای مدل، هم‌طول شوند. اجازه دهید بررسی کنیم آیا <code>data_collator</code> ما بَتچ را به درستی هم‌طول می‌کند:",Fl,Te,ys,ql,B,E,Be,S,Ll,Ee,be,It="[^1]: Microsoft Research Paraphrase Corpus",We,xe,ze;y=new dn({props:{fw:T[0]}}),b=new He({props:{title:"پردازش داده",local:"پردازش-داده",headingTag:"h1"}});const Rt=[un,hn],js=[];function Zt(a,$){return a[0]==="pt"?0:1}g=Zt(T),v=js[g]=Rt[g](T);const At=[jn,yn],ms=[];function Nt(a,$){return a[0]==="pt"?0:1}R=Nt(T),Z=ms[R]=At[R](T),Y=new He({props:{title:"بارگذاری دیتاسِت‌ها از هاب",local:"بارگذاری-دیتاستها-از-هاب",headingTag:"h3"}});const Qt=[Jn,mn],Js=[];function Vt(a,$){return a[0]==="pt"?0:1}A=Vt(T),N=Js[A]=Qt[A](T),F=new C({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTBBJTBBcmF3X2RhdGFzZXRzJTIwJTNEJTIwbG9hZF9kYXRhc2V0KCUyMmdsdWUlMjIlMkMlMjAlMjJtcnBjJTIyKSUwQXJhd19kYXRhc2V0cw==",highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset

raw_datasets = load_dataset(<span class="hljs-string">&quot;glue&quot;</span>, <span class="hljs-string">&quot;mrpc&quot;</span>)
raw_datasets`,wrap:!1}}),q=new C({props:{code:"RGF0YXNldERpY3QoJTdCJTBBJTIwJTIwJTIwJTIwdHJhaW4lM0ElMjBEYXRhc2V0KCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGZlYXR1cmVzJTNBJTIwJTVCJ3NlbnRlbmNlMSclMkMlMjAnc2VudGVuY2UyJyUyQyUyMCdsYWJlbCclMkMlMjAnaWR4JyU1RCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG51bV9yb3dzJTNBJTIwMzY2OCUwQSUyMCUyMCUyMCUyMCU3RCklMEElMjAlMjAlMjAlMjB2YWxpZGF0aW9uJTNBJTIwRGF0YXNldCglN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBmZWF0dXJlcyUzQSUyMCU1QidzZW50ZW5jZTEnJTJDJTIwJ3NlbnRlbmNlMiclMkMlMjAnbGFiZWwnJTJDJTIwJ2lkeCclNUQlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBudW1fcm93cyUzQSUyMDQwOCUwQSUyMCUyMCUyMCUyMCU3RCklMEElMjAlMjAlMjAlMjB0ZXN0JTNBJTIwRGF0YXNldCglN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBmZWF0dXJlcyUzQSUyMCU1QidzZW50ZW5jZTEnJTJDJTIwJ3NlbnRlbmNlMiclMkMlMjAnbGFiZWwnJTJDJTIwJ2lkeCclNUQlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBudW1fcm93cyUzQSUyMDE3MjUlMEElMjAlMjAlMjAlMjAlN0QpJTBBJTdEKQ==",highlighted:`DatasetDict({
    train: Dataset({
        features: [<span class="hljs-string">&#x27;sentence1&#x27;</span>, <span class="hljs-string">&#x27;sentence2&#x27;</span>, <span class="hljs-string">&#x27;label&#x27;</span>, <span class="hljs-string">&#x27;idx&#x27;</span>],
        num_rows: <span class="hljs-number">3668</span>
    })
    validation: Dataset({
        features: [<span class="hljs-string">&#x27;sentence1&#x27;</span>, <span class="hljs-string">&#x27;sentence2&#x27;</span>, <span class="hljs-string">&#x27;label&#x27;</span>, <span class="hljs-string">&#x27;idx&#x27;</span>],
        num_rows: <span class="hljs-number">408</span>
    })
    test: Dataset({
        features: [<span class="hljs-string">&#x27;sentence1&#x27;</span>, <span class="hljs-string">&#x27;sentence2&#x27;</span>, <span class="hljs-string">&#x27;label&#x27;</span>, <span class="hljs-string">&#x27;idx&#x27;</span>],
        num_rows: <span class="hljs-number">1725</span>
    })
})`,wrap:!1}}),L=new C({props:{code:"cmF3X3RyYWluX2RhdGFzZXQlMjAlM0QlMjByYXdfZGF0YXNldHMlNUIlMjJ0cmFpbiUyMiU1RCUwQXJhd190cmFpbl9kYXRhc2V0JTVCMCU1RA==",highlighted:`raw_train_dataset = raw_datasets[<span class="hljs-string">&quot;train&quot;</span>]
raw_train_dataset[<span class="hljs-number">0</span>]`,wrap:!1}}),P=new C({props:{code:"JTdCJ2lkeCclM0ElMjAwJTJDJTBBJTIwJ2xhYmVsJyUzQSUyMDElMkMlMEElMjAnc2VudGVuY2UxJyUzQSUyMCdBbXJvemklMjBhY2N1c2VkJTIwaGlzJTIwYnJvdGhlciUyMCUyQyUyMHdob20lMjBoZSUyMGNhbGxlZCUyMCUyMiUyMHRoZSUyMHdpdG5lc3MlMjAlMjIlMjAlMkMlMjBvZiUyMGRlbGliZXJhdGVseSUyMGRpc3RvcnRpbmclMjBoaXMlMjBldmlkZW5jZSUyMC4nJTJDJTBBJTIwJ3NlbnRlbmNlMiclM0ElMjAnUmVmZXJyaW5nJTIwdG8lMjBoaW0lMjBhcyUyMG9ubHklMjAlMjIlMjB0aGUlMjB3aXRuZXNzJTIwJTIyJTIwJTJDJTIwQW1yb3ppJTIwYWNjdXNlZCUyMGhpcyUyMGJyb3RoZXIlMjBvZiUyMGRlbGliZXJhdGVseSUyMGRpc3RvcnRpbmclMjBoaXMlMjBldmlkZW5jZSUyMC4nJTdE",highlighted:`{<span class="hljs-string">&#x27;idx&#x27;</span>: <span class="hljs-number">0</span>,
 <span class="hljs-string">&#x27;label&#x27;</span>: <span class="hljs-number">1</span>,
 <span class="hljs-string">&#x27;sentence1&#x27;</span>: <span class="hljs-string">&#x27;Amrozi accused his brother , whom he called &quot; the witness &quot; , of deliberately distorting his evidence .&#x27;</span>,
 <span class="hljs-string">&#x27;sentence2&#x27;</span>: <span class="hljs-string">&#x27;Referring to him as only &quot; the witness &quot; , Amrozi accused his brother of deliberately distorting his evidence .&#x27;</span>}`,wrap:!1}}),K=new C({props:{code:"cmF3X3RyYWluX2RhdGFzZXQuZmVhdHVyZXM=",highlighted:"raw_train_dataset.features",wrap:!1}}),O=new C({props:{code:"JTdCJ3NlbnRlbmNlMSclM0ElMjBWYWx1ZShkdHlwZSUzRCdzdHJpbmcnJTJDJTIwaWQlM0ROb25lKSUyQyUwQSUyMCdzZW50ZW5jZTInJTNBJTIwVmFsdWUoZHR5cGUlM0Qnc3RyaW5nJyUyQyUyMGlkJTNETm9uZSklMkMlMEElMjAnbGFiZWwnJTNBJTIwQ2xhc3NMYWJlbChudW1fY2xhc3NlcyUzRDIlMkMlMjBuYW1lcyUzRCU1Qidub3RfZXF1aXZhbGVudCclMkMlMjAnZXF1aXZhbGVudCclNUQlMkMlMjBuYW1lc19maWxlJTNETm9uZSUyQyUyMGlkJTNETm9uZSklMkMlMEElMjAnaWR4JyUzQSUyMFZhbHVlKGR0eXBlJTNEJ2ludDMyJyUyQyUyMGlkJTNETm9uZSklN0Q=",highlighted:`{<span class="hljs-string">&#x27;sentence1&#x27;</span>: Value(dtype=<span class="hljs-string">&#x27;string&#x27;</span>, <span class="hljs-built_in">id</span>=<span class="hljs-literal">None</span>),
 <span class="hljs-string">&#x27;sentence2&#x27;</span>: Value(dtype=<span class="hljs-string">&#x27;string&#x27;</span>, <span class="hljs-built_in">id</span>=<span class="hljs-literal">None</span>),
 <span class="hljs-string">&#x27;label&#x27;</span>: ClassLabel(num_classes=<span class="hljs-number">2</span>, names=[<span class="hljs-string">&#x27;not_equivalent&#x27;</span>, <span class="hljs-string">&#x27;equivalent&#x27;</span>], names_file=<span class="hljs-literal">None</span>, <span class="hljs-built_in">id</span>=<span class="hljs-literal">None</span>),
 <span class="hljs-string">&#x27;idx&#x27;</span>: Value(dtype=<span class="hljs-string">&#x27;int32&#x27;</span>, <span class="hljs-built_in">id</span>=<span class="hljs-literal">None</span>)}`,wrap:!1}}),D=new Pl({props:{$$slots:{default:[Un]},$$scope:{ctx:T}}}),ss=new He({props:{title:"پیش‌پردازش دیتاسِت‌‌ها",local:"پیشپردازش-دیتاستها",headingTag:"h3"}});const Gt=[Tn,fn],Us=[];function Xt(a,$){return a[0]==="pt"?0:1}Q=Xt(T),V=Us[Q]=Gt[Q](T),es=new C({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEElMEFjaGVja3BvaW50JTIwJTNEJTIwJTIyYmVydC1iYXNlLXVuY2FzZWQlMjIlMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KSUwQXRva2VuaXplZF9zZW50ZW5jZXNfMSUyMCUzRCUyMHRva2VuaXplcihyYXdfZGF0YXNldHMlNUIlMjJ0cmFpbiUyMiU1RCU1QiUyMnNlbnRlbmNlMSUyMiU1RCklMEF0b2tlbml6ZWRfc2VudGVuY2VzXzIlMjAlM0QlMjB0b2tlbml6ZXIocmF3X2RhdGFzZXRzJTVCJTIydHJhaW4lMjIlNUQlNUIlMjJzZW50ZW5jZTIlMjIlNUQp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer

checkpoint = <span class="hljs-string">&quot;bert-base-uncased&quot;</span>
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
tokenized_sentences_1 = tokenizer(raw_datasets[<span class="hljs-string">&quot;train&quot;</span>][<span class="hljs-string">&quot;sentence1&quot;</span>])
tokenized_sentences_2 = tokenizer(raw_datasets[<span class="hljs-string">&quot;train&quot;</span>][<span class="hljs-string">&quot;sentence2&quot;</span>])`,wrap:!1}}),ls=new C({props:{code:"aW5wdXRzJTIwJTNEJTIwdG9rZW5pemVyKCUyMlRoaXMlMjBpcyUyMHRoZSUyMGZpcnN0JTIwc2VudGVuY2UuJTIyJTJDJTIwJTIyVGhpcyUyMGlzJTIwdGhlJTIwc2Vjb25kJTIwb25lLiUyMiklMEFpbnB1dHM=",highlighted:`inputs = tokenizer(<span class="hljs-string">&quot;This is the first sentence.&quot;</span>, <span class="hljs-string">&quot;This is the second one.&quot;</span>)
inputs`,wrap:!1}}),ts=new C({props:{code:"JTdCJTIwJTBBJTIwJTIwJ2lucHV0X2lkcyclM0ElMjAlNUIxMDElMkMlMjAyMDIzJTJDJTIwMjAwMyUyQyUyMDE5OTYlMkMlMjAyMDM0JTJDJTIwNjI1MSUyQyUyMDEwMTIlMkMlMjAxMDIlMkMlMjAyMDIzJTJDJTIwMjAwMyUyQyUyMDE5OTYlMkMlMjAyMTE3JTJDJTIwMjAyOCUyQyUyMDEwMTIlMkMlMjAxMDIlNUQlMkMlMEElMjAlMjAndG9rZW5fdHlwZV9pZHMnJTNBJTIwJTVCMCUyQyUyMDAlMkMlMjAwJTJDJTIwMCUyQyUyMDAlMkMlMjAwJTJDJTIwMCUyQyUyMDAlMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTVEJTJDJTBBJTIwJTIwJ2F0dGVudGlvbl9tYXNrJyUzQSUyMCU1QjElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSUyQyUyMDElMkMlMjAxJTJDJTIwMSU1RCUwQSU3RA==",highlighted:`{ 
  <span class="hljs-string">&#x27;input_ids&#x27;</span>: [<span class="hljs-number">101</span>, <span class="hljs-number">2023</span>, <span class="hljs-number">2003</span>, <span class="hljs-number">1996</span>, <span class="hljs-number">2034</span>, <span class="hljs-number">6251</span>, <span class="hljs-number">1012</span>, <span class="hljs-number">102</span>, <span class="hljs-number">2023</span>, <span class="hljs-number">2003</span>, <span class="hljs-number">1996</span>, <span class="hljs-number">2117</span>, <span class="hljs-number">2028</span>, <span class="hljs-number">1012</span>, <span class="hljs-number">102</span>],
  <span class="hljs-string">&#x27;token_type_ids&#x27;</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">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-string">&#x27;attention_mask&#x27;</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>]
}`,wrap:!1}}),H=new Pl({props:{$$slots:{default:[bn]},$$scope:{ctx:T}}}),ns=new C({props:{code:"dG9rZW5pemVyLmNvbnZlcnRfaWRzX3RvX3Rva2VucyhpbnB1dHMlNUIlMjJpbnB1dF9pZHMlMjIlNUQp",highlighted:'tokenizer.convert_ids_to_tokens(inputs[<span class="hljs-string">&quot;input_ids&quot;</span>])',wrap:!1}}),as=new C({props:{code:"JTVCJyU1QkNMUyU1RCclMkMlMjAndGhpcyclMkMlMjAnaXMnJTJDJTIwJ3RoZSclMkMlMjAnZmlyc3QnJTJDJTIwJ3NlbnRlbmNlJyUyQyUyMCcuJyUyQyUyMCclNUJTRVAlNUQnJTJDJTIwJ3RoaXMnJTJDJTIwJ2lzJyUyQyUyMCd0aGUnJTJDJTIwJ3NlY29uZCclMkMlMjAnb25lJyUyQyUyMCcuJyUyQyUyMCclNUJTRVAlNUQnJTVE",highlighted:'[<span class="hljs-string">&#x27;[CLS]&#x27;</span>, <span class="hljs-string">&#x27;this&#x27;</span>, <span class="hljs-string">&#x27;is&#x27;</span>, <span class="hljs-string">&#x27;the&#x27;</span>, <span class="hljs-string">&#x27;first&#x27;</span>, <span class="hljs-string">&#x27;sentence&#x27;</span>, <span class="hljs-string">&#x27;.&#x27;</span>, <span class="hljs-string">&#x27;[SEP]&#x27;</span>, <span class="hljs-string">&#x27;this&#x27;</span>, <span class="hljs-string">&#x27;is&#x27;</span>, <span class="hljs-string">&#x27;the&#x27;</span>, <span class="hljs-string">&#x27;second&#x27;</span>, <span class="hljs-string">&#x27;one&#x27;</span>, <span class="hljs-string">&#x27;.&#x27;</span>, <span class="hljs-string">&#x27;[SEP]&#x27;</span>]',wrap:!1}}),rs=new C({props:{code:"JTVCJyU1QkNMUyU1RCclMkMlMjAndGhpcyclMkMlMjAnaXMnJTJDJTIwJ3RoZSclMkMlMjAnZmlyc3QnJTJDJTIwJ3NlbnRlbmNlJyUyQyUyMCcuJyUyQyUyMCclNUJTRVAlNUQnJTJDJTIwJ3RoaXMnJTJDJTIwJ2lzJyUyQyUyMCd0aGUnJTJDJTIwJ3NlY29uZCclMkMlMjAnb25lJyUyQyUyMCcuJyUyQyUyMCclNUJTRVAlNUQnJTVEJTBBJTVCJTIwJTIwJTIwJTIwJTIwJTIwMCUyQyUyMCUyMCUyMCUyMCUyMCUyMDAlMkMlMjAlMjAlMjAlMjAwJTJDJTIwJTIwJTIwJTIwJTIwMCUyQyUyMCUyMCUyMCUyMCUyMCUyMCUyMDAlMkMlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAwJTJDJTIwJTIwJTIwMCUyQyUyMCUyMCUyMCUyMCUyMCUyMCUyMDAlMkMlMjAlMjAlMjAlMjAlMjAlMjAxJTJDJTIwJTIwJTIwJTIwMSUyQyUyMCUyMCUyMCUyMCUyMDElMkMlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAxJTJDJTIwJTIwJTIwJTIwJTIwMSUyQyUyMCUyMCUyMDElMkMlMjAlMjAlMjAlMjAlMjAlMjAlMjAxJTVE",highlighted:`[<span class="hljs-string">&#x27;[CLS]&#x27;</span>, <span class="hljs-string">&#x27;this&#x27;</span>, <span class="hljs-string">&#x27;is&#x27;</span>, <span class="hljs-string">&#x27;the&#x27;</span>, <span class="hljs-string">&#x27;first&#x27;</span>, <span class="hljs-string">&#x27;sentence&#x27;</span>, <span class="hljs-string">&#x27;.&#x27;</span>, <span class="hljs-string">&#x27;[SEP]&#x27;</span>, <span class="hljs-string">&#x27;this&#x27;</span>, <span class="hljs-string">&#x27;is&#x27;</span>, <span class="hljs-string">&#x27;the&#x27;</span>, <span class="hljs-string">&#x27;second&#x27;</span>, <span class="hljs-string">&#x27;one&#x27;</span>, <span class="hljs-string">&#x27;.&#x27;</span>, <span class="hljs-string">&#x27;[SEP]&#x27;</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">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>]`,wrap:!1}}),cs=new C({props:{code:"dG9rZW5pemVkX2RhdGFzZXQlMjAlM0QlMjB0b2tlbml6ZXIoJTBBJTIwJTIwJTIwJTIwcmF3X2RhdGFzZXRzJTVCJTIydHJhaW4lMjIlNUQlNUIlMjJzZW50ZW5jZTElMjIlNUQlMkMlMEElMjAlMjAlMjAlMjByYXdfZGF0YXNldHMlNUIlMjJ0cmFpbiUyMiU1RCU1QiUyMnNlbnRlbmNlMiUyMiU1RCUyQyUwQSUyMCUyMCUyMCUyMHBhZGRpbmclM0RUcnVlJTJDJTBBJTIwJTIwJTIwJTIwdHJ1bmNhdGlvbiUzRFRydWUlMkMlMEEp",highlighted:`tokenized_dataset = tokenizer(
    raw_datasets[<span class="hljs-string">&quot;train&quot;</span>][<span class="hljs-string">&quot;sentence1&quot;</span>],
    raw_datasets[<span class="hljs-string">&quot;train&quot;</span>][<span class="hljs-string">&quot;sentence2&quot;</span>],
    padding=<span class="hljs-literal">True</span>,
    truncation=<span class="hljs-literal">True</span>,
)`,wrap:!1}}),is=new C({props:{code:"ZGVmJTIwdG9rZW5pemVfZnVuY3Rpb24oZXhhbXBsZSklM0ElMEElMjAlMjAlMjAlMjByZXR1cm4lMjB0b2tlbml6ZXIoZXhhbXBsZSU1QiUyMnNlbnRlbmNlMSUyMiU1RCUyQyUyMGV4YW1wbGUlNUIlMjJzZW50ZW5jZTIlMjIlNUQlMkMlMjB0cnVuY2F0aW9uJTNEVHJ1ZSk=",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">tokenize_function</span>(<span class="hljs-params">example</span>):
    <span class="hljs-keyword">return</span> tokenizer(example[<span class="hljs-string">&quot;sentence1&quot;</span>], example[<span class="hljs-string">&quot;sentence2&quot;</span>], truncation=<span class="hljs-literal">True</span>)`,wrap:!1}}),ps=new C({props:{code:"dG9rZW5pemVkX2RhdGFzZXRzJTIwJTNEJTIwcmF3X2RhdGFzZXRzLm1hcCh0b2tlbml6ZV9mdW5jdGlvbiUyQyUyMGJhdGNoZWQlM0RUcnVlKSUwQXRva2VuaXplZF9kYXRhc2V0cw==",highlighted:`tokenized_datasets = raw_datasets.<span class="hljs-built_in">map</span>(tokenize_function, batched=<span class="hljs-literal">True</span>)
tokenized_datasets`,wrap:!1}}),os=new C({props:{code:"RGF0YXNldERpY3QoJTdCJTBBJTIwJTIwJTIwJTIwdHJhaW4lM0ElMjBEYXRhc2V0KCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGZlYXR1cmVzJTNBJTIwJTVCJ2F0dGVudGlvbl9tYXNrJyUyQyUyMCdpZHgnJTJDJTIwJ2lucHV0X2lkcyclMkMlMjAnbGFiZWwnJTJDJTIwJ3NlbnRlbmNlMSclMkMlMjAnc2VudGVuY2UyJyUyQyUyMCd0b2tlbl90eXBlX2lkcyclNUQlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBudW1fcm93cyUzQSUyMDM2NjglMEElMjAlMjAlMjAlMjAlN0QpJTBBJTIwJTIwJTIwJTIwdmFsaWRhdGlvbiUzQSUyMERhdGFzZXQoJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZmVhdHVyZXMlM0ElMjAlNUInYXR0ZW50aW9uX21hc2snJTJDJTIwJ2lkeCclMkMlMjAnaW5wdXRfaWRzJyUyQyUyMCdsYWJlbCclMkMlMjAnc2VudGVuY2UxJyUyQyUyMCdzZW50ZW5jZTInJTJDJTIwJ3Rva2VuX3R5cGVfaWRzJyU1RCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG51bV9yb3dzJTNBJTIwNDA4JTBBJTIwJTIwJTIwJTIwJTdEKSUwQSUyMCUyMCUyMCUyMHRlc3QlM0ElMjBEYXRhc2V0KCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGZlYXR1cmVzJTNBJTIwJTVCJ2F0dGVudGlvbl9tYXNrJyUyQyUyMCdpZHgnJTJDJTIwJ2lucHV0X2lkcyclMkMlMjAnbGFiZWwnJTJDJTIwJ3NlbnRlbmNlMSclMkMlMjAnc2VudGVuY2UyJyUyQyUyMCd0b2tlbl90eXBlX2lkcyclNUQlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBudW1fcm93cyUzQSUyMDE3MjUlMEElMjAlMjAlMjAlMjAlN0QpJTBBJTdEKQ==",highlighted:`DatasetDict({
    train: Dataset({
        features: [<span class="hljs-string">&#x27;attention_mask&#x27;</span>, <span class="hljs-string">&#x27;idx&#x27;</span>, <span class="hljs-string">&#x27;input_ids&#x27;</span>, <span class="hljs-string">&#x27;label&#x27;</span>, <span class="hljs-string">&#x27;sentence1&#x27;</span>, <span class="hljs-string">&#x27;sentence2&#x27;</span>, <span class="hljs-string">&#x27;token_type_ids&#x27;</span>],
        num_rows: <span class="hljs-number">3668</span>
    })
    validation: Dataset({
        features: [<span class="hljs-string">&#x27;attention_mask&#x27;</span>, <span class="hljs-string">&#x27;idx&#x27;</span>, <span class="hljs-string">&#x27;input_ids&#x27;</span>, <span class="hljs-string">&#x27;label&#x27;</span>, <span class="hljs-string">&#x27;sentence1&#x27;</span>, <span class="hljs-string">&#x27;sentence2&#x27;</span>, <span class="hljs-string">&#x27;token_type_ids&#x27;</span>],
        num_rows: <span class="hljs-number">408</span>
    })
    test: Dataset({
        features: [<span class="hljs-string">&#x27;attention_mask&#x27;</span>, <span class="hljs-string">&#x27;idx&#x27;</span>, <span class="hljs-string">&#x27;input_ids&#x27;</span>, <span class="hljs-string">&#x27;label&#x27;</span>, <span class="hljs-string">&#x27;sentence1&#x27;</span>, <span class="hljs-string">&#x27;sentence2&#x27;</span>, <span class="hljs-string">&#x27;token_type_ids&#x27;</span>],
        num_rows: <span class="hljs-number">1725</span>
    })
})`,wrap:!1}}),Ms=new He({props:{title:"هم‌طول‌سازی پویا",local:"همطولسازی-پویا",headingTag:"h3"}}),ds=new Ze({props:{id:"7q5NyFT8REg"}});function Bt(a,$){return a[0]==="pt"?wn:gn}let De=Bt(T),W=De(T);const Et=[kn,_n],fs=[];function Wt(a,$){return a[0]==="pt"?0:1}G=Wt(T),X=fs[G]=Et[G](T),hs=new C({props:{code:"c2FtcGxlcyUyMCUzRCUyMHRva2VuaXplZF9kYXRhc2V0cyU1QiUyMnRyYWluJTIyJTVEJTVCJTNBOCU1RCUwQXNhbXBsZXMlMjAlM0QlMjAlN0JrJTNBJTIwdiUyMGZvciUyMGslMkMlMjB2JTIwaW4lMjBzYW1wbGVzLml0ZW1zKCklMjBpZiUyMGslMjBub3QlMjBpbiUyMCU1QiUyMmlkeCUyMiUyQyUyMCUyMnNlbnRlbmNlMSUyMiUyQyUyMCUyMnNlbnRlbmNlMiUyMiU1RCU3RCUwQSU1Qmxlbih4KSUyMGZvciUyMHglMjBpbiUyMHNhbXBsZXMlNUIlMjJpbnB1dF9pZHMlMjIlNUQlNUQ=",highlighted:`samples = tokenized_datasets[<span class="hljs-string">&quot;train&quot;</span>][:<span class="hljs-number">8</span>]
samples = {k: v <span class="hljs-keyword">for</span> k, v <span class="hljs-keyword">in</span> samples.items() <span class="hljs-keyword">if</span> k <span class="hljs-keyword">not</span> <span class="hljs-keyword">in</span> [<span class="hljs-string">&quot;idx&quot;</span>, <span class="hljs-string">&quot;sentence1&quot;</span>, <span class="hljs-string">&quot;sentence2&quot;</span>]}
[<span class="hljs-built_in">len</span>(x) <span class="hljs-keyword">for</span> x <span class="hljs-keyword">in</span> samples[<span class="hljs-string">&quot;input_ids&quot;</span>]]`,wrap:!1}}),us=new C({props:{code:"JTVCNTAlMkMlMjA1OSUyQyUyMDQ3JTJDJTIwNjclMkMlMjA1OSUyQyUyMDUwJTJDJTIwNjIlMkMlMjAzMiU1RA==",highlighted:'[<span class="hljs-number">50</span>, <span class="hljs-number">59</span>, <span class="hljs-number">47</span>, <span class="hljs-number">67</span>, <span class="hljs-number">59</span>, <span class="hljs-number">50</span>, <span class="hljs-number">62</span>, <span class="hljs-number">32</span>]',wrap:!1}}),ys=new C({props:{code:"YmF0Y2glMjAlM0QlMjBkYXRhX2NvbGxhdG9yKHNhbXBsZXMpJTBBJTdCayUzQSUyMHYuc2hhcGUlMjBmb3IlMjBrJTJDJTIwdiUyMGluJTIwYmF0Y2guaXRlbXMoKSU3RA==",highlighted:`batch = data_collator(samples)
{k: v.shape <span class="hljs-keyword">for</span> k, v <span class="hljs-keyword">in</span> batch.items()}`,wrap:!1}});const zt=[Cn,$n],Ts=[];function Dt(a,$){return a[0]==="tf"?0:1}B=Dt(T),E=Ts[B]=zt[B](T),S=new Pl({props:{$$slots:{default:[xn]},$$scope:{ctx:T}}});let I=T[0]==="tf"&&en();return{c(){e=o("meta"),r=i(),t=o("p"),c=i(),m(y.$$.fragment),x=i(),s=o("div"),m(b.$$.fragment),z=i(),v.c(),Ae=i(),Z.c(),Ne=i(),ws=o("p"),ws.textContent=Kl,Se=i(),_s=o("p"),_s.innerHTML=Ol,Ye=i(),m(Y.$$.fragment),Fe=i(),N.c(),Qe=i(),ks=o("p"),ks.innerHTML=st,qe=i(),$s=o("p"),$s.textContent=et,Le=i(),Cs=o("div"),m(F.$$.fragment),Pe=i(),xs=o("div"),m(q.$$.fragment),Ke=i(),vs=o("p"),vs.innerHTML=lt,Oe=i(),Is=o("p"),Is.innerHTML=tt,sl=i(),Rs=o("p"),Rs.innerHTML=nt,el=i(),Zs=o("div"),m(L.$$.fragment),ll=i(),As=o("div"),m(P.$$.fragment),tl=i(),Ns=o("p"),Ns.innerHTML=at,nl=i(),Qs=o("div"),m(K.$$.fragment),al=i(),Vs=o("div"),m(O.$$.fragment),rl=i(),Gs=o("p"),Gs.innerHTML=rt,cl=i(),m(D.$$.fragment),il=i(),m(ss.$$.fragment),pl=i(),V.c(),Ve=i(),Xs=o("p"),Xs.innerHTML=ct,ol=i(),Bs=o("div"),m(es.$$.fragment),Ml=i(),Es=o("p"),Es.textContent=it,dl=i(),Ws=o("div"),m(ls.$$.fragment),hl=i(),zs=o("div"),m(ts.$$.fragment),ul=i(),Ds=o("p"),Ds.innerHTML=pt,yl=i(),m(H.$$.fragment),jl=i(),Hs=o("p"),Hs.innerHTML=ot,ml=i(),Ss=o("div"),m(ns.$$.fragment),Jl=i(),Ys=o("p"),Ys.textContent=Mt,Ul=i(),Fs=o("div"),m(as.$$.fragment),fl=i(),qs=o("p"),qs.innerHTML=dt,Tl=i(),Ls=o("div"),m(rs.$$.fragment),bl=i(),Ps=o("p"),Ps.innerHTML=ht,gl=i(),Ks=o("p"),Ks.innerHTML=ut,wl=i(),Os=o("p"),Os.innerHTML=yt,_l=i(),se=o("p"),se.textContent=jt,kl=i(),ee=o("p"),ee.innerHTML=mt,$l=i(),le=o("p"),le.innerHTML=Jt,Cl=i(),te=o("div"),m(cs.$$.fragment),xl=i(),ne=o("p"),ne.innerHTML=Ut,vl=i(),ae=o("p"),ae.innerHTML=ft,Il=i(),re=o("div"),m(is.$$.fragment),Rl=i(),ce=o("p"),ce.innerHTML=Tt,Zl=i(),ie=o("p"),ie.textContent=bt,Al=i(),pe=o("p"),pe.innerHTML=gt,Nl=i(),oe=o("div"),m(ps.$$.fragment),Ql=i(),Me=o("p"),Me.innerHTML=wt,Vl=i(),de=o("div"),m(os.$$.fragment),Gl=i(),he=o("p"),he.innerHTML=_t,Xl=i(),ue=o("p"),ue.innerHTML=kt,Bl=i(),ye=o("p"),ye.innerHTML=$t,El=i(),m(Ms.$$.fragment),Wl=i(),m(ds.$$.fragment),zl=i(),W.c(),Ge=i(),je=o("p"),je.innerHTML=Ct,Dl=i(),X.c(),Xe=i(),me=o("p"),me.innerHTML=xt,Hl=i(),Je=o("div"),m(hs.$$.fragment),Sl=i(),Ue=o("div"),m(us.$$.fragment),Yl=i(),fe=o("p"),fe.innerHTML=vt,Fl=i(),Te=o("div"),m(ys.$$.fragment),ql=i(),E.c(),Be=i(),m(S.$$.fragment),Ll=i(),I&&I.c(),Ee=i(),be=o("p"),be.textContent=It,We=i(),xe=o("p"),this.h()},l(a){const $=pn("svelte-u9bgzb",document.head);e=M($,"META",{name:!0,content:!0}),$.forEach(d),r=p(a),t=M(a,"P",{}),w(t).forEach(d),c=p(a),J(y.$$.fragment,a),x=p(a),s=M(a,"DIV",{dir:!0});var l=w(s);J(b.$$.fragment,l),z=p(l),v.l(l),Ae=p(l),Z.l(l),Ne=p(l),ws=M(l,"P",{"data-svelte-h":!0}),j(ws)!=="svelte-16ytbon"&&(ws.textContent=Kl),Se=p(l),_s=M(l,"P",{"data-svelte-h":!0}),j(_s)!=="svelte-3v7jh0"&&(_s.innerHTML=Ol),Ye=p(l),J(Y.$$.fragment,l),Fe=p(l),N.l(l),Qe=p(l),ks=M(l,"P",{"data-svelte-h":!0}),j(ks)!=="svelte-1yb3c89"&&(ks.innerHTML=st),qe=p(l),$s=M(l,"P",{"data-svelte-h":!0}),j($s)!=="svelte-srdhcr"&&($s.textContent=et),Le=p(l),Cs=M(l,"DIV",{dir:!0});var ge=w(Cs);J(F.$$.fragment,ge),ge.forEach(d),Pe=p(l),xs=M(l,"DIV",{dir:!0});var we=w(xs);J(q.$$.fragment,we),we.forEach(d),Ke=p(l),vs=M(l,"P",{"data-svelte-h":!0}),j(vs)!=="svelte-gdljod"&&(vs.innerHTML=lt),Oe=p(l),Is=M(l,"P",{"data-svelte-h":!0}),j(Is)!=="svelte-s1wg7l"&&(Is.innerHTML=tt),sl=p(l),Rs=M(l,"P",{"data-svelte-h":!0}),j(Rs)!=="svelte-1kzlf81"&&(Rs.innerHTML=nt),el=p(l),Zs=M(l,"DIV",{dir:!0});var _e=w(Zs);J(L.$$.fragment,_e),_e.forEach(d),ll=p(l),As=M(l,"DIV",{dir:!0});var ve=w(As);J(P.$$.fragment,ve),ve.forEach(d),tl=p(l),Ns=M(l,"P",{"data-svelte-h":!0}),j(Ns)!=="svelte-wh80yr"&&(Ns.innerHTML=at),nl=p(l),Qs=M(l,"DIV",{dir:!0});var ke=w(Qs);J(K.$$.fragment,ke),ke.forEach(d),al=p(l),Vs=M(l,"DIV",{dir:!0});var Ie=w(Vs);J(O.$$.fragment,Ie),Ie.forEach(d),rl=p(l),Gs=M(l,"P",{"data-svelte-h":!0}),j(Gs)!=="svelte-1o2rd7n"&&(Gs.innerHTML=rt),cl=p(l),J(D.$$.fragment,l),il=p(l),J(ss.$$.fragment,l),pl=p(l),V.l(l),Ve=p(l),Xs=M(l,"P",{"data-svelte-h":!0}),j(Xs)!=="svelte-ahsm5e"&&(Xs.innerHTML=ct),ol=p(l),Bs=M(l,"DIV",{dir:!0});var $e=w(Bs);J(es.$$.fragment,$e),$e.forEach(d),Ml=p(l),Es=M(l,"P",{"data-svelte-h":!0}),j(Es)!=="svelte-1h1ly7o"&&(Es.textContent=it),dl=p(l),Ws=M(l,"DIV",{dir:!0});var Ce=w(Ws);J(ls.$$.fragment,Ce),Ce.forEach(d),hl=p(l),zs=M(l,"DIV",{dir:!0});var Re=w(zs);J(ts.$$.fragment,Re),Re.forEach(d),ul=p(l),Ds=M(l,"P",{"data-svelte-h":!0}),j(Ds)!=="svelte-nuk9b6"&&(Ds.innerHTML=pt),yl=p(l),J(H.$$.fragment,l),jl=p(l),Hs=M(l,"P",{"data-svelte-h":!0}),j(Hs)!=="svelte-cqy60s"&&(Hs.innerHTML=ot),ml=p(l),Ss=M(l,"DIV",{dir:!0});var Ht=w(Ss);J(ns.$$.fragment,Ht),Ht.forEach(d),Jl=p(l),Ys=M(l,"P",{"data-svelte-h":!0}),j(Ys)!=="svelte-bdarub"&&(Ys.textContent=Mt),Ul=p(l),Fs=M(l,"DIV",{dir:!0});var St=w(Fs);J(as.$$.fragment,St),St.forEach(d),fl=p(l),qs=M(l,"P",{"data-svelte-h":!0}),j(qs)!=="svelte-1dyhz55"&&(qs.innerHTML=dt),Tl=p(l),Ls=M(l,"DIV",{dir:!0});var Yt=w(Ls);J(rs.$$.fragment,Yt),Yt.forEach(d),bl=p(l),Ps=M(l,"P",{"data-svelte-h":!0}),j(Ps)!=="svelte-2dtklq"&&(Ps.innerHTML=ht),gl=p(l),Ks=M(l,"P",{"data-svelte-h":!0}),j(Ks)!=="svelte-1c1bett"&&(Ks.innerHTML=ut),wl=p(l),Os=M(l,"P",{"data-svelte-h":!0}),j(Os)!=="svelte-1ykrfsj"&&(Os.innerHTML=yt),_l=p(l),se=M(l,"P",{"data-svelte-h":!0}),j(se)!=="svelte-f8kh1s"&&(se.textContent=jt),kl=p(l),ee=M(l,"P",{"data-svelte-h":!0}),j(ee)!=="svelte-1byd8at"&&(ee.innerHTML=mt),$l=p(l),le=M(l,"P",{"data-svelte-h":!0}),j(le)!=="svelte-1kzp71k"&&(le.innerHTML=Jt),Cl=p(l),te=M(l,"DIV",{dir:!0});var Ft=w(te);J(cs.$$.fragment,Ft),Ft.forEach(d),xl=p(l),ne=M(l,"P",{"data-svelte-h":!0}),j(ne)!=="svelte-1jpwoag"&&(ne.innerHTML=Ut),vl=p(l),ae=M(l,"P",{"data-svelte-h":!0}),j(ae)!=="svelte-px2m4p"&&(ae.innerHTML=ft),Il=p(l),re=M(l,"DIV",{dir:!0});var qt=w(re);J(is.$$.fragment,qt),qt.forEach(d),Rl=p(l),ce=M(l,"P",{"data-svelte-h":!0}),j(ce)!=="svelte-3wy7wj"&&(ce.innerHTML=Tt),Zl=p(l),ie=M(l,"P",{"data-svelte-h":!0}),j(ie)!=="svelte-rvqa6x"&&(ie.textContent=bt),Al=p(l),pe=M(l,"P",{"data-svelte-h":!0}),j(pe)!=="svelte-1cposln"&&(pe.innerHTML=gt),Nl=p(l),oe=M(l,"DIV",{dir:!0});var Lt=w(oe);J(ps.$$.fragment,Lt),Lt.forEach(d),Ql=p(l),Me=M(l,"P",{"data-svelte-h":!0}),j(Me)!=="svelte-pi82k9"&&(Me.innerHTML=wt),Vl=p(l),de=M(l,"DIV",{dir:!0});var Pt=w(de);J(os.$$.fragment,Pt),Pt.forEach(d),Gl=p(l),he=M(l,"P",{"data-svelte-h":!0}),j(he)!=="svelte-jk3oxg"&&(he.innerHTML=_t),Xl=p(l),ue=M(l,"P",{"data-svelte-h":!0}),j(ue)!=="svelte-1xxpkgr"&&(ue.innerHTML=kt),Bl=p(l),ye=M(l,"P",{"data-svelte-h":!0}),j(ye)!=="svelte-1y0zsyc"&&(ye.innerHTML=$t),El=p(l),J(Ms.$$.fragment,l),Wl=p(l),J(ds.$$.fragment,l),zl=p(l),W.l(l),Ge=p(l),je=M(l,"P",{"data-svelte-h":!0}),j(je)!=="svelte-1cgx1mn"&&(je.innerHTML=Ct),Dl=p(l),X.l(l),Xe=p(l),me=M(l,"P",{"data-svelte-h":!0}),j(me)!=="svelte-15zjgh"&&(me.innerHTML=xt),Hl=p(l),Je=M(l,"DIV",{dir:!0});var Kt=w(Je);J(hs.$$.fragment,Kt),Kt.forEach(d),Sl=p(l),Ue=M(l,"DIV",{dir:!0});var Ot=w(Ue);J(us.$$.fragment,Ot),Ot.forEach(d),Yl=p(l),fe=M(l,"P",{"data-svelte-h":!0}),j(fe)!=="svelte-16t56lj"&&(fe.innerHTML=vt),Fl=p(l),Te=M(l,"DIV",{dir:!0});var sn=w(Te);J(ys.$$.fragment,sn),sn.forEach(d),ql=p(l),E.l(l),Be=p(l),J(S.$$.fragment,l),Ll=p(l),I&&I.l(l),Ee=p(l),be=M(l,"P",{"data-svelte-h":!0}),j(be)!=="svelte-qf10w3"&&(be.textContent=It),l.forEach(d),We=p(a),xe=M(a,"P",{}),w(xe).forEach(d),this.h()},h(){_(e,"name","hf:doc:metadata"),_(e,"content",In),_(Cs,"dir","ltr"),_(xs,"dir","ltr"),_(Zs,"dir","ltr"),_(As,"dir","ltr"),_(Qs,"dir","ltr"),_(Vs,"dir","ltr"),_(Bs,"dir","ltr"),_(Ws,"dir","ltr"),_(zs,"dir","ltr"),_(Ss,"dir","ltr"),_(Fs,"dir","ltr"),_(Ls,"dir","ltr"),_(te,"dir","ltr"),_(re,"dir","ltr"),_(oe,"dir","ltr"),_(de,"dir","ltr"),_(Je,"dir","ltr"),_(Ue,"dir","ltr"),_(Te,"dir","ltr"),_(s,"dir","rtl")},m(a,$){n(document.head,e),k(a,r,$),k(a,t,$),k(a,c,$),U(y,a,$),k(a,x,$),k(a,s,$),U(b,s,null),n(s,z),js[g].m(s,null),n(s,Ae),ms[R].m(s,null),n(s,Ne),n(s,ws),n(s,Se),n(s,_s),n(s,Ye),U(Y,s,null),n(s,Fe),Js[A].m(s,null),n(s,Qe),n(s,ks),n(s,qe),n(s,$s),n(s,Le),n(s,Cs),U(F,Cs,null),n(s,Pe),n(s,xs),U(q,xs,null),n(s,Ke),n(s,vs),n(s,Oe),n(s,Is),n(s,sl),n(s,Rs),n(s,el),n(s,Zs),U(L,Zs,null),n(s,ll),n(s,As),U(P,As,null),n(s,tl),n(s,Ns),n(s,nl),n(s,Qs),U(K,Qs,null),n(s,al),n(s,Vs),U(O,Vs,null),n(s,rl),n(s,Gs),n(s,cl),U(D,s,null),n(s,il),U(ss,s,null),n(s,pl),Us[Q].m(s,null),n(s,Ve),n(s,Xs),n(s,ol),n(s,Bs),U(es,Bs,null),n(s,Ml),n(s,Es),n(s,dl),n(s,Ws),U(ls,Ws,null),n(s,hl),n(s,zs),U(ts,zs,null),n(s,ul),n(s,Ds),n(s,yl),U(H,s,null),n(s,jl),n(s,Hs),n(s,ml),n(s,Ss),U(ns,Ss,null),n(s,Jl),n(s,Ys),n(s,Ul),n(s,Fs),U(as,Fs,null),n(s,fl),n(s,qs),n(s,Tl),n(s,Ls),U(rs,Ls,null),n(s,bl),n(s,Ps),n(s,gl),n(s,Ks),n(s,wl),n(s,Os),n(s,_l),n(s,se),n(s,kl),n(s,ee),n(s,$l),n(s,le),n(s,Cl),n(s,te),U(cs,te,null),n(s,xl),n(s,ne),n(s,vl),n(s,ae),n(s,Il),n(s,re),U(is,re,null),n(s,Rl),n(s,ce),n(s,Zl),n(s,ie),n(s,Al),n(s,pe),n(s,Nl),n(s,oe),U(ps,oe,null),n(s,Ql),n(s,Me),n(s,Vl),n(s,de),U(os,de,null),n(s,Gl),n(s,he),n(s,Xl),n(s,ue),n(s,Bl),n(s,ye),n(s,El),U(Ms,s,null),n(s,Wl),U(ds,s,null),n(s,zl),W.m(s,null),n(s,Ge),n(s,je),n(s,Dl),fs[G].m(s,null),n(s,Xe),n(s,me),n(s,Hl),n(s,Je),U(hs,Je,null),n(s,Sl),n(s,Ue),U(us,Ue,null),n(s,Yl),n(s,fe),n(s,Fl),n(s,Te),U(ys,Te,null),n(s,ql),Ts[B].m(s,null),n(s,Be),U(S,s,null),n(s,Ll),I&&I.m(s,null),n(s,Ee),n(s,be),k(a,We,$),k(a,xe,$),ze=!0},p(a,[$]){const l={};$&1&&(l.fw=a[0]),y.$set(l);let ge=g;g=Zt(a),g!==ge&&(gs(),u(js[ge],1,1,()=>{js[ge]=null}),bs(),v=js[g],v||(v=js[g]=Rt[g](a),v.c()),h(v,1),v.m(s,Ae));let we=R;R=Nt(a),R!==we&&(gs(),u(ms[we],1,1,()=>{ms[we]=null}),bs(),Z=ms[R],Z||(Z=ms[R]=At[R](a),Z.c()),h(Z,1),Z.m(s,Ne));let _e=A;A=Vt(a),A!==_e&&(gs(),u(Js[_e],1,1,()=>{Js[_e]=null}),bs(),N=Js[A],N||(N=Js[A]=Qt[A](a),N.c()),h(N,1),N.m(s,Qe));const ve={};$&2&&(ve.$$scope={dirty:$,ctx:a}),D.$set(ve);let ke=Q;Q=Xt(a),Q!==ke&&(gs(),u(Us[ke],1,1,()=>{Us[ke]=null}),bs(),V=Us[Q],V||(V=Us[Q]=Gt[Q](a),V.c()),h(V,1),V.m(s,Ve));const Ie={};$&2&&(Ie.$$scope={dirty:$,ctx:a}),H.$set(Ie),De!==(De=Bt(a))&&(W.d(1),W=De(a),W&&(W.c(),W.m(s,Ge)));let $e=G;G=Wt(a),G!==$e&&(gs(),u(fs[$e],1,1,()=>{fs[$e]=null}),bs(),X=fs[G],X||(X=fs[G]=Et[G](a),X.c()),h(X,1),X.m(s,Xe));let Ce=B;B=Dt(a),B!==Ce&&(gs(),u(Ts[Ce],1,1,()=>{Ts[Ce]=null}),bs(),E=Ts[B],E||(E=Ts[B]=zt[B](a),E.c()),h(E,1),E.m(s,Be));const Re={};$&2&&(Re.$$scope={dirty:$,ctx:a}),S.$set(Re),a[0]==="tf"?I?$&1&&h(I,1):(I=en(),I.c(),h(I,1),I.m(s,Ee)):I&&(gs(),u(I,1,1,()=>{I=null}),bs())},i(a){ze||(h(y.$$.fragment,a),h(b.$$.fragment,a),h(v),h(Z),h(Y.$$.fragment,a),h(N),h(F.$$.fragment,a),h(q.$$.fragment,a),h(L.$$.fragment,a),h(P.$$.fragment,a),h(K.$$.fragment,a),h(O.$$.fragment,a),h(D.$$.fragment,a),h(ss.$$.fragment,a),h(V),h(es.$$.fragment,a),h(ls.$$.fragment,a),h(ts.$$.fragment,a),h(H.$$.fragment,a),h(ns.$$.fragment,a),h(as.$$.fragment,a),h(rs.$$.fragment,a),h(cs.$$.fragment,a),h(is.$$.fragment,a),h(ps.$$.fragment,a),h(os.$$.fragment,a),h(Ms.$$.fragment,a),h(ds.$$.fragment,a),h(X),h(hs.$$.fragment,a),h(us.$$.fragment,a),h(ys.$$.fragment,a),h(E),h(S.$$.fragment,a),h(I),ze=!0)},o(a){u(y.$$.fragment,a),u(b.$$.fragment,a),u(v),u(Z),u(Y.$$.fragment,a),u(N),u(F.$$.fragment,a),u(q.$$.fragment,a),u(L.$$.fragment,a),u(P.$$.fragment,a),u(K.$$.fragment,a),u(O.$$.fragment,a),u(D.$$.fragment,a),u(ss.$$.fragment,a),u(V),u(es.$$.fragment,a),u(ls.$$.fragment,a),u(ts.$$.fragment,a),u(H.$$.fragment,a),u(ns.$$.fragment,a),u(as.$$.fragment,a),u(rs.$$.fragment,a),u(cs.$$.fragment,a),u(is.$$.fragment,a),u(ps.$$.fragment,a),u(os.$$.fragment,a),u(Ms.$$.fragment,a),u(ds.$$.fragment,a),u(X),u(hs.$$.fragment,a),u(us.$$.fragment,a),u(ys.$$.fragment,a),u(E),u(S.$$.fragment,a),u(I),ze=!1},d(a){a&&(d(r),d(t),d(c),d(x),d(s),d(We),d(xe)),d(e),f(y,a),f(b),js[g].d(),ms[R].d(),f(Y),Js[A].d(),f(F),f(q),f(L),f(P),f(K),f(O),f(D),f(ss),Us[Q].d(),f(es),f(ls),f(ts),f(H),f(ns),f(as),f(rs),f(cs),f(is),f(ps),f(os),f(Ms),f(ds),W.d(),fs[G].d(),f(hs),f(us),f(ys),Ts[B].d(),f(S),I&&I.d()}}}const In='{"title":"پردازش داده","local":"پردازش-داده","sections":[{"title":"بارگذاری دیتاسِت‌ها از هاب","local":"بارگذاری-دیتاستها-از-هاب","sections":[],"depth":3},{"title":"پیش‌پردازش دیتاسِت‌‌ها","local":"پیشپردازش-دیتاستها","sections":[],"depth":3},{"title":"هم‌طول‌سازی پویا","local":"همطولسازی-پویا","sections":[],"depth":3}],"depth":1}';function Rn(T,e,r){let t="pt";return an(()=>{const c=new URLSearchParams(window.location.search);r(0,t=c.get("fw")||"pt")}),[t]}class En extends rn{constructor(e){super(),cn(this,e,Rn,vn,nn,{})}}export{En as component};
