import{s as dn,o as hn,n as on}from"../chunks/scheduler.6452e238.js";import{S as un,i as yn,e as o,s as c,c as m,r as nl,h as jn,a as M,d,b as i,f as _,g as J,j,u as al,k as $,l as n,m as w,n as f,o as u,q as ks,t as h,p as U,v as Cs}from"../chunks/index.16d4f4c3.js";import{T as Le}from"../chunks/Tip.84214054.js";import{C as mn,H as Pe,E as Jn}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.2d145648.js";import{Y as Ve}from"../chunks/Youtube.11690af1.js";import{C}from"../chunks/CodeBlock.6260005a.js";import{C as Mn}from"../chunks/CourseFloatingBanner.088b098d.js";import{F as fn}from"../chunks/FrameworkSwitchCourse.7ffa6237.js";function Un(T){let e,r;return e=new Mn({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(l){J(e.$$.fragment,l)},m(l,p){f(e,l,p),r=!0},i(l){r||(h(e.$$.fragment,l),r=!0)},o(l){u(e.$$.fragment,l),r=!1},d(l){U(e,l)}}}function Tn(T){let e,r;return e=new Mn({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(l){J(e.$$.fragment,l)},m(l,p){f(e,l,p),r=!0},i(l){r||(h(e.$$.fragment,l),r=!0)},o(l){u(e.$$.fragment,l),r=!1},d(l){U(e,l)}}}function bn(T){let e,r='در این بخش در ادامه مثال <a href="/course/chapter2">فصل قبل</a>، نحوه تعلیم مدل‌های دسته‌بندی کننده رشته‌ها را در یک بَتچ با استفاده از تِنسورفلو شرح می‌دهیم:',l,p,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,l=c(),p=o("div"),m(y.$$.fragment),this.h()},l(s){e=M(s,"P",{"data-svelte-h":!0}),j(e)!=="svelte-161h743"&&(e.innerHTML=r),l=i(s),p=M(s,"DIV",{dir:!0});var b=_(p);J(y.$$.fragment,b),b.forEach(d),this.h()},h(){$(p,"dir","ltr")},m(s,b){w(s,e,b),w(s,l,b),w(s,p,b),f(y,p,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(l),d(p)),U(y)}}}function gn(T){let e,r='در این بخش در ادامه مثال <a href="/course/chapter2">فصل قبل</a>، نحوه تعلیم مدل‌های دسته‌بندی کننده رشته‌ها را در یک بَتچ با استفاده از پایتورچ شرح می‌دهیم:',l,p,y,x;return y=new C({props:{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwdG9yY2gub3B0aW0lMjBpbXBvcnQlMjBBZGFtVyUwQWZyb20lMjB0cmFuc2Zvcm1lcnMlMjBpbXBvcnQlMjBBdXRvVG9rZW5pemVyJTJDJTIwQXV0b01vZGVsRm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbiUwQSUwQSUyMyUyMFNhbWUlMjBhcyUyMGJlZm9yZSUwQWNoZWNrcG9pbnQlMjAlM0QlMjAlMjJiZXJ0LWJhc2UtdW5jYXNlZCUyMiUwQXRva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKGNoZWNrcG9pbnQpJTBBbW9kZWwlMjAlM0QlMjBBdXRvTW9kZWxGb3JTZXF1ZW5jZUNsYXNzaWZpY2F0aW9uLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KSUwQXNlcXVlbmNlcyUyMCUzRCUyMCU1QiUwQSUyMCUyMCUyMCUyMCUyMkkndmUlMjBiZWVuJTIwd2FpdGluZyUyMGZvciUyMGElMjBIdWdnaW5nRmFjZSUyMGNvdXJzZSUyMG15JTIwd2hvbGUlMjBsaWZlLiUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMlRoaXMlMjBjb3Vyc2UlMjBpcyUyMGFtYXppbmchJTIyJTJDJTBBJTVEJTBBYmF0Y2glMjAlM0QlMjB0b2tlbml6ZXIoc2VxdWVuY2VzJTJDJTIwcGFkZGluZyUzRFRydWUlMkMlMjB0cnVuY2F0aW9uJTNEVHJ1ZSUyQyUyMHJldHVybl90ZW5zb3JzJTNEJTIycHQlMjIpJTBBJTBBJTIzJTIwVGhpcyUyMGlzJTIwbmV3JTBBYmF0Y2glNUIlMjJsYWJlbHMlMjIlNUQlMjAlM0QlMjB0b3JjaC50ZW5zb3IoJTVCMSUyQyUyMDElNUQpJTBBJTBBb3B0aW1pemVyJTIwJTNEJTIwQWRhbVcobW9kZWwucGFyYW1ldGVycygpKSUwQWxvc3MlMjAlM0QlMjBtb2RlbCgqKmJhdGNoKS5sb3NzJTBBbG9zcy5iYWNrd2FyZCgpJTBBb3B0aW1pemVyLnN0ZXAoKQ==",highlighted:`<span class="hljs-keyword">import</span> torch
<span class="hljs-keyword">from</span> torch.optim <span class="hljs-keyword">import</span> AdamW
<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> 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,l=c(),p=o("div"),m(y.$$.fragment),this.h()},l(s){e=M(s,"P",{"data-svelte-h":!0}),j(e)!=="svelte-jyoxwm"&&(e.innerHTML=r),l=i(s),p=M(s,"DIV",{dir:!0});var b=_(p);J(y.$$.fragment,b),b.forEach(d),this.h()},h(){$(p,"dir","ltr")},m(s,b){w(s,e,b),w(s,l,b),w(s,p,b),f(y,p,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(l),d(p)),U(y)}}}function wn(T){let e,r;return e=new Ve({props:{id:"W_gMJF0xomE"}}),{c(){m(e.$$.fragment)},l(l){J(e.$$.fragment,l)},m(l,p){f(e,l,p),r=!0},i(l){r||(h(e.$$.fragment,l),r=!0)},o(l){u(e.$$.fragment,l),r=!1},d(l){U(e,l)}}}function _n(T){let e,r;return e=new Ve({props:{id:"_BZearw7f0w"}}),{c(){m(e.$$.fragment)},l(l){J(e.$$.fragment,l)},m(l,p){f(e,l,p),r=!0},i(l){r||(h(e.$$.fragment,l),r=!0)},o(l){u(e.$$.fragment,l),r=!1},d(l){U(e,l)}}}function $n(T){let e;return{c(){e=nl("⚠️ **هشدار** مطمئن شوید که `datasets` نصب شده است. برای اطمینان، دستور `pip install datasets` را اجرا کنید. سپس، مجموعه داده MRPC را بارگذاری کنید و آن را چاپ کنید تا ببینید چه چیزی در آن وجود دارد.")},l(r){e=al(r,"⚠️ **هشدار** مطمئن شوید که `datasets` نصب شده است. برای اطمینان، دستور `pip install datasets` را اجرا کنید. سپس، مجموعه داده MRPC را بارگذاری کنید و آن را چاپ کنید تا ببینید چه چیزی در آن وجود دارد.")},m(r,l){w(r,e,l)},d(r){r&&d(e)}}}function kn(T){let e;return{c(){e=nl("✏️ **امتحان کنید!** عنصر شماره ۱۵ از مجموعه `training` و عنصر شماره ۸۷ از مجموعه `validation` را مشاهده کنید. برچسب‌های آنها چیست؟")},l(r){e=al(r,"✏️ **امتحان کنید!** عنصر شماره ۱۵ از مجموعه `training` و عنصر شماره ۸۷ از مجموعه `validation` را مشاهده کنید. برچسب‌های آنها چیست؟")},m(r,l){w(r,e,l)},d(r){r&&d(e)}}}function Cn(T){let e,r;return e=new Ve({props:{id:"P-rZWqcB6CE"}}),{c(){m(e.$$.fragment)},l(l){J(e.$$.fragment,l)},m(l,p){f(e,l,p),r=!0},i(l){r||(h(e.$$.fragment,l),r=!0)},o(l){u(e.$$.fragment,l),r=!1},d(l){U(e,l)}}}function xn(T){let e,r;return e=new Ve({props:{id:"0u3ioSwev3s"}}),{c(){m(e.$$.fragment)},l(l){J(e.$$.fragment,l)},m(l,p){f(e,l,p),r=!0},i(l){r||(h(e.$$.fragment,l),r=!0)},o(l){u(e.$$.fragment,l),r=!1},d(l){U(e,l)}}}function vn(T){let e,r="✏️ <strong>امتحان کنید!</strong> عنصر شماره ۱۵ از مجموعه <code>training</code> را بردارید و دو جمله را به صورت جداگانه و جفت توکِن کنید. تفاوت دو نتیجه چیست؟";return{c(){e=o("p"),e.innerHTML=r},l(l){e=M(l,"P",{"data-svelte-h":!0}),j(e)!=="svelte-16csf4p"&&(e.innerHTML=r)},m(l,p){w(l,e,p)},p:on,d(l){l&&d(e)}}}function In(T){let e,r="تابعی که مسئول کنار هم گذاشتن نمونه‌ها در یک بَتچ می‌باشد <em>تابع ترکیب کننده</em> خوانده می‌شود. تابع ترکیب کننده پیش‌فرض تابعی است که فقط نمونه‌های شما را به <code>tf.Tensor</code> تبدیل کرده و آنها را به هم الحاق می‌کند (اگر عناصر شما لیست، تاپِل یا دیکشنری باشند این کار به صورت بازگشتی انجام می‌گیرد). از آنجایی که ورودی‌های ما هم‌طول نخواهند بود استفاده از این تابع برای ما امکان پذیر نیست. ناهم‌طولی ورودی‌ها به این خاطر است که ما فرایند هم‌طول‌سازی را عمدا به تعویق انداختیم تا فقط در زمان نیاز آن را روی هر بَتچ اجرا کنیم و از داشتن ورودی‌های بیش از اندازه طولانی با مقدار زیادی هم‌طول‌سازی پیش‌گیری کنیم. این روش، فرایند تعلیم را تا اندازه‌ای سرعت می‌بخشد، اما توجه داشته باشید که اگر شما در حال تعلیم روی TPU هستید این کار می‌تواند مشکل ساز باشد چرا که TPU اشکال معین را ترجیح می‌دهد، حتی اگر نیاز به هم‌طول‌سازی اضافه داشته باشد.";return{c(){e=o("p"),e.innerHTML=r},l(l){e=M(l,"P",{"data-svelte-h":!0}),j(e)!=="svelte-i7c8sq"&&(e.innerHTML=r)},m(l,p){w(l,e,p)},d(l){l&&d(e)}}}function Zn(T){let e,r="تابعی که مسئول کنار هم گذاشتن نمونه‌ها در یک بَتچ می‌باشد <em>تابع ترکیب کننده</em> خوانده می‌شود. شما می‌توانید این تابع را که در حالت پیش‌ فرض نمونه‌های شما را به تِنسور پایتورچ تبدیل کرده و به هم الحاق می‌کند (اگر عناصر شما لیست، تاپِل یا دیکشنری باشند این کار به صورت بازگشتی انجام می‌گیرد) هنگام ساختن <code>DataLoader</code> به داخل آن ارسال کنید. از آنجایی که ورودی‌های ما هم‌طول نخواهند بود استفاده از این تابع برای ما امکان‌پذیر نیست. ناهم‌طولی ورودی‌ها به این خاطر است که ما فرایند هم‌طول‌سازی را عمدا به تعویق انداختیم تا فقط در زمان نیاز آن را روی هر بَتچ اجرا کنیم و از داشتن ورودی‌های بیش از اندازه طولانی با مقدار زیادی هم‌طول‌سازی پیش‌گیری کنیم. این روش، فرایند تعلیم را تا اندازه‌ای سرعت می‌بخشد، اما توجه داشته باشید که اگر شما در حال تعلیم روی TPU هستید این کار می‌تواند مشکل ساز باشد چرا که TPU اشکال معین را ترجیح می‌دهد، حتی اگر نیاز به هم‌طول‌سازی اضافه داشته باشد.";return{c(){e=o("p"),e.innerHTML=r},l(l){e=M(l,"P",{"data-svelte-h":!0}),j(e)!=="svelte-14mld1s"&&(e.innerHTML=r)},m(l,p){w(l,e,p)},d(l){l&&d(e)}}}function Rn(T){let e,r,l;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(p){e=M(p,"DIV",{dir:!0});var y=_(e);J(r.$$.fragment,y),y.forEach(d),this.h()},h(){$(e,"dir","ltr")},m(p,y){w(p,e,y),f(r,e,null),l=!0},i(p){l||(h(r.$$.fragment,p),l=!0)},o(p){u(r.$$.fragment,p),l=!1},d(p){p&&d(e),U(r)}}}function Nn(T){let e,r,l;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(p){e=M(p,"DIV",{dir:!0});var y=_(e);J(r.$$.fragment,y),y.forEach(d),this.h()},h(){$(e,"dir","ltr")},m(p,y){w(p,e,y),f(r,e,null),l=!0},i(p){l||(h(r.$$.fragment,p),l=!0)},o(p){u(r.$$.fragment,p),l=!1},d(p){p&&d(e),U(r)}}}function An(T){let e,r,l,p,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),l=c(),p=o("p"),p.textContent=y,this.h()},l(s){e=M(s,"DIV",{dir:!0});var b=_(e);J(r.$$.fragment,b),b.forEach(d),l=i(s),p=M(s,"P",{"data-svelte-h":!0}),j(p)!=="svelte-onjpfx"&&(p.textContent=y),this.h()},h(){$(e,"dir","ltr")},m(s,b){w(s,e,b),f(r,e,null),w(s,l,b),w(s,p,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(l),d(p)),U(r)}}}function Qn(T){let e,r,l;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(p){e=M(p,"DIV",{dir:!0});var y=_(e);J(r.$$.fragment,y),y.forEach(d),this.h()},h(){$(e,"dir","ltr")},m(p,y){w(p,e,y),f(r,e,null),l=!0},i(p){l||(h(r.$$.fragment,p),l=!0)},o(p){u(r.$$.fragment,p),l=!1},d(p){p&&d(e),U(r)}}}function Vn(T){let e,r="✏️ <strong>امتحان کنید!</strong> پروسه پیش‌پردازش را روی دیتاسِت GLUE SST-2 باز تکرار کنید. از آنجایی که این مجموعه به جای دو جمله‌ها شامل تک جمله‌ها می‌باشد این کار کمی متفاوت است، اما بقیه کارهایی که انجام داده‌ایم باید یکسان به نظر برسند. برای یک چالش مشکل‌تر، سعی کنید تابع پیش‌پردازشی بنویسید که برای همه مسئله‌های GLUE کار کند.";return{c(){e=o("p"),e.innerHTML=r},l(l){e=M(l,"P",{"data-svelte-h":!0}),j(e)!=="svelte-hig0bc"&&(e.innerHTML=r)},m(l,p){w(l,e,p)},p:on,d(l){l&&d(e)}}}function cn(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> استفاده کند، در نتیجه همین یک تابع می‌تواند یک دیتاسِت هاگینگ‌فِیس را به سرعت به فرمت آماده برای تعلیم تبدیل کند. اجازه دهید آنرا در عمل با دیتاسِت‌مان مشاهده کنیم!',l,p,y,x,s,b="این هم از این! حالا می‌توانیم این دیتاسِت‌ها را به درس بعدی ببریم، جایی که تعلیم پس از همه سختی‌های  پیش‌پردازش به طرز خوشایندی سرراست خواهد بود.",Y;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,l=c(),p=o("div"),m(y.$$.fragment),x=c(),s=o("p"),s.textContent=b,this.h()},l(k){e=M(k,"P",{"data-svelte-h":!0}),j(e)!=="svelte-1mf2c3v"&&(e.innerHTML=r),l=i(k),p=M(k,"DIV",{dir:!0});var I=_(p);J(y.$$.fragment,I),I.forEach(d),x=i(k),s=M(k,"P",{"data-svelte-h":!0}),j(s)!=="svelte-oiqtai"&&(s.textContent=b),this.h()},h(){$(p,"dir","ltr")},m(k,I){w(k,e,I),w(k,l,I),w(k,p,I),f(y,p,null),w(k,x,I),w(k,s,I),Y=!0},i(k){Y||(h(y.$$.fragment,k),Y=!0)},o(k){u(y.$$.fragment,k),Y=!1},d(k){k&&(d(e),d(l),d(p),d(x),d(s)),U(y)}}}function Gn(T){let e,r,l,p,y,x,s,b,Y,k,I,Z,R,Ge,N,A,Be,xs,rl="البته تعلیم با استفاده از دو جمله به نتایج چشم‌گیری منتهی نخواهد شد. برای به دست آوردن نتایج بهتر نیاز به آماده‌سازی دیتاسِت بزرگتری خواهید داشت.",Ke,vs,pl='در این بخش ما از دیتاسِت MRPC[^1] که در یک <a href="https://www.aclweb.org/anthology/I05-5002.pdf" rel="nofollow">مقاله</a>، نوشته‌ی ویلیام بی دالن و کریس براکت، معرفی شده به عنوان یک مثال استفاده خواهیم کرد. این دیتاسِت شامل ۵۸۰۱ جفت جمله و یک برچسب می‌باشد که برچسب نشان دهنده متناظر بودن جملات می‌باشد (به عنوان مثال اینکه آیا دو جمله معنی یکسانی دارند یا خیر). علت انتخاب این دیتاسِت این است که دیتاسِت کوچکی است و تجربه تعلیم روی آن آسان است.',Oe,K,st,Q,V,Ee,Is,cl='هاب تنها شامل مدل‌ها نمی‌باشد؛ بلکه شامل دیتاسِت‌های متعدد در بسیاری از زبان‌های مختلف می‌باشد. شما می‌توانید دیتاسِت‌ها را در این <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> است که یک محک تهیه شده در محیط دانشگاهی جهت اندازه گیری کارکرد مدل‌های یادگیری ماشینی در ۱۰ مسئله دسته‌بندی متن مختلف می‌باشد.',et,Zs,il="کتابخانه دیتاسِت هاگینگ‌فِیس یک دستور بسیار ساده جهت دانلود و انبار کردن یک دیتاسِت در هاب ارائه می‌کند. ما می‌توانیم دیتاسِت MRPC را به روش زیر دانلود کنیم:",tt,D,F,lt,Rs,ol=`raw_datasets = load_dataset(“glue”, “mrpc”)
raw_datasets`,nt,O,at,Ns,Ml="همانطور که می‌بینید یک شیء <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>).",rt,As,dl='این دستور دیتاسِت را دانلود و به صورت پیش‌فرض در پوشه‌ <span dir="ltr"><em>~/.cache/huggingface/dataset</em></span> انبار می‌کند. از فصل ۲ به یاد داشته باشید که می‌توانید پوشه‌ انبار کردن‌تان را با تنظیم متغیر محیطی <code>HF_HOME</code> به دلخواه تغییر دهید.',pt,Qs,hl="ما می‌توانیم به هر جفت از جملات در شئ <code>raw_datasets</code> با استفاده از اندیس, مانند یک دیکشنری دسترسی پیدا کنیم:",ct,Vs,ss,it,Gs,es,ot,Bs,ul="می‌بینیم که برچسب‌ها از پیش اعداد صحیح هستند، بنابراین لازم نیست هیچ پیش‌پردازشی روی آنها انجام دهیم. برای این که بدانیم کدام مقدار عددی صحیح به کدام برچسب مربوط می‌شود، می‌توانیم <code>features</code> از ‌<code>raw_train_dataset</code>‌مان را بررسی کنیم. این کار نوع هر ستون را به ما خواهد گفت.",Mt,Es,ts,dt,Xs,ls,ht,Ws,yl="در پشت صحنه، <code>label</code> از نوع <code>ClassLabel</code> می‌باشد، و نگاشت اعداد صحیح به نام برچسب در پوشه‌ <em>names</em> ذخیره شده است. <code>0</code> مربوط به <code>not_equivalent</code> و <code>1</code> مربوط به <code>equivalent</code> می‌باشد.",ut,q,yt,ns,jt,G,B,Xe,zs,jl='به منظور پیش‌پردازش دیتاسِت‌، لازم است متن را به اعدادی قابل پردازش برای مدل تبدیل کنیم. همانطور که در<a href="/course/chapter2">فصل قبل</a> مشاهده کردید، این کار با استفاده از یک توکِنایزر انجام می‌شود. ما می‌توانیم یک یا چند جمله را به توکِنایزر بدهیم، در نتیجه می‌توانیم به طور مستقیم تمام جملات اول و دوم هر جفت جمله را به صورت زیر توکِن کنیم:',mt,Ds,as,Jt,Hs,ml="با این حال، نمی‌توانیم دو جمله را به مدل ارسال کنیم تا پیش‌بینی کند که متناظر هستند یا خیر. ما نیاز داریم با دو رشته به صورت یک جفت برخورد کنیم و پیش‌پردازش مناسب را به آن اعمال کنیم. خوشبختانه، توکِنایزر می‌تواند یک جفت رشته را دریافت کند و آنرا به گونه‌ای که مدل BERT ما انتظار دارد آماده‌سازی کند:",ft,Ss,rs,Ut,Ys,ps,Tt,Fs,Jl='در <a href="/course/chapter2">فصل ۲</a> در مورد کلیدهای <code>input_ids</code> و <code>attention_mask</code> بحث کردیم، اما از گفتگو در مورد <code>token_type_ids</code> اجتناب کردیم. در این مثال این همان چیزی است که به مدل می‌گوید کدام بخش از ورودی جمله اول و کدام بخش جمله دوم است.',bt,L,gt,qs,fl="اگر شناسه‌های داخل <code>input_ids</code> را به کلمات کدگشایی کنیم:",wt,Ls,cs,_t,Ps,Ul="خواهیم داشت:",$t,Ks,is,kt,Os,Tl='بنابراین می‌بینیم که مدل انتظار دارد وقتی که دو جمله داریم ورودی‌ها به صورت <span dir="ltr"><code>[CLS] sentence1 [SEP] sentence2 [SEP]</code></span> باشند.',Ct,se,os,xt,ee,bl='همانطور که می‌بینید، بخش‌هایی از ورودی که مربوط به <span dir="ltr"><code>[CLS] sentence1 [SEP]</code></span> هستند اندیس نشان دهنده نوع توکِن آنها <code>0</code> و بخش‌هایی که مربوط به <span dir="ltr"><code>sentence2 [SEP]</code></span> هستند اندیس نشان دهنده نوع توکِن‌شان <code>1</code> می‌باشد.',vt,te,gl="توجه داشته باشید که اگر نقطه تعلیم متفاوتی را انتخاب کنید، در ورودی‌ها لزوما <code>token_type_ids</code> نخواهید داشت (به عنوان مثال، اگر از یک DistilBERT استفاده کنید آنها بازگردانده نخواهند شد). آنها فقط زمانی بازگردانده می‌شوند که مدل می‌داند با آنها چکار کند، به این خاطر که آنها را در زمان پیش‌تعلیم دیده است.",It,le,wl='در اینجا، مدل BERT با شناسه‌هایی که نشان دهنده نوع توکِن هستند از پیش‌ تعلیم دیده و علاوه بر هدف تکمیل جاهای خالی متن که در <a href="/course/chapter1">فصل ۱</a> در مورد آن صحبت کردیم وظیفه‌ دیگری تحت عنوان <em>پیش‌بینی جمله‌ بعدی</em> بر عهده دارد. هدف از این وظیفه مدل کردن رابطه بین جملات جفتی می‌باشد.',Zt,ne,_l="در پیش‌بینی جمله بعدی، لیستی از جمله‌های جفت شده (با کلماتی که به طور تصادفی پنهان شده‌اند) به مدل داده می‌شوند و از مدل خواسته می‌شود پیش‌بینی کند که آیا جمله دوم در ادامه‌ جمله‌ اول قرار دارد یا خیر. برای سخت‌تر کردن مسئله، در نیمی از حالت‌ها دو جمله در متن اصلی به دنبال هم آمده‌، و در نیمی دیگر از دو متن متفاوت می‌آیند.",Rt,ae,$l="در مجموع، نیازی نیست نگران وجود یا عدم وجود <code>token_type_ids</code> در ورودی‌های توکِن شده خود باشید: مادامی که از نقطه تعلیم یکسان برای توکِنایزر و مدل استفاده کنید، همه چیز خوب پیش خواهد رفت چرا که توکِنایزر می‌داند چه چیزی برای مدل فراهم کند.",Nt,re,kl='اکنون که مشاهده کردیم چگونه توکِن کننده ما می‌تواند با دو جمله برخورد کند، می‌توانیم آن را برای توکِن کردن کل دیتاسِت‌مان به کار ببریم: مانند <a href="/course/chapter2">فصل قبل</a>، ما می‌توانیم توکِنایزر را با لیستی از جفت جمله‌ها، با دادن لیست جملات اول و سپس لیست جملات دوم، تغذیه کنیم. این روش همچنین با گزینه‌های <code>padding</code> و <code>truncation</code> که در <a href="/course/chapter2">فصل ۲</a> مشاهده کردیم سازگاری دارد. بنابراین، یک روش برای پیش‌پردازش دیتاسِت <code>training</code> اینگونه می‌باشد:',At,pe,Ms,Qt,ce,Cl='این روش به خوبی کار می‌کند، اما مشکل‌اش این است که دیکشنری (از کلیدهای ما شامل، <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> هستند که روی دیسک ذخیره شده‌اند، بنابراین شما فقط نمونه‌هایی را که جهت ذخیره در حافظه درخواست کرده‌اید نگه‌ می‌دارید).',Vt,ie,xl='به منظور نگه داشتن داده به صورت یک دیتاسِت، از تابع <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> با اعمال کردن یک عملیات روی هر عنصر دیتاسِت عمل می‌کند، بنابراین اجازه دهید تابعی تعریف کنیم که ورودی‌ها را توکِن کند:',Gt,oe,ds,Bt,Me,vl='این تابع دیکشنری (مثل اقلام داخل دیتاسِت) دریافت می‌کند و دیکشنری دیگری با کلیدهای <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 نوشته شده پشتیبانی می‌شود. این توکِنایزر می‌تواند بسیار سریع باشد، اما فقط به شرطی که ورودی‌های زیادی را به صورت یک جا به آن بدهیم.',Et,de,Il="توجه داشته باشید که ما آرگومان هم‌طول‌سازی را در تابع توکِن کننده‌مان نادیده گرفته‌ایم. این به این خاطر است که هم‌طول‌سازی روی همه نمونه‌ها برای بیشترین طول به صرفه نیست: بهتر است که نمونه‌ها را زمانی که در حال ساختن بَتچ هستیم هم‌طول کنیم، در این صورت فقط نیاز داریم نمونه‌ها را به اندازه بزرگترین طول همان بَتچ و نه بیشترین طول در سرتاسر دیتاسِت‌ هم‌طول کنیم. این روش زمانی که ورودی‌ها دارای طول‌های بسیار متغیری هستند وقت و انرژی زیادی را صرفه‌جویی خواهد کرد.",Xt,he,Zl="در اینجا نشان می‌دهیم چگونه تابع تولید توکِن را روی کل دیتاسِت به یکباره اعمال می‌کنیم. ما از <code>batched=True</code> در فراخوانی تابع <code>map</code> استفاده می‌کنیم بنابر این تابع ما به جای اینکه روی هر عنصر به صورت جداگانه عمل کند روی چندین عنصر از دیتاسِت به یکباره عمل می‌کند. این کار اجازه می‌دهد که پیش‌پردازش سریع‌تر انجام گیرد:",Wt,ue,hs,zt,ye,Rl="کتابخانه <code>Datasets</code> از هاگینگ‌فِیس این پیش‌پردازش را با افزودن -فیلدهای- جدید به دیتاسِت‌ها، یکی به اِزای هر کلید در -دیکشنری- که توسط تابع پیش‌پردازش بازگردانده می‌شوند، اعمال می‌کند:",Dt,je,us,Ht,me,Nl='شما حتی می‌توانید زمانی که تابع پیش‌پردازش خود را اعمال می‌کنید، با ارسال آرگومان <code>num_proc</code> در تابع <span dir="ltr"><code>map()</code></span> از چندپردازشی استفاده کنید. در اینجا ما این کار را انجام ندادیم چرا که کتابخانه <code>Tokenizers</code> هاگینگ‌فِیس از پیش، از چندین رشته پردازشی برای توکِن کردن سریع‌تر نمونه‌های ما استفاده می‌کند، اما اگر شما از یک توکِنایزر سریع که با این کتابخانه پشتیبانی شود استفاده نمی‌کنید، این روش می‌تواند پیش‌پردازش شما را سریع‌تر کند.',St,Je,Al='تابع <code>tokenize_function</code> ما یک دیکشنری شامل کلیدهای <code>input_ids</code>، <code>attention_mask</code> و <code>token_type_ids</code> برمی‌گرداند به گونه‌ای که این کلیدها به صورت سه فیلد جدید به همه بخش‌های دیتاسِت افزوده گردند. توجه داشته باشید اگر تابع پیش‌پردازش ما برای یک کلید موجود در دیتاسِت مقدار جدیدی بازمی‌گرداند ما می‌توانستیم فیلدهای موجود در دیتاسِتی که تابع <span dir="ltr"><code>map()</code></span> به آن اعمال می‌شود را نیز تغییر دهیم.',Yt,fe,Ql="آخرین کاری که باید انجام دهیم این است که هنگامی که عناصر را با هم در یک بَتچ قرار می‌دهیم، طول همه عناصر را به اندازه بلندترین عنصر برسانیم - تکنیکی که ما به آن <em>هم‌طول‌سازی پویا</em> می‌گوییم.",Ft,ys,qt,js,Lt,We,Ue,Vl="برای انجام این کار در عمل، ما باید یک تابع ترکیب کننده تعریف کنیم که میزان درستی از هم‌طول‌سازی را به آیتم‌های دیتاسِت‌هایی که ما می‌خواهیم باهم در یک بَتچ قرار دهیم اعمال کند. خوشبختانه، کتابخانه ترنسفورمرهای هاگینگ‌فِیس چنین قابلیتی را توسط کلاس <code>DataCollatorWithPadding</code> به ما می‌دهد. به محض این که شیء‌ای از این کلاس را تعریف کنیم (یعنی تعیین کنیم چه توکِنی برای هم‌طول‌سازی استفاده کند و مدل انتظار هم‌طول‌سازی از سمت چپ یا راست ورودی‌ها را داشته باشد) یک توکِنایزر را برداشته و هر کاری را که لازم دارید انجام می‌دهد:",Pt,E,X,ze,Te,Gl="اجازه دهید چند نمونه از مجموعه <code>training</code> را که می‌خواهیم باهم در یک بَتچ قرار دهیم برداریم تا این ابزار جدید را امتحان کنیم. در اینجا ستون‌های <code>idx</code>، <code>sentence1</code> و <code>sentence2</code> را حذف می‌کنیم چرا که احتیاج نخواهند شد و شامل رشته‌های متنی می‌شوند (که ما نمی‌توانیم تنسورهایی از رشته‌های متنی ایجاد کنیم) و سپس نگاهی می‌اندازیم به طول هر ورودی در هر بَتچ:",Kt,be,ms,Ot,ge,Js,sl,we,Bl="تعجبی ندارد که نمونه‌هایی با طول‌های متغییر، از ۳۲ تا ۶۷ بدست می‌آوریم. هم‌طول‌سازی پویا به این معنی است که نمونه‌های موجود در این بَتچ باید همگی با طول ۶۷، که بزرگترین طول داخل بَتچ می‌باشد، هم‌طول شده باشند. بدون هم‌طول‌سازی پویا، همه نمونه‌ها در کل دیتاسِت باید به اندازه بزرگ‌ترین طول یا بزرگ‌ترین طول قابل پذیرش برای مدل، هم‌طول شوند. اجازه دهید بررسی کنیم آیا <code>data_collator</code> ما بَتچ را به درستی هم‌طول می‌کند:",el,_e,fs,tl,W,z,De,P,ll,He,$e,El="[^1]: Microsoft Research Paraphrase Corpus",Se,Us,Ye,Ze,Fe;y=new fn({props:{fw:T[0]}}),b=new mn({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),k=new Pe({props:{title:"پردازش داده",local:"پردازش-داده",headingTag:"h1"}});const Xl=[Tn,Un],Ts=[];function Wl(a,g){return a[0]==="pt"?0:1}Z=Wl(T),R=Ts[Z]=Xl[Z](T);const zl=[gn,bn],bs=[];function Dl(a,g){return a[0]==="pt"?0:1}N=Dl(T),A=bs[N]=zl[N](T),K=new Pe({props:{title:"بارگذاری دیتاسِت‌ها از هاب",local:"بارگذاری-دیتاستها-از-هاب",headingTag:"h3"}});const Hl=[_n,wn],gs=[];function Sl(a,g){return a[0]==="pt"?0:1}Q=Sl(T),V=gs[Q]=Hl[Q](T),F=new Le({props:{$$slots:{default:[$n]},$$scope:{ctx:T}}}),O=new C({props:{code:"JTBBJTNDJTJGZGl2JTNFJTBBJTBBJTNDZGl2JTIwZGlyJTNEJTIybHRyJTIyJTNFJTBBJTBBJTYwJTYwJTYwcHl0aG9uJTIwb3V0JTBBRGF0YXNldERpY3QoJTdCJTBBJTIwJTIwJTIwJTIwdHJhaW4lM0ElMjBEYXRhc2V0KCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGZlYXR1cmVzJTNBJTIwJTVCJ3NlbnRlbmNlMSclMkMlMjAnc2VudGVuY2UyJyUyQyUyMCdsYWJlbCclMkMlMjAnaWR4JyU1RCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG51bV9yb3dzJTNBJTIwMzY2OCUwQSUyMCUyMCUyMCUyMCU3RCklMEElMjAlMjAlMjAlMjB2YWxpZGF0aW9uJTNBJTIwRGF0YXNldCglN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBmZWF0dXJlcyUzQSUyMCU1QidzZW50ZW5jZTEnJTJDJTIwJ3NlbnRlbmNlMiclMkMlMjAnbGFiZWwnJTJDJTIwJ2lkeCclNUQlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBudW1fcm93cyUzQSUyMDQwOCUwQSUyMCUyMCUyMCUyMCU3RCklMEElMjAlMjAlMjAlMjB0ZXN0JTNBJTIwRGF0YXNldCglN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBmZWF0dXJlcyUzQSUyMCU1QidzZW50ZW5jZTEnJTJDJTIwJ3NlbnRlbmNlMiclMkMlMjAnbGFiZWwnJTJDJTIwJ2lkeCclNUQlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBudW1fcm93cyUzQSUyMDE3MjUlMEElMjAlMjAlMjAlMjAlN0QpJTBBJTdEKQ==",highlighted:`
&lt;/div&gt;

&lt;div dir=<span class="hljs-string">&quot;ltr&quot;</span>&gt;

\`\`\`python out
<span class="hljs-title function_ invoke__">DatasetDict</span>({
    <span class="hljs-attr">train</span>: <span class="hljs-title function_ invoke__">Dataset</span>({
        <span class="hljs-attr">features</span>: [<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>],
        <span class="hljs-attr">num_rows</span>: <span class="hljs-number">3668</span>
    })
    <span class="hljs-attr">validation</span>: <span class="hljs-title function_ invoke__">Dataset</span>({
        <span class="hljs-attr">features</span>: [<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>],
        <span class="hljs-attr">num_rows</span>: <span class="hljs-number">408</span>
    })
    <span class="hljs-attr">test</span>: <span class="hljs-title function_ invoke__">Dataset</span>({
        <span class="hljs-attr">features</span>: [<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>],
        <span class="hljs-attr">num_rows</span>: <span class="hljs-number">1725</span>
    })
})`,wrap:!1}}),ss=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}}),es=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}}),ts=new C({props:{code:"cmF3X3RyYWluX2RhdGFzZXQuZmVhdHVyZXM=",highlighted:"raw_train_dataset.features",wrap:!1}}),ls=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}}),q=new Le({props:{$$slots:{default:[kn]},$$scope:{ctx:T}}}),ns=new Pe({props:{title:"پیش‌پردازش دیتاسِت‌‌ها",local:"پیشپردازش-دیتاستها",headingTag:"h3"}});const Yl=[xn,Cn],ws=[];function Fl(a,g){return a[0]==="pt"?0:1}G=Fl(T),B=ws[G]=Yl[G](T),as=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}}),rs=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}}),ps=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}}),L=new Le({props:{$$slots:{default:[vn]},$$scope:{ctx:T}}}),cs=new C({props:{code:"dG9rZW5pemVyLmNvbnZlcnRfaWRzX3RvX3Rva2VucyhpbnB1dHMlNUIlMjJpbnB1dF9pZHMlMjIlNUQp",highlighted:'tokenizer.convert_ids_to_tokens(inputs[<span class="hljs-string">&quot;input_ids&quot;</span>])',wrap:!1}}),is=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}}),os=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}}),Ms=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}}),ds=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}}),hs=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}}),us=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}}),ys=new Pe({props:{title:"هم‌طول‌سازی پویا",local:"همطولسازی-پویا",headingTag:"h3"}}),js=new Ve({props:{id:"7q5NyFT8REg"}});function ql(a,g){return a[0]==="pt"?Zn:In}let qe=ql(T),S=qe(T);const Ll=[Nn,Rn],_s=[];function Pl(a,g){return a[0]==="pt"?0:1}E=Pl(T),X=_s[E]=Ll[E](T),ms=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}}),Js=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}}),fs=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 Kl=[Qn,An],$s=[];function Ol(a,g){return a[0]==="tf"?0:1}W=Ol(T),z=$s[W]=Kl[W](T),P=new Le({props:{$$slots:{default:[Vn]},$$scope:{ctx:T}}});let v=T[0]==="tf"&&cn();return Us=new Jn({props:{source:"https://github.com/huggingface/course/blob/main/chapters/fa/chapter3/2.mdx"}}),{c(){e=o("meta"),r=c(),l=o("p"),p=c(),m(y.$$.fragment),x=c(),s=o("div"),m(b.$$.fragment),Y=c(),m(k.$$.fragment),I=c(),R.c(),Ge=c(),A.c(),Be=c(),xs=o("p"),xs.textContent=rl,Ke=c(),vs=o("p"),vs.innerHTML=pl,Oe=c(),m(K.$$.fragment),st=c(),V.c(),Ee=c(),Is=o("p"),Is.innerHTML=cl,et=c(),Zs=o("p"),Zs.textContent=il,tt=c(),D=o("div"),m(F.$$.fragment),lt=nl(" \n```py\nfrom datasets import load_dataset\n"),Rs=o("p"),Rs.textContent=ol,nt=c(),m(O.$$.fragment),at=c(),Ns=o("p"),Ns.innerHTML=Ml,rt=c(),As=o("p"),As.innerHTML=dl,pt=c(),Qs=o("p"),Qs.innerHTML=hl,ct=c(),Vs=o("div"),m(ss.$$.fragment),it=c(),Gs=o("div"),m(es.$$.fragment),ot=c(),Bs=o("p"),Bs.innerHTML=ul,Mt=c(),Es=o("div"),m(ts.$$.fragment),dt=c(),Xs=o("div"),m(ls.$$.fragment),ht=c(),Ws=o("p"),Ws.innerHTML=yl,ut=c(),m(q.$$.fragment),yt=c(),m(ns.$$.fragment),jt=c(),B.c(),Xe=c(),zs=o("p"),zs.innerHTML=jl,mt=c(),Ds=o("div"),m(as.$$.fragment),Jt=c(),Hs=o("p"),Hs.textContent=ml,ft=c(),Ss=o("div"),m(rs.$$.fragment),Ut=c(),Ys=o("div"),m(ps.$$.fragment),Tt=c(),Fs=o("p"),Fs.innerHTML=Jl,bt=c(),m(L.$$.fragment),gt=c(),qs=o("p"),qs.innerHTML=fl,wt=c(),Ls=o("div"),m(cs.$$.fragment),_t=c(),Ps=o("p"),Ps.textContent=Ul,$t=c(),Ks=o("div"),m(is.$$.fragment),kt=c(),Os=o("p"),Os.innerHTML=Tl,Ct=c(),se=o("div"),m(os.$$.fragment),xt=c(),ee=o("p"),ee.innerHTML=bl,vt=c(),te=o("p"),te.innerHTML=gl,It=c(),le=o("p"),le.innerHTML=wl,Zt=c(),ne=o("p"),ne.textContent=_l,Rt=c(),ae=o("p"),ae.innerHTML=$l,Nt=c(),re=o("p"),re.innerHTML=kl,At=c(),pe=o("div"),m(Ms.$$.fragment),Qt=c(),ce=o("p"),ce.innerHTML=Cl,Vt=c(),ie=o("p"),ie.innerHTML=xl,Gt=c(),oe=o("div"),m(ds.$$.fragment),Bt=c(),Me=o("p"),Me.innerHTML=vl,Et=c(),de=o("p"),de.textContent=Il,Xt=c(),he=o("p"),he.innerHTML=Zl,Wt=c(),ue=o("div"),m(hs.$$.fragment),zt=c(),ye=o("p"),ye.innerHTML=Rl,Dt=c(),je=o("div"),m(us.$$.fragment),Ht=c(),me=o("p"),me.innerHTML=Nl,St=c(),Je=o("p"),Je.innerHTML=Al,Yt=c(),fe=o("p"),fe.innerHTML=Ql,Ft=c(),m(ys.$$.fragment),qt=c(),m(js.$$.fragment),Lt=c(),S.c(),We=c(),Ue=o("p"),Ue.innerHTML=Vl,Pt=c(),X.c(),ze=c(),Te=o("p"),Te.innerHTML=Gl,Kt=c(),be=o("div"),m(ms.$$.fragment),Ot=c(),ge=o("div"),m(Js.$$.fragment),sl=c(),we=o("p"),we.innerHTML=Bl,el=c(),_e=o("div"),m(fs.$$.fragment),tl=c(),z.c(),De=c(),m(P.$$.fragment),ll=c(),v&&v.c(),He=c(),$e=o("p"),$e.textContent=El,Se=c(),m(Us.$$.fragment),Ye=c(),Ze=o("p"),this.h()},l(a){const g=jn("svelte-u9bgzb",document.head);e=M(g,"META",{name:!0,content:!0}),g.forEach(d),r=i(a),l=M(a,"P",{}),_(l).forEach(d),p=i(a),J(y.$$.fragment,a),x=i(a),s=M(a,"DIV",{dir:!0});var t=_(s);J(b.$$.fragment,t),Y=i(t),J(k.$$.fragment,t),I=i(t),R.l(t),Ge=i(t),A.l(t),Be=i(t),xs=M(t,"P",{"data-svelte-h":!0}),j(xs)!=="svelte-16ytbon"&&(xs.textContent=rl),Ke=i(t),vs=M(t,"P",{"data-svelte-h":!0}),j(vs)!=="svelte-3v7jh0"&&(vs.innerHTML=pl),Oe=i(t),J(K.$$.fragment,t),st=i(t),V.l(t),Ee=i(t),Is=M(t,"P",{"data-svelte-h":!0}),j(Is)!=="svelte-1yb3c89"&&(Is.innerHTML=cl),et=i(t),Zs=M(t,"P",{"data-svelte-h":!0}),j(Zs)!=="svelte-srdhcr"&&(Zs.textContent=il),tt=i(t),D=M(t,"DIV",{dir:!0});var H=_(D);J(F.$$.fragment,H),lt=al(H," \n```py\nfrom datasets import load_dataset\n"),Rs=M(H,"P",{"data-svelte-h":!0}),j(Rs)!=="svelte-1nnases"&&(Rs.textContent=ol),nt=i(H),J(O.$$.fragment,H),H.forEach(d),at=i(t),Ns=M(t,"P",{"data-svelte-h":!0}),j(Ns)!=="svelte-gdljod"&&(Ns.innerHTML=Ml),rt=i(t),As=M(t,"P",{"data-svelte-h":!0}),j(As)!=="svelte-s1wg7l"&&(As.innerHTML=dl),pt=i(t),Qs=M(t,"P",{"data-svelte-h":!0}),j(Qs)!=="svelte-1kzlf81"&&(Qs.innerHTML=hl),ct=i(t),Vs=M(t,"DIV",{dir:!0});var ke=_(Vs);J(ss.$$.fragment,ke),ke.forEach(d),it=i(t),Gs=M(t,"DIV",{dir:!0});var Ce=_(Gs);J(es.$$.fragment,Ce),Ce.forEach(d),ot=i(t),Bs=M(t,"P",{"data-svelte-h":!0}),j(Bs)!=="svelte-wh80yr"&&(Bs.innerHTML=ul),Mt=i(t),Es=M(t,"DIV",{dir:!0});var Re=_(Es);J(ts.$$.fragment,Re),Re.forEach(d),dt=i(t),Xs=M(t,"DIV",{dir:!0});var Ne=_(Xs);J(ls.$$.fragment,Ne),Ne.forEach(d),ht=i(t),Ws=M(t,"P",{"data-svelte-h":!0}),j(Ws)!=="svelte-1o2rd7n"&&(Ws.innerHTML=yl),ut=i(t),J(q.$$.fragment,t),yt=i(t),J(ns.$$.fragment,t),jt=i(t),B.l(t),Xe=i(t),zs=M(t,"P",{"data-svelte-h":!0}),j(zs)!=="svelte-ahsm5e"&&(zs.innerHTML=jl),mt=i(t),Ds=M(t,"DIV",{dir:!0});var xe=_(Ds);J(as.$$.fragment,xe),xe.forEach(d),Jt=i(t),Hs=M(t,"P",{"data-svelte-h":!0}),j(Hs)!=="svelte-1h1ly7o"&&(Hs.textContent=ml),ft=i(t),Ss=M(t,"DIV",{dir:!0});var Ae=_(Ss);J(rs.$$.fragment,Ae),Ae.forEach(d),Ut=i(t),Ys=M(t,"DIV",{dir:!0});var ve=_(Ys);J(ps.$$.fragment,ve),ve.forEach(d),Tt=i(t),Fs=M(t,"P",{"data-svelte-h":!0}),j(Fs)!=="svelte-nuk9b6"&&(Fs.innerHTML=Jl),bt=i(t),J(L.$$.fragment,t),gt=i(t),qs=M(t,"P",{"data-svelte-h":!0}),j(qs)!=="svelte-cqy60s"&&(qs.innerHTML=fl),wt=i(t),Ls=M(t,"DIV",{dir:!0});var Ie=_(Ls);J(cs.$$.fragment,Ie),Ie.forEach(d),_t=i(t),Ps=M(t,"P",{"data-svelte-h":!0}),j(Ps)!=="svelte-bdarub"&&(Ps.textContent=Ul),$t=i(t),Ks=M(t,"DIV",{dir:!0});var Qe=_(Ks);J(is.$$.fragment,Qe),Qe.forEach(d),kt=i(t),Os=M(t,"P",{"data-svelte-h":!0}),j(Os)!=="svelte-1dyhz55"&&(Os.innerHTML=Tl),Ct=i(t),se=M(t,"DIV",{dir:!0});var sn=_(se);J(os.$$.fragment,sn),sn.forEach(d),xt=i(t),ee=M(t,"P",{"data-svelte-h":!0}),j(ee)!=="svelte-2dtklq"&&(ee.innerHTML=bl),vt=i(t),te=M(t,"P",{"data-svelte-h":!0}),j(te)!=="svelte-1c1bett"&&(te.innerHTML=gl),It=i(t),le=M(t,"P",{"data-svelte-h":!0}),j(le)!=="svelte-1ykrfsj"&&(le.innerHTML=wl),Zt=i(t),ne=M(t,"P",{"data-svelte-h":!0}),j(ne)!=="svelte-f8kh1s"&&(ne.textContent=_l),Rt=i(t),ae=M(t,"P",{"data-svelte-h":!0}),j(ae)!=="svelte-1byd8at"&&(ae.innerHTML=$l),Nt=i(t),re=M(t,"P",{"data-svelte-h":!0}),j(re)!=="svelte-1kzp71k"&&(re.innerHTML=kl),At=i(t),pe=M(t,"DIV",{dir:!0});var en=_(pe);J(Ms.$$.fragment,en),en.forEach(d),Qt=i(t),ce=M(t,"P",{"data-svelte-h":!0}),j(ce)!=="svelte-1jpwoag"&&(ce.innerHTML=Cl),Vt=i(t),ie=M(t,"P",{"data-svelte-h":!0}),j(ie)!=="svelte-px2m4p"&&(ie.innerHTML=xl),Gt=i(t),oe=M(t,"DIV",{dir:!0});var tn=_(oe);J(ds.$$.fragment,tn),tn.forEach(d),Bt=i(t),Me=M(t,"P",{"data-svelte-h":!0}),j(Me)!=="svelte-3wy7wj"&&(Me.innerHTML=vl),Et=i(t),de=M(t,"P",{"data-svelte-h":!0}),j(de)!=="svelte-rvqa6x"&&(de.textContent=Il),Xt=i(t),he=M(t,"P",{"data-svelte-h":!0}),j(he)!=="svelte-1cposln"&&(he.innerHTML=Zl),Wt=i(t),ue=M(t,"DIV",{dir:!0});var ln=_(ue);J(hs.$$.fragment,ln),ln.forEach(d),zt=i(t),ye=M(t,"P",{"data-svelte-h":!0}),j(ye)!=="svelte-pi82k9"&&(ye.innerHTML=Rl),Dt=i(t),je=M(t,"DIV",{dir:!0});var nn=_(je);J(us.$$.fragment,nn),nn.forEach(d),Ht=i(t),me=M(t,"P",{"data-svelte-h":!0}),j(me)!=="svelte-jk3oxg"&&(me.innerHTML=Nl),St=i(t),Je=M(t,"P",{"data-svelte-h":!0}),j(Je)!=="svelte-1xxpkgr"&&(Je.innerHTML=Al),Yt=i(t),fe=M(t,"P",{"data-svelte-h":!0}),j(fe)!=="svelte-1y0zsyc"&&(fe.innerHTML=Ql),Ft=i(t),J(ys.$$.fragment,t),qt=i(t),J(js.$$.fragment,t),Lt=i(t),S.l(t),We=i(t),Ue=M(t,"P",{"data-svelte-h":!0}),j(Ue)!=="svelte-1cgx1mn"&&(Ue.innerHTML=Vl),Pt=i(t),X.l(t),ze=i(t),Te=M(t,"P",{"data-svelte-h":!0}),j(Te)!=="svelte-15zjgh"&&(Te.innerHTML=Gl),Kt=i(t),be=M(t,"DIV",{dir:!0});var an=_(be);J(ms.$$.fragment,an),an.forEach(d),Ot=i(t),ge=M(t,"DIV",{dir:!0});var rn=_(ge);J(Js.$$.fragment,rn),rn.forEach(d),sl=i(t),we=M(t,"P",{"data-svelte-h":!0}),j(we)!=="svelte-16t56lj"&&(we.innerHTML=Bl),el=i(t),_e=M(t,"DIV",{dir:!0});var pn=_(_e);J(fs.$$.fragment,pn),pn.forEach(d),tl=i(t),z.l(t),De=i(t),J(P.$$.fragment,t),ll=i(t),v&&v.l(t),He=i(t),$e=M(t,"P",{"data-svelte-h":!0}),j($e)!=="svelte-qf10w3"&&($e.textContent=El),t.forEach(d),Se=i(a),J(Us.$$.fragment,a),Ye=i(a),Ze=M(a,"P",{}),_(Ze).forEach(d),this.h()},h(){$(e,"name","hf:doc:metadata"),$(e,"content",Bn),$(D,"dir","ltr"),$(Vs,"dir","ltr"),$(Gs,"dir","ltr"),$(Es,"dir","ltr"),$(Xs,"dir","ltr"),$(Ds,"dir","ltr"),$(Ss,"dir","ltr"),$(Ys,"dir","ltr"),$(Ls,"dir","ltr"),$(Ks,"dir","ltr"),$(se,"dir","ltr"),$(pe,"dir","ltr"),$(oe,"dir","ltr"),$(ue,"dir","ltr"),$(je,"dir","ltr"),$(be,"dir","ltr"),$(ge,"dir","ltr"),$(_e,"dir","ltr"),$(s,"dir","rtl")},m(a,g){n(document.head,e),w(a,r,g),w(a,l,g),w(a,p,g),f(y,a,g),w(a,x,g),w(a,s,g),f(b,s,null),n(s,Y),f(k,s,null),n(s,I),Ts[Z].m(s,null),n(s,Ge),bs[N].m(s,null),n(s,Be),n(s,xs),n(s,Ke),n(s,vs),n(s,Oe),f(K,s,null),n(s,st),gs[Q].m(s,null),n(s,Ee),n(s,Is),n(s,et),n(s,Zs),n(s,tt),n(s,D),f(F,D,null),n(D,lt),n(D,Rs),n(D,nt),f(O,D,null),n(s,at),n(s,Ns),n(s,rt),n(s,As),n(s,pt),n(s,Qs),n(s,ct),n(s,Vs),f(ss,Vs,null),n(s,it),n(s,Gs),f(es,Gs,null),n(s,ot),n(s,Bs),n(s,Mt),n(s,Es),f(ts,Es,null),n(s,dt),n(s,Xs),f(ls,Xs,null),n(s,ht),n(s,Ws),n(s,ut),f(q,s,null),n(s,yt),f(ns,s,null),n(s,jt),ws[G].m(s,null),n(s,Xe),n(s,zs),n(s,mt),n(s,Ds),f(as,Ds,null),n(s,Jt),n(s,Hs),n(s,ft),n(s,Ss),f(rs,Ss,null),n(s,Ut),n(s,Ys),f(ps,Ys,null),n(s,Tt),n(s,Fs),n(s,bt),f(L,s,null),n(s,gt),n(s,qs),n(s,wt),n(s,Ls),f(cs,Ls,null),n(s,_t),n(s,Ps),n(s,$t),n(s,Ks),f(is,Ks,null),n(s,kt),n(s,Os),n(s,Ct),n(s,se),f(os,se,null),n(s,xt),n(s,ee),n(s,vt),n(s,te),n(s,It),n(s,le),n(s,Zt),n(s,ne),n(s,Rt),n(s,ae),n(s,Nt),n(s,re),n(s,At),n(s,pe),f(Ms,pe,null),n(s,Qt),n(s,ce),n(s,Vt),n(s,ie),n(s,Gt),n(s,oe),f(ds,oe,null),n(s,Bt),n(s,Me),n(s,Et),n(s,de),n(s,Xt),n(s,he),n(s,Wt),n(s,ue),f(hs,ue,null),n(s,zt),n(s,ye),n(s,Dt),n(s,je),f(us,je,null),n(s,Ht),n(s,me),n(s,St),n(s,Je),n(s,Yt),n(s,fe),n(s,Ft),f(ys,s,null),n(s,qt),f(js,s,null),n(s,Lt),S.m(s,null),n(s,We),n(s,Ue),n(s,Pt),_s[E].m(s,null),n(s,ze),n(s,Te),n(s,Kt),n(s,be),f(ms,be,null),n(s,Ot),n(s,ge),f(Js,ge,null),n(s,sl),n(s,we),n(s,el),n(s,_e),f(fs,_e,null),n(s,tl),$s[W].m(s,null),n(s,De),f(P,s,null),n(s,ll),v&&v.m(s,null),n(s,He),n(s,$e),w(a,Se,g),f(Us,a,g),w(a,Ye,g),w(a,Ze,g),Fe=!0},p(a,[g]){const t={};g&1&&(t.fw=a[0]),y.$set(t);let H=Z;Z=Wl(a),Z!==H&&(Cs(),u(Ts[H],1,1,()=>{Ts[H]=null}),ks(),R=Ts[Z],R||(R=Ts[Z]=Xl[Z](a),R.c()),h(R,1),R.m(s,Ge));let ke=N;N=Dl(a),N!==ke&&(Cs(),u(bs[ke],1,1,()=>{bs[ke]=null}),ks(),A=bs[N],A||(A=bs[N]=zl[N](a),A.c()),h(A,1),A.m(s,Be));let Ce=Q;Q=Sl(a),Q!==Ce&&(Cs(),u(gs[Ce],1,1,()=>{gs[Ce]=null}),ks(),V=gs[Q],V||(V=gs[Q]=Hl[Q](a),V.c()),h(V,1),V.m(s,Ee));const Re={};g&2&&(Re.$$scope={dirty:g,ctx:a}),F.$set(Re);const Ne={};g&2&&(Ne.$$scope={dirty:g,ctx:a}),q.$set(Ne);let xe=G;G=Fl(a),G!==xe&&(Cs(),u(ws[xe],1,1,()=>{ws[xe]=null}),ks(),B=ws[G],B||(B=ws[G]=Yl[G](a),B.c()),h(B,1),B.m(s,Xe));const Ae={};g&2&&(Ae.$$scope={dirty:g,ctx:a}),L.$set(Ae),qe!==(qe=ql(a))&&(S.d(1),S=qe(a),S&&(S.c(),S.m(s,We)));let ve=E;E=Pl(a),E!==ve&&(Cs(),u(_s[ve],1,1,()=>{_s[ve]=null}),ks(),X=_s[E],X||(X=_s[E]=Ll[E](a),X.c()),h(X,1),X.m(s,ze));let Ie=W;W=Ol(a),W!==Ie&&(Cs(),u($s[Ie],1,1,()=>{$s[Ie]=null}),ks(),z=$s[W],z||(z=$s[W]=Kl[W](a),z.c()),h(z,1),z.m(s,De));const Qe={};g&2&&(Qe.$$scope={dirty:g,ctx:a}),P.$set(Qe),a[0]==="tf"?v?g&1&&h(v,1):(v=cn(),v.c(),h(v,1),v.m(s,He)):v&&(Cs(),u(v,1,1,()=>{v=null}),ks())},i(a){Fe||(h(y.$$.fragment,a),h(b.$$.fragment,a),h(k.$$.fragment,a),h(R),h(A),h(K.$$.fragment,a),h(V),h(F.$$.fragment,a),h(O.$$.fragment,a),h(ss.$$.fragment,a),h(es.$$.fragment,a),h(ts.$$.fragment,a),h(ls.$$.fragment,a),h(q.$$.fragment,a),h(ns.$$.fragment,a),h(B),h(as.$$.fragment,a),h(rs.$$.fragment,a),h(ps.$$.fragment,a),h(L.$$.fragment,a),h(cs.$$.fragment,a),h(is.$$.fragment,a),h(os.$$.fragment,a),h(Ms.$$.fragment,a),h(ds.$$.fragment,a),h(hs.$$.fragment,a),h(us.$$.fragment,a),h(ys.$$.fragment,a),h(js.$$.fragment,a),h(X),h(ms.$$.fragment,a),h(Js.$$.fragment,a),h(fs.$$.fragment,a),h(z),h(P.$$.fragment,a),h(v),h(Us.$$.fragment,a),Fe=!0)},o(a){u(y.$$.fragment,a),u(b.$$.fragment,a),u(k.$$.fragment,a),u(R),u(A),u(K.$$.fragment,a),u(V),u(F.$$.fragment,a),u(O.$$.fragment,a),u(ss.$$.fragment,a),u(es.$$.fragment,a),u(ts.$$.fragment,a),u(ls.$$.fragment,a),u(q.$$.fragment,a),u(ns.$$.fragment,a),u(B),u(as.$$.fragment,a),u(rs.$$.fragment,a),u(ps.$$.fragment,a),u(L.$$.fragment,a),u(cs.$$.fragment,a),u(is.$$.fragment,a),u(os.$$.fragment,a),u(Ms.$$.fragment,a),u(ds.$$.fragment,a),u(hs.$$.fragment,a),u(us.$$.fragment,a),u(ys.$$.fragment,a),u(js.$$.fragment,a),u(X),u(ms.$$.fragment,a),u(Js.$$.fragment,a),u(fs.$$.fragment,a),u(z),u(P.$$.fragment,a),u(v),u(Us.$$.fragment,a),Fe=!1},d(a){a&&(d(r),d(l),d(p),d(x),d(s),d(Se),d(Ye),d(Ze)),d(e),U(y,a),U(b),U(k),Ts[Z].d(),bs[N].d(),U(K),gs[Q].d(),U(F),U(O),U(ss),U(es),U(ts),U(ls),U(q),U(ns),ws[G].d(),U(as),U(rs),U(ps),U(L),U(cs),U(is),U(os),U(Ms),U(ds),U(hs),U(us),U(ys),U(js),S.d(),_s[E].d(),U(ms),U(Js),U(fs),$s[W].d(),U(P),v&&v.d(),U(Us,a)}}}const Bn='{"title":"پردازش داده","local":"پردازش-داده","sections":[{"title":"بارگذاری دیتاسِت‌ها از هاب","local":"بارگذاری-دیتاستها-از-هاب","sections":[],"depth":3},{"title":"پیش‌پردازش دیتاسِت‌‌ها","local":"پیشپردازش-دیتاستها","sections":[],"depth":3},{"title":"هم‌طول‌سازی پویا","local":"همطولسازی-پویا","sections":[],"depth":3}],"depth":1}';function En(T,e,r){let l="pt";return hn(()=>{const p=new URLSearchParams(window.location.search);r(0,l=p.get("fw")||"pt")}),[l]}class qn extends un{constructor(e){super(),yn(this,e,En,Gn,dn,{})}}export{qn as component};
