Buckets:

rtrm's picture
download
raw
34.3 kB
import{s as Se,o as qe,n as zt}from"../chunks/scheduler.39a43cde.js";import{S as De,i as Ae,g as o,s as l,r as c,A as Le,h as p,f as d,c as n,j as J,u as m,x as $,k as g,y as a,a as T,v as h,d as M,t as u,w as f}from"../chunks/index.23ec2204.js";import{T as Ct}from"../chunks/Tip.99600415.js";import{Y as Wt}from"../chunks/Youtube.70c27fbc.js";import{C as j}from"../chunks/CodeBlock.0e2be86f.js";import{D as Pe}from"../chunks/DocNotebookDropdown.fdaa78a6.js";import{F as Ke}from"../chunks/FrameworkSwitchCourse.9ca78d26.js";import{H as Vt}from"../chunks/Heading.c42e7061.js";import{E as Oe}from"../chunks/getInferenceSnippets.fd9514fe.js";function ts(U){let r,b='توجه داشته باشید که مدل‌های ترَنسفورمِر هاگینگ‌فِیس قابلیت ویژه‌ای دارند که بسیاری از مدل‌های کِراس ندارند - آنها می‌توانند به صورت خودکار از یک تابع هزینه مناسب که به صورت داخلی محاسبه می‌کنند استفاده کنند. در صورتی که شما آرگومانی برای تابع هزینه در زمان <span dir="ltr"><code>compile()</code></span> تعیین نکنید آنها از این تابع هزینه به صورت پیش‌فرض استفاده خواهند کرد. توجه داشته باشید که جهت استفاده از تابع هزینه داخلی شما نیاز خواهید داشت برچسب دسته‌های خودتان را به عنوان بخشی از ورودی، نه به صورت یک برچسب دسته مجزا که روش معمول استفاده از برچسب دسته‌ها در مدل‌های کِراس می‌باشد، ارسال کنید. شما مثال‌هایی از این را در بخش ۲ این درس خواهید دید، جایی که تعیین تابع هزینه‌ی درست می‌تواند تا اندازه‌ای پیچیده باشد. به هر حال، برای دسته‌بندی رشته‌‌‌ها، یک تابع هزینه استانداد کِراس به خوبی کار می‌کند، چیزی که ما در اینجا استفاده خواهیم کرد.';return{c(){r=o("p"),r.innerHTML=b},l(i){r=p(i,"P",{"data-svelte-h":!0}),$(r)!=="svelte-aktqnh"&&(r.innerHTML=b)},m(i,w){T(i,r,w)},p:zt,d(i){i&&d(r)}}}function es(U){let r,b="در اینجا توجه شما را به یک مسئله عام جلب می‌کنیم - شما <em>می‌توانید</em> فقط نام تابع هزینه را به صورت یک متغیر متنی برای کِراس ارسال کنید، اما کِراس به صورت پیش‌فرض فکر می‌کند شما یک لایه softmax از پیش به خروجی‌تان اعمال کرده‌اید. با این حال، بسیاری از مدل‌ها مقادیر را درست قبل از اینکه softmax به آنها اعمال شود به خروجی می‌دهند، که همچنین به عنوان <em>logits</em> شناخته می‌شوند. ما نیاز داریم که به تابع هزینه بگوییم، این کاری است که مدل‌مان انجام می‌دهد و تنها راه گفتن آن این است که به جای ارسال نام تابع هزینه به صورت متغیر متنی، آن را به صورت مستقیم صدا بزنیم.";return{c(){r=o("p"),r.innerHTML=b},l(i){r=p(i,"P",{"data-svelte-h":!0}),$(r)!=="svelte-1tv6t9"&&(r.innerHTML=b)},m(i,w){T(i,r,w)},p:zt,d(i){i&&d(r)}}}function ss(U){let r,b='کتابخانه ترنسفورمرهای هاگینگ‌فِیس همچنین یک تابع <span dir="ltr"><code>create_optimizer()</code></span> دارد که بهینه‌سازی از نوع <code>AdamW</code>، دارای میزان کاهش نرخ یادگیری می‌سازد. این یک میان‌بر مناسب است که آن‌ را با جزئیات در بخش‌های بعدی این آموزش خواهید دید.';return{c(){r=o("p"),r.innerHTML=b},l(i){r=p(i,"P",{"data-svelte-h":!0}),$(r)!=="svelte-1z0q77k"&&(r.innerHTML=b)},m(i,w){T(i,r,w)},p:zt,d(i){i&&d(r)}}}function as(U){let r,b='💡 اگر مایلید مدلتان را در حین تعلیم به صورت خودکار در هاب بارگذاری کنید، می‌توانید پارامتر <code>PushToHubCallback</code> را در تابع <span dir="ltr"><code>model.fit()</code></span> ارسال کنید. در <a href="/course/chapter4/3">فصل ۴</a> در این مورد بیشتر خواهیم آموخت.';return{c(){r=o("p"),r.innerHTML=b},l(i){r=p(i,"P",{"data-svelte-h":!0}),$(r)!=="svelte-a3bl9b"&&(r.innerHTML=b)},m(i,w){T(i,r,w)},p:zt,d(i){i&&d(r)}}}function ls(U){let r,b,i,w,v,It,t,k,Ft,X,Yt,K,Te='زمانی که همه کارهای پیش‌پردازش در بخش قبل را انجام دادید، فقط چند مرحله با‌قی‌مانده تا تعلیم مدل دارید. با این حال، توجه داشته باشید که دستور <span dir="ltr"><code>model.fit()</code></span> روی CPU بسیار آهسته اجرا خواهد شد. اگر GPU ندارید، می‌توانید از GPU یا TPU مجانی روی <a href="https://colab.research.google.com/" rel="nofollow">گوگل کولَب</a> استفاده کنید.',Ht,O,Ue="نمونه کدهای زیر فرض می‌کنند که شما مثال‌های بخش قبل را از پیش اجرا کرده‌اید. این یک خلاصه کوتاه است جهت یادآوری آنچه نیاز دارید:",Qt,tt,R,Bt,C,Et,et,je="مدل‌های تِنسورفِلو که از ترَنسفورمِرهای هاگینگ‌فِیس وارد شده‌اند از پیش مدل‌های کِراس هستند. این هم مقدمه‌ای کوتاه به کِراس.",xt,W,Nt,st,ve="این به این معنی است که به محض اینکه داده‌مان را در اختیار بگیریم، کار بسیار کمی لازم است تا تعلیم را روی آن شروع کنیم.",St,V,qt,at,_e='مانند <a href="/course/chapter2">فصل قبل</a>، ما از کلاس <code>TFAutoModelForSequenceClassification</code> با دو برچسب دسته استفاده خواهیم کرد:',Dt,lt,z,At,nt,Ge='شما متوجه خواهید شد که برخلاف <a href="/course/chapter2">فصل ۲</a>، بعد از ساختن این مدل از پیش‌ تعلیم دیده یک هشدار دریافت می‌کنید. این به این خاطر است که BERT برای دسته‌بندی دو جمله‌ها از پیش‌ تعلیم ندیده است، بنابراین لایه سَر مدل از پیش‌ تعلیم دیده حذف شده و یک لایه سَر مناسب جهت دسته بندی رشته‌‌‌ها به جای آن قرار گرفته است. هشدارها نشان می‌دهند که برخی از وزن‌های مدل استفاده نشده‌اند (آنهایی که مربوط به لایه‌ سَر حذف شده مدل از پیش تعلیم دیده هستند) و برخی دیگر به صورت تصادفی مقدار‌ دهی شده‌‌اند (آنهایی که مربوط به لایه‌ سَر جدید هستند). در نتیجه این امر شما را تشویق به تعلیم مدل می‌کند، که دقیقا همان کاری است که می‌خواهیم اکنون انجام دهیم.',Lt,rt,Ze='برای کوک‌ کردن مدل روی دِیتاسِت‌مان، ما فقط باید مدل را <span dir="ltr"><code>compile()</code></span> کنیم و سپس داده‌مان را به تابع <span dir="ltr"><code>fit()</code></span> ارسال کنیم. این کار فرایند کوک‌ کردن را شروع می‌کند (که باید چند دقیقه روی GPU طول بکشد) و در همین حین هزینه <code>training</code> و هزینه <code>validation</code> را در انتهای هر epoch گزارش می‌دهد.',Pt,_,Kt,ot,F,Ot,G,te,Y,ee,H,se,pt,Ie='اگر کد بالا را امتحان کنید، قطعا اجرا خواهد شد، اما متوجه خواهید شد که هزینه بسیار آهسته یا به صورت گاه و بیگاه کاهش می‌یابد. علت اصلی این امر <em>نرخ یادگیری</em> می‌باشد. مانند تابع هزینه، وقتی که ما نام بهینه‌ساز را به صورت یک متغیر متنی به کِراس ارسال می‌کنیم، کِراس همه پارامترهای آن، شامل نرخ یادگیری، را با مقادیر پیش‌فرض مقداردهی اولیه می‌کند. به تجربه طولانی، ما می‌دانیم که مدل‌های ترَنسفورمِر از نرخ‌های یادگیری بسیار کوچک‌تر بهره بیشتری می‌برند تا مقدار پیش‌فرض برای بهینه‌ساز Adam، که <span dir="ltr">۱e-۳</span> می‌باشد و به صورت‌ ۱۰ به توان <span dir="ltr">-۳</span> یا ۰،۰۰۱ نیز نوشته می‌شود.',ae,it,ke="علاوه بر کم کردن یکباره نرخ یادگیری، ترفند دیگری نیز در آستین داریم: ما می‌توانیم نرخ یادگیری را به آهستگی در طول دوره تعلیم کاهش دهیم. گاها خواهید دید که از این روش در متون مشابه با عنوان نرخ یادگیری <em>محو شونده</em> یا <em>بازپُختی</em> یاد می‌شود. بهترین روش برای انجام این کار در کِراس استفاده از زمان‌بند نرخ یادگیری است. یک زمان‌بند خوب برای استفاده، زمان‌بند <code>PolynomialDecay</code> می‌باشد - این زمان‌بند برخلاف نامش نرخ یادگیری را در حالت پیش‌فرض به صورت خطی از مقدار اولیه تا مقدار نهایی در طول دوره تعلیم کاهش می‌دهد که دقیقا همان چیزی است که ما می‌خواهیم. به منظور استفاده درست از زمان‌بند ما نیاز داریم که به آن بگویم طول زمان تعلیم چقدر خواهد بود. در زیر ما آن را به عنوان <code>num_train_steps</code> محاسبه می‌کنیم.",le,dt,Q,ne,Z,re,ct,Xe="اکنون بهینه‌ساز کاملا جدیدمان را در اختیار داریم و می‌توانیم آن را تعلیم دهیم. ابتدا، اجازه دهید مدل را مجددا بارگذاری کنیم تا تغییرات ایجاد شده بر وزنها که در تعلیم قبلی اعمال شده‌اند را به حالت اولیه بازگردانیم، سپس می‌توانیم مدل را با بهینه ساز جدید تدوین کنیم:",oe,mt,B,pe,ht,Re="حالا دوباره مدل را فیت می‌کنیم:",ie,Mt,E,de,I,ce,x,me,N,he,ut,Ce='تعلیم و تماشای پایین رفتن هزینه خیلی خوب است، اما اگر واقعا بخواهیم از مدل تعلیم دیده‌مان، چه برای محاسبه برخی معیار‌ها و چه برای استفاده در خط تولید، خروجی دریافت کنیم باید چه کار کنیم؟ برای این منظور می‌توانیم از تابع <span dir="ltr"><code>predict()</code></span> استفاده کنیم. این کار به ازای هر کلاس یک <em>logits</em> از لایه‌ سَر خروجی مدل باز می‌گرداند.',Me,ft,S,ue,yt,We="سپس می‌توانیم <code>logits</code> را با استفاده از <code>argmax</code> برای یافتن بزرگ‌ترین <code>logit</code>، که نماینده محتمل‌ترین دسته می‌باشد، به پیش‌بینی‌های دسته مدل تبدیل کنیم:",fe,$t,q,ye,bt,D,$e,wt,Ve='اکنون، اجازه دهید از <code>preds</code> برای محاسبه برخی معیارها استفاده کنیم! ما می‌توانیم معیارهای مرتبط با دیتاسِت MRPC را، به همان آسانی که دیتاسِت را بارگذاری کردیم، بارگذاری کنیم اما این بار با استفاده از تابع <span dir="ltr"><code>load_metric()</code></span>. شیء باز گردانده شده تابعی به نام <span dir="ltr"><code>compute()</code></span> دارد که می‌توانیم برای محاسبه معیارها از آن استفاده کنیم:',be,Jt,A,we,gt,L,Je,Tt,ze='از آنجایی که مقداردهی اولیه تصادفی در لایه‌ سَر مدل ممکن است مقادیر معیارهای حاصل را تغییر دهد، نتایج دریافتی شما می‌توانند متفاوت باشند. در اینجا می‌بینیم که مدل ما دقتی معادل ۸۵.۷۸٪ و <span dir="ltr">F1 score</span> معادل ۸۹.۹۷٪ روی مجموعه <code>validation</code> دارد. این‌‌ها دو معیاری هستند که جهت سنجش نتایج روی داده MRPC در محک GLUE به کار رفته‌اند. جدول نتایج در مقاله <a href="https://arxiv.org/pdf/1810.04805.pdf" rel="nofollow">BERT</a>، <span dir="ltr">F1 score</span> برابر با ۸۸.۹ برای مدل پایه گزارش کرده است. توجه داشته باشید که آن مدل <code>uncased</code> بود در حالی که اکنون ما از مدل <code>cased</code> استفاده می‌کنیم، که نتایج بهتر را توجیح می‌کند.',ge,Ut,Fe='به این ترتیب مقدمه کوک کردن با استفاده از <code>API</code> کِراس به پایان می‌رسد. در فصل ۷ یک مثال از انجام این کار برای معمول‌ترین مسئله‌های <code>NLP</code> ارائه خواهد شد. اگر مایلید مهارت‌های خود را روی <code>API</code> کِراس تقویت کنید، سعی کنید مدلی را روی مسئله <span dir="ltr"><code>GLUE SST-2</code></span>، با استفاده از روش پردازش داده‌ که در بخش ۲ انجام دادید، کوک کنید.',kt,P,Xt,jt,Rt;return v=new Ke({props:{fw:U[0]}}),k=new Vt({props:{title:"کوک کردن مدل‌ها با استفاده از کِراس",local:"کوک-کردن-مدلها-با-استفاده-از-کراس",headingTag:"h1"}}),X=new Pe({props:{classNames:"absolute z-10 right-0 top-0",options:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/chapter3/section3_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/chapter3/section3_tf.ipynb"}]}}),R=new j({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTBBZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMkMlMjBEYXRhQ29sbGF0b3JXaXRoUGFkZGluZyUwQWltcG9ydCUyMG51bXB5JTIwYXMlMjBucCUwQSUwQXJhd19kYXRhc2V0cyUyMCUzRCUyMGxvYWRfZGF0YXNldCglMjJnbHVlJTIyJTJDJTIwJTIybXJwYyUyMiklMEFjaGVja3BvaW50JTIwJTNEJTIwJTIyYmVydC1iYXNlLXVuY2FzZWQlMjIlMEF0b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KSUwQSUwQSUwQWRlZiUyMHRva2VuaXplX2Z1bmN0aW9uKGV4YW1wbGUpJTNBJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwdG9rZW5pemVyKGV4YW1wbGUlNUIlMjJzZW50ZW5jZTElMjIlNUQlMkMlMjBleGFtcGxlJTVCJTIyc2VudGVuY2UyJTIyJTVEJTJDJTIwdHJ1bmNhdGlvbiUzRFRydWUpJTBBJTBBJTBBdG9rZW5pemVkX2RhdGFzZXRzJTIwJTNEJTIwcmF3X2RhdGFzZXRzLm1hcCh0b2tlbml6ZV9mdW5jdGlvbiUyQyUyMGJhdGNoZWQlM0RUcnVlKSUwQSUwQWRhdGFfY29sbGF0b3IlMjAlM0QlMjBEYXRhQ29sbGF0b3JXaXRoUGFkZGluZyh0b2tlbml6ZXIlM0R0b2tlbml6ZXIlMkMlMjByZXR1cm5fdGVuc29ycyUzRCUyMnRmJTIyKSUwQSUwQXRmX3RyYWluX2RhdGFzZXQlMjAlM0QlMjB0b2tlbml6ZWRfZGF0YXNldHMlNUIlMjJ0cmFpbiUyMiU1RC50b190Zl9kYXRhc2V0KCUwQSUyMCUyMCUyMCUyMGNvbHVtbnMlM0QlNUIlMjJhdHRlbnRpb25fbWFzayUyMiUyQyUyMCUyMmlucHV0X2lkcyUyMiUyQyUyMCUyMnRva2VuX3R5cGVfaWRzJTIyJTVEJTJDJTBBJTIwJTIwJTIwJTIwbGFiZWxfY29scyUzRCU1QiUyMmxhYmVscyUyMiU1RCUyQyUwQSUyMCUyMCUyMCUyMHNodWZmbGUlM0RUcnVlJTJDJTBBJTIwJTIwJTIwJTIwY29sbGF0ZV9mbiUzRGRhdGFfY29sbGF0b3IlMkMlMEElMjAlMjAlMjAlMjBiYXRjaF9zaXplJTNEOCUyQyUwQSklMEElMEF0Zl92YWxpZGF0aW9uX2RhdGFzZXQlMjAlM0QlMjB0b2tlbml6ZWRfZGF0YXNldHMlNUIlMjJ2YWxpZGF0aW9uJTIyJTVELnRvX3RmX2RhdGFzZXQoJTBBJTIwJTIwJTIwJTIwY29sdW1ucyUzRCU1QiUyMmF0dGVudGlvbl9tYXNrJTIyJTJDJTIwJTIyaW5wdXRfaWRzJTIyJTJDJTIwJTIydG9rZW5fdHlwZV9pZHMlMjIlNUQlMkMlMEElMjAlMjAlMjAlMjBsYWJlbF9jb2xzJTNEJTVCJTIybGFiZWxzJTIyJTVEJTJDJTBBJTIwJTIwJTIwJTIwc2h1ZmZsZSUzREZhbHNlJTJDJTBBJTIwJTIwJTIwJTIwY29sbGF0ZV9mbiUzRGRhdGFfY29sbGF0b3IlMkMlMEElMjAlMjAlMjAlMjBiYXRjaF9zaXplJTNEOCUyQyUwQSk=",highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset
<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer, DataCollatorWithPadding
<span class="hljs-keyword">import</span> numpy <span class="hljs-keyword">as</span> np
raw_datasets = load_dataset(<span class="hljs-string">&quot;glue&quot;</span>, <span class="hljs-string">&quot;mrpc&quot;</span>)
checkpoint = <span class="hljs-string">&quot;bert-base-uncased&quot;</span>
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
<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>)
tokenized_datasets = raw_datasets.<span class="hljs-built_in">map</span>(tokenize_function, batched=<span class="hljs-literal">True</span>)
data_collator = DataCollatorWithPadding(tokenizer=tokenizer, return_tensors=<span class="hljs-string">&quot;tf&quot;</span>)
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=new Vt({props:{title:"تعلیم",local:"تعلیم",headingTag:"h3"}}),W=new Wt({props:{id:"rnTGBy2ax1c"}}),V=new Wt({props:{id:"AUozVp78dhk"}}),z=new j({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRGQXV0b01vZGVsRm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbiUwQSUwQW1vZGVsJTIwJTNEJTIwVEZBdXRvTW9kZWxGb3JTZXF1ZW5jZUNsYXNzaWZpY2F0aW9uLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50JTJDJTIwbnVtX2xhYmVscyUzRDIp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TFAutoModelForSequenceClassification
model = TFAutoModelForSequenceClassification.from_pretrained(checkpoint, num_labels=<span class="hljs-number">2</span>)`,wrap:!1}}),_=new Ct({props:{$$slots:{default:[ts]},$$scope:{ctx:U}}}),F=new j({props:{code:"ZnJvbSUyMHRlbnNvcmZsb3cua2VyYXMubG9zc2VzJTIwaW1wb3J0JTIwU3BhcnNlQ2F0ZWdvcmljYWxDcm9zc2VudHJvcHklMEElMEFtb2RlbC5jb21waWxlKCUwQSUyMCUyMCUyMCUyMG9wdGltaXplciUzRCUyMmFkYW0lMjIlMkMlMEElMjAlMjAlMjAlMjBsb3NzJTNEU3BhcnNlQ2F0ZWdvcmljYWxDcm9zc2VudHJvcHkoZnJvbV9sb2dpdHMlM0RUcnVlKSUyQyUwQSUyMCUyMCUyMCUyMG1ldHJpY3MlM0QlNUIlMjJhY2N1cmFjeSUyMiU1RCUyQyUwQSklMEFtb2RlbC5maXQoJTBBJTIwJTIwJTIwJTIwdGZfdHJhaW5fZGF0YXNldCUyQyUwQSUyMCUyMCUyMCUyMHZhbGlkYXRpb25fZGF0YSUzRHRmX3ZhbGlkYXRpb25fZGF0YXNldCUyQyUwQSk=",highlighted:`<span class="hljs-keyword">from</span> tensorflow.keras.losses <span class="hljs-keyword">import</span> SparseCategoricalCrossentropy
model.<span class="hljs-built_in">compile</span>(
optimizer=<span class="hljs-string">&quot;adam&quot;</span>,
loss=SparseCategoricalCrossentropy(from_logits=<span class="hljs-literal">True</span>),
metrics=[<span class="hljs-string">&quot;accuracy&quot;</span>],
)
model.fit(
tf_train_dataset,
validation_data=tf_validation_dataset,
)`,wrap:!1}}),G=new Ct({props:{warning:!0,$$slots:{default:[es]},$$scope:{ctx:U}}}),Y=new Vt({props:{title:"بهبود کارایی تعلیم",local:"بهبود-کارایی-تعلیم",headingTag:"h3"}}),H=new Wt({props:{id:"cpzq6ESSM5c"}}),Q=new j({props:{code:"ZnJvbSUyMHRlbnNvcmZsb3cua2VyYXMub3B0aW1pemVycy5zY2hlZHVsZXMlMjBpbXBvcnQlMjBQb2x5bm9taWFsRGVjYXklMEElMEFiYXRjaF9zaXplJTIwJTNEJTIwOCUwQW51bV9lcG9jaHMlMjAlM0QlMjAzJTBBJTIzJTIwVGhlJTIwbnVtYmVyJTIwb2YlMjB0cmFpbmluZyUyMHN0ZXBzJTIwaXMlMjB0aGUlMjBudW1iZXIlMjBvZiUyMHNhbXBsZXMlMjBpbiUyMHRoZSUyMGRhdGFzZXQlMkMlMjBkaXZpZGVkJTIwYnklMjB0aGUlMjBiYXRjaCUyMHNpemUlMjB0aGVuJTIwbXVsdGlwbGllZCUwQSUyMyUyMGJ5JTIwdGhlJTIwdG90YWwlMjBudW1iZXIlMjBvZiUyMGVwb2Nocy4lMjBOb3RlJTIwdGhhdCUyMHRoZSUyMHRmX3RyYWluX2RhdGFzZXQlMjBoZXJlJTIwaXMlMjBhJTIwYmF0Y2hlZCUyMHRmLmRhdGEuRGF0YXNldCUyQyUwQSUyMyUyMG5vdCUyMHRoZSUyMG9yaWdpbmFsJTIwSHVnZ2luZyUyMEZhY2UlMjBEYXRhc2V0JTJDJTIwc28lMjBpdHMlMjBsZW4oKSUyMGlzJTIwYWxyZWFkeSUyMG51bV9zYW1wbGVzJTIwJTJGJTJGJTIwYmF0Y2hfc2l6ZS4lMEFudW1fdHJhaW5fc3RlcHMlMjAlM0QlMjBsZW4odGZfdHJhaW5fZGF0YXNldCklMjAqJTIwbnVtX2Vwb2NocyUwQWxyX3NjaGVkdWxlciUyMCUzRCUyMFBvbHlub21pYWxEZWNheSglMEElMjAlMjAlMjAlMjBpbml0aWFsX2xlYXJuaW5nX3JhdGUlM0Q1ZS01JTJDJTIwZW5kX2xlYXJuaW5nX3JhdGUlM0QwLjAlMkMlMjBkZWNheV9zdGVwcyUzRG51bV90cmFpbl9zdGVwcyUwQSklMEFmcm9tJTIwdGVuc29yZmxvdy5rZXJhcy5vcHRpbWl6ZXJzJTIwaW1wb3J0JTIwQWRhbSUwQSUwQW9wdCUyMCUzRCUyMEFkYW0obGVhcm5pbmdfcmF0ZSUzRGxyX3NjaGVkdWxlcik=",highlighted:`<span class="hljs-keyword">from</span> tensorflow.keras.optimizers.schedules <span class="hljs-keyword">import</span> PolynomialDecay
batch_size = <span class="hljs-number">8</span>
num_epochs = <span class="hljs-number">3</span>
<span class="hljs-comment"># The number of training steps is the number of samples in the dataset, divided by the batch size then multiplied</span>
<span class="hljs-comment"># by the total number of epochs. Note that the tf_train_dataset here is a batched tf.data.Dataset,</span>
<span class="hljs-comment"># not the original Hugging Face Dataset, so its len() is already num_samples // batch_size.</span>
num_train_steps = <span class="hljs-built_in">len</span>(tf_train_dataset) * num_epochs
lr_scheduler = PolynomialDecay(
initial_learning_rate=<span class="hljs-number">5e-5</span>, end_learning_rate=<span class="hljs-number">0.0</span>, decay_steps=num_train_steps
)
<span class="hljs-keyword">from</span> tensorflow.keras.optimizers <span class="hljs-keyword">import</span> Adam
opt = Adam(learning_rate=lr_scheduler)`,wrap:!1}}),Z=new Ct({props:{$$slots:{default:[ss]},$$scope:{ctx:U}}}),B=new j({props:{code:"aW1wb3J0JTIwdGVuc29yZmxvdyUyMGFzJTIwdGYlMEElMEFtb2RlbCUyMCUzRCUyMFRGQXV0b01vZGVsRm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbi5mcm9tX3ByZXRyYWluZWQoY2hlY2twb2ludCUyQyUyMG51bV9sYWJlbHMlM0QyKSUwQWxvc3MlMjAlM0QlMjB0Zi5rZXJhcy5sb3NzZXMuU3BhcnNlQ2F0ZWdvcmljYWxDcm9zc2VudHJvcHkoZnJvbV9sb2dpdHMlM0RUcnVlKSUwQW1vZGVsLmNvbXBpbGUob3B0aW1pemVyJTNEb3B0JTJDJTIwbG9zcyUzRGxvc3MlMkMlMjBtZXRyaWNzJTNEJTVCJTIyYWNjdXJhY3klMjIlNUQp",highlighted:`<span class="hljs-keyword">import</span> tensorflow <span class="hljs-keyword">as</span> tf
model = TFAutoModelForSequenceClassification.from_pretrained(checkpoint, num_labels=<span class="hljs-number">2</span>)
loss = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=<span class="hljs-literal">True</span>)
model.<span class="hljs-built_in">compile</span>(optimizer=opt, loss=loss, metrics=[<span class="hljs-string">&quot;accuracy&quot;</span>])`,wrap:!1}}),E=new j({props:{code:"bW9kZWwuZml0KHRmX3RyYWluX2RhdGFzZXQlMkMlMjB2YWxpZGF0aW9uX2RhdGElM0R0Zl92YWxpZGF0aW9uX2RhdGFzZXQlMkMlMjBlcG9jaHMlM0QzKQ==",highlighted:'model.fit(tf_train_dataset, validation_data=tf_validation_dataset, epochs=<span class="hljs-number">3</span>)',wrap:!1}}),I=new Ct({props:{$$slots:{default:[as]},$$scope:{ctx:U}}}),x=new Vt({props:{title:"پیش‌بینی‌های مدل",local:"پیشبینیهای-مدل",headingTag:"h3"}}),N=new Wt({props:{id:"nx10eh4CoOs"}}),S=new j({props:{code:"cHJlZHMlMjAlM0QlMjBtb2RlbC5wcmVkaWN0KHRmX3ZhbGlkYXRpb25fZGF0YXNldCklNUIlMjJsb2dpdHMlMjIlNUQ=",highlighted:'preds = model.predict(tf_validation_dataset)[<span class="hljs-string">&quot;logits&quot;</span>]',wrap:!1}}),q=new j({props:{code:"Y2xhc3NfcHJlZHMlMjAlM0QlMjBucC5hcmdtYXgocHJlZHMlMkMlMjBheGlzJTNEMSklMEFwcmludChwcmVkcy5zaGFwZSUyQyUyMGNsYXNzX3ByZWRzLnNoYXBlKQ==",highlighted:`class_preds = np.argmax(preds, axis=<span class="hljs-number">1</span>)
<span class="hljs-built_in">print</span>(preds.shape, class_preds.shape)`,wrap:!1}}),D=new j({props:{code:"KDQwOCUyQyUyMDIpJTIwKDQwOCUyQyk=",highlighted:'(<span class="hljs-number">408</span>, <span class="hljs-number">2</span>) (<span class="hljs-number">408</span>,)',wrap:!1}}),A=new j({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9tZXRyaWMlMEElMEFtZXRyaWMlMjAlM0QlMjBsb2FkX21ldHJpYyglMjJnbHVlJTIyJTJDJTIwJTIybXJwYyUyMiklMEFtZXRyaWMuY29tcHV0ZShwcmVkaWN0aW9ucyUzRGNsYXNzX3ByZWRzJTJDJTIwcmVmZXJlbmNlcyUzRHJhd19kYXRhc2V0cyU1QiUyMnZhbGlkYXRpb24lMjIlNUQlNUIlMjJsYWJlbCUyMiU1RCk=",highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_metric
metric = load_metric(<span class="hljs-string">&quot;glue&quot;</span>, <span class="hljs-string">&quot;mrpc&quot;</span>)
metric.compute(predictions=class_preds, references=raw_datasets[<span class="hljs-string">&quot;validation&quot;</span>][<span class="hljs-string">&quot;label&quot;</span>])`,wrap:!1}}),L=new j({props:{code:"JTdCJ2FjY3VyYWN5JyUzQSUyMDAuODU3ODQzMTM3MjU0OTAxOSUyQyUyMCdmMSclM0ElMjAwLjg5OTY1Mzk3OTIzODc1NDIlN0Q=",highlighted:'{<span class="hljs-string">&#x27;accuracy&#x27;</span>: <span class="hljs-number">0.8578431372549019</span>, <span class="hljs-string">&#x27;f1&#x27;</span>: <span class="hljs-number">0.8996539792387542</span>}',wrap:!1}}),P=new Oe({props:{source:"https://github.com/huggingface/course/blob/main/chapters/fa/chapter3/3_tf.mdx"}}),{c(){r=o("meta"),b=l(),i=o("p"),w=l(),c(v.$$.fragment),It=l(),t=o("div"),c(k.$$.fragment),Ft=l(),c(X.$$.fragment),Yt=l(),K=o("p"),K.innerHTML=Te,Ht=l(),O=o("p"),O.textContent=Ue,Qt=l(),tt=o("div"),c(R.$$.fragment),Bt=l(),c(C.$$.fragment),Et=l(),et=o("p"),et.textContent=je,xt=l(),c(W.$$.fragment),Nt=l(),st=o("p"),st.textContent=ve,St=l(),c(V.$$.fragment),qt=l(),at=o("p"),at.innerHTML=_e,Dt=l(),lt=o("div"),c(z.$$.fragment),At=l(),nt=o("p"),nt.innerHTML=Ge,Lt=l(),rt=o("p"),rt.innerHTML=Ze,Pt=l(),c(_.$$.fragment),Kt=l(),ot=o("div"),c(F.$$.fragment),Ot=l(),c(G.$$.fragment),te=l(),c(Y.$$.fragment),ee=l(),c(H.$$.fragment),se=l(),pt=o("p"),pt.innerHTML=Ie,ae=l(),it=o("p"),it.innerHTML=ke,le=l(),dt=o("div"),c(Q.$$.fragment),ne=l(),c(Z.$$.fragment),re=l(),ct=o("p"),ct.textContent=Xe,oe=l(),mt=o("div"),c(B.$$.fragment),pe=l(),ht=o("p"),ht.textContent=Re,ie=l(),Mt=o("div"),c(E.$$.fragment),de=l(),c(I.$$.fragment),ce=l(),c(x.$$.fragment),me=l(),c(N.$$.fragment),he=l(),ut=o("p"),ut.innerHTML=Ce,Me=l(),ft=o("div"),c(S.$$.fragment),ue=l(),yt=o("p"),yt.innerHTML=We,fe=l(),$t=o("div"),c(q.$$.fragment),ye=l(),bt=o("div"),c(D.$$.fragment),$e=l(),wt=o("p"),wt.innerHTML=Ve,be=l(),Jt=o("div"),c(A.$$.fragment),we=l(),gt=o("div"),c(L.$$.fragment),Je=l(),Tt=o("p"),Tt.innerHTML=ze,ge=l(),Ut=o("p"),Ut.innerHTML=Fe,kt=l(),c(P.$$.fragment),Xt=l(),jt=o("p"),this.h()},l(e){const y=Le("svelte-u9bgzb",document.head);r=p(y,"META",{name:!0,content:!0}),y.forEach(d),b=n(e),i=p(e,"P",{}),J(i).forEach(d),w=n(e),m(v.$$.fragment,e),It=n(e),t=p(e,"DIV",{dir:!0});var s=J(t);m(k.$$.fragment,s),Ft=n(s),m(X.$$.fragment,s),Yt=n(s),K=p(s,"P",{"data-svelte-h":!0}),$(K)!=="svelte-9fbx2x"&&(K.innerHTML=Te),Ht=n(s),O=p(s,"P",{"data-svelte-h":!0}),$(O)!=="svelte-1gnud0z"&&(O.textContent=Ue),Qt=n(s),tt=p(s,"DIV",{dir:!0});var vt=J(tt);m(R.$$.fragment,vt),vt.forEach(d),Bt=n(s),m(C.$$.fragment,s),Et=n(s),et=p(s,"P",{"data-svelte-h":!0}),$(et)!=="svelte-q4trjb"&&(et.textContent=je),xt=n(s),m(W.$$.fragment,s),Nt=n(s),st=p(s,"P",{"data-svelte-h":!0}),$(st)!=="svelte-1inwf2v"&&(st.textContent=ve),St=n(s),m(V.$$.fragment,s),qt=n(s),at=p(s,"P",{"data-svelte-h":!0}),$(at)!=="svelte-1i6k96u"&&(at.innerHTML=_e),Dt=n(s),lt=p(s,"DIV",{dir:!0});var _t=J(lt);m(z.$$.fragment,_t),_t.forEach(d),At=n(s),nt=p(s,"P",{"data-svelte-h":!0}),$(nt)!=="svelte-1t0b47c"&&(nt.innerHTML=Ge),Lt=n(s),rt=p(s,"P",{"data-svelte-h":!0}),$(rt)!=="svelte-a1yn2b"&&(rt.innerHTML=Ze),Pt=n(s),m(_.$$.fragment,s),Kt=n(s),ot=p(s,"DIV",{dir:!0});var Gt=J(ot);m(F.$$.fragment,Gt),Gt.forEach(d),Ot=n(s),m(G.$$.fragment,s),te=n(s),m(Y.$$.fragment,s),ee=n(s),m(H.$$.fragment,s),se=n(s),pt=p(s,"P",{"data-svelte-h":!0}),$(pt)!=="svelte-eek8ah"&&(pt.innerHTML=Ie),ae=n(s),it=p(s,"P",{"data-svelte-h":!0}),$(it)!=="svelte-h788dm"&&(it.innerHTML=ke),le=n(s),dt=p(s,"DIV",{dir:!0});var Zt=J(dt);m(Q.$$.fragment,Zt),Zt.forEach(d),ne=n(s),m(Z.$$.fragment,s),re=n(s),ct=p(s,"P",{"data-svelte-h":!0}),$(ct)!=="svelte-1d2x5yy"&&(ct.textContent=Xe),oe=n(s),mt=p(s,"DIV",{dir:!0});var Ye=J(mt);m(B.$$.fragment,Ye),Ye.forEach(d),pe=n(s),ht=p(s,"P",{"data-svelte-h":!0}),$(ht)!=="svelte-1s49tat"&&(ht.textContent=Re),ie=n(s),Mt=p(s,"DIV",{dir:!0});var He=J(Mt);m(E.$$.fragment,He),He.forEach(d),de=n(s),m(I.$$.fragment,s),ce=n(s),m(x.$$.fragment,s),me=n(s),m(N.$$.fragment,s),he=n(s),ut=p(s,"P",{"data-svelte-h":!0}),$(ut)!=="svelte-7lwcl0"&&(ut.innerHTML=Ce),Me=n(s),ft=p(s,"DIV",{dir:!0});var Qe=J(ft);m(S.$$.fragment,Qe),Qe.forEach(d),ue=n(s),yt=p(s,"P",{"data-svelte-h":!0}),$(yt)!=="svelte-1qa78y3"&&(yt.innerHTML=We),fe=n(s),$t=p(s,"DIV",{dir:!0});var Be=J($t);m(q.$$.fragment,Be),Be.forEach(d),ye=n(s),bt=p(s,"DIV",{dir:!0});var Ee=J(bt);m(D.$$.fragment,Ee),Ee.forEach(d),$e=n(s),wt=p(s,"P",{"data-svelte-h":!0}),$(wt)!=="svelte-rxuoi2"&&(wt.innerHTML=Ve),be=n(s),Jt=p(s,"DIV",{dir:!0});var xe=J(Jt);m(A.$$.fragment,xe),xe.forEach(d),we=n(s),gt=p(s,"DIV",{dir:!0});var Ne=J(gt);m(L.$$.fragment,Ne),Ne.forEach(d),Je=n(s),Tt=p(s,"P",{"data-svelte-h":!0}),$(Tt)!=="svelte-6yk2fu"&&(Tt.innerHTML=ze),ge=n(s),Ut=p(s,"P",{"data-svelte-h":!0}),$(Ut)!=="svelte-ke9ryt"&&(Ut.innerHTML=Fe),s.forEach(d),kt=n(e),m(P.$$.fragment,e),Xt=n(e),jt=p(e,"P",{}),J(jt).forEach(d),this.h()},h(){g(r,"name","hf:doc:metadata"),g(r,"content",ns),g(tt,"dir","ltr"),g(lt,"dir","ltr"),g(ot,"dir","ltr"),g(dt,"dir","ltr"),g(mt,"dir","ltr"),g(Mt,"dir","ltr"),g(ft,"dir","ltr"),g($t,"dir","ltr"),g(bt,"dir","ltr"),g(Jt,"dir","ltr"),g(gt,"dir","ltr"),g(t,"dir","rtl")},m(e,y){a(document.head,r),T(e,b,y),T(e,i,y),T(e,w,y),h(v,e,y),T(e,It,y),T(e,t,y),h(k,t,null),a(t,Ft),h(X,t,null),a(t,Yt),a(t,K),a(t,Ht),a(t,O),a(t,Qt),a(t,tt),h(R,tt,null),a(t,Bt),h(C,t,null),a(t,Et),a(t,et),a(t,xt),h(W,t,null),a(t,Nt),a(t,st),a(t,St),h(V,t,null),a(t,qt),a(t,at),a(t,Dt),a(t,lt),h(z,lt,null),a(t,At),a(t,nt),a(t,Lt),a(t,rt),a(t,Pt),h(_,t,null),a(t,Kt),a(t,ot),h(F,ot,null),a(t,Ot),h(G,t,null),a(t,te),h(Y,t,null),a(t,ee),h(H,t,null),a(t,se),a(t,pt),a(t,ae),a(t,it),a(t,le),a(t,dt),h(Q,dt,null),a(t,ne),h(Z,t,null),a(t,re),a(t,ct),a(t,oe),a(t,mt),h(B,mt,null),a(t,pe),a(t,ht),a(t,ie),a(t,Mt),h(E,Mt,null),a(t,de),h(I,t,null),a(t,ce),h(x,t,null),a(t,me),h(N,t,null),a(t,he),a(t,ut),a(t,Me),a(t,ft),h(S,ft,null),a(t,ue),a(t,yt),a(t,fe),a(t,$t),h(q,$t,null),a(t,ye),a(t,bt),h(D,bt,null),a(t,$e),a(t,wt),a(t,be),a(t,Jt),h(A,Jt,null),a(t,we),a(t,gt),h(L,gt,null),a(t,Je),a(t,Tt),a(t,ge),a(t,Ut),T(e,kt,y),h(P,e,y),T(e,Xt,y),T(e,jt,y),Rt=!0},p(e,[y]){const s={};y&1&&(s.fw=e[0]),v.$set(s);const vt={};y&2&&(vt.$$scope={dirty:y,ctx:e}),_.$set(vt);const _t={};y&2&&(_t.$$scope={dirty:y,ctx:e}),G.$set(_t);const Gt={};y&2&&(Gt.$$scope={dirty:y,ctx:e}),Z.$set(Gt);const Zt={};y&2&&(Zt.$$scope={dirty:y,ctx:e}),I.$set(Zt)},i(e){Rt||(M(v.$$.fragment,e),M(k.$$.fragment,e),M(X.$$.fragment,e),M(R.$$.fragment,e),M(C.$$.fragment,e),M(W.$$.fragment,e),M(V.$$.fragment,e),M(z.$$.fragment,e),M(_.$$.fragment,e),M(F.$$.fragment,e),M(G.$$.fragment,e),M(Y.$$.fragment,e),M(H.$$.fragment,e),M(Q.$$.fragment,e),M(Z.$$.fragment,e),M(B.$$.fragment,e),M(E.$$.fragment,e),M(I.$$.fragment,e),M(x.$$.fragment,e),M(N.$$.fragment,e),M(S.$$.fragment,e),M(q.$$.fragment,e),M(D.$$.fragment,e),M(A.$$.fragment,e),M(L.$$.fragment,e),M(P.$$.fragment,e),Rt=!0)},o(e){u(v.$$.fragment,e),u(k.$$.fragment,e),u(X.$$.fragment,e),u(R.$$.fragment,e),u(C.$$.fragment,e),u(W.$$.fragment,e),u(V.$$.fragment,e),u(z.$$.fragment,e),u(_.$$.fragment,e),u(F.$$.fragment,e),u(G.$$.fragment,e),u(Y.$$.fragment,e),u(H.$$.fragment,e),u(Q.$$.fragment,e),u(Z.$$.fragment,e),u(B.$$.fragment,e),u(E.$$.fragment,e),u(I.$$.fragment,e),u(x.$$.fragment,e),u(N.$$.fragment,e),u(S.$$.fragment,e),u(q.$$.fragment,e),u(D.$$.fragment,e),u(A.$$.fragment,e),u(L.$$.fragment,e),u(P.$$.fragment,e),Rt=!1},d(e){e&&(d(b),d(i),d(w),d(It),d(t),d(kt),d(Xt),d(jt)),d(r),f(v,e),f(k),f(X),f(R),f(C),f(W),f(V),f(z),f(_),f(F),f(G),f(Y),f(H),f(Q),f(Z),f(B),f(E),f(I),f(x),f(N),f(S),f(q),f(D),f(A),f(L),f(P,e)}}}const ns='{"title":"کوک کردن مدل‌ها با استفاده از کِراس","local":"کوک-کردن-مدلها-با-استفاده-از-کراس","sections":[{"title":"تعلیم","local":"تعلیم","sections":[],"depth":3},{"title":"بهبود کارایی تعلیم","local":"بهبود-کارایی-تعلیم","sections":[],"depth":3},{"title":"پیش‌بینی‌های مدل","local":"پیشبینیهای-مدل","sections":[],"depth":3}],"depth":1}';function rs(U,r,b){let i="pt";return qe(()=>{const w=new URLSearchParams(window.location.search);b(0,i=w.get("fw")||"pt")}),[i]}class fs extends De{constructor(r){super(),Ae(this,r,rs,ls,Se,{})}}export{fs as component};

Xet Storage Details

Size:
34.3 kB
·
Xet hash:
8f16af88cbe5d4d33f80714779ecdc8234fc1a5ffb9565a0804ac958b2b57260

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.