import{s as jl,o as Cl}from"../chunks/scheduler.39a43cde.js";import{S as Zl,i as Bl,g as d,s as i,r as g,m as Ul,A as Wl,h as f,f as _,c,j,u as M,n as El,x as b,k as C,y as a,a as T,v as $,t as p,b as _e,d as u,w as y,p as he}from"../chunks/index.23ec2204.js";import{Y as vl}from"../chunks/Youtube.70c27fbc.js";import{C as J}from"../chunks/CodeBlock.bc48cdff.js";import{C as Jl}from"../chunks/CourseFloatingBanner.c5f43a8d.js";import{F as Il}from"../chunks/FrameworkSwitchCourse.9ca78d26.js";import{H as Pe}from"../chunks/Heading.c42e7061.js";function xl(m){let t,n;return t=new Jl({props:{chapter:2,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/fa/chapter2/section3_tf.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/fa/chapter2/section3_tf.ipynb"}]}}),{c(){g(t.$$.fragment)},l(e){M(t.$$.fragment,e)},m(e,o){$(t,e,o),n=!0},i(e){n||(u(t.$$.fragment,e),n=!0)},o(e){p(t.$$.fragment,e),n=!1},d(e){y(t,e)}}}function Vl(m){let t,n;return t=new Jl({props:{chapter:2,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/fa/chapter2/section3_pt.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/fa/chapter2/section3_pt.ipynb"}]}}),{c(){g(t.$$.fragment)},l(e){M(t.$$.fragment,e)},m(e,o){$(t,e,o),n=!0},i(e){n||(u(t.$$.fragment,e),n=!0)},o(e){p(t.$$.fragment,e),n=!1},d(e){y(t,e)}}}function Rl(m){let t,n;return t=new vl({props:{id:"d3JVgghSOew"}}),{c(){g(t.$$.fragment)},l(e){M(t.$$.fragment,e)},m(e,o){$(t,e,o),n=!0},i(e){n||(u(t.$$.fragment,e),n=!0)},o(e){p(t.$$.fragment,e),n=!1},d(e){y(t,e)}}}function Hl(m){let t,n;return t=new vl({props:{id:"AhChOFRegn4"}}),{c(){g(t.$$.fragment)},l(e){M(t.$$.fragment,e)},m(e,o){$(t,e,o),n=!0},i(e){n||(u(t.$$.fragment,e),n=!0)},o(e){p(t.$$.fragment,e),n=!1},d(e){y(t,e)}}}function Gl(m){let t,n="در این بخش نگاهی نزدیک‌تر به ساخت و استفاده از مدل‌ها می‌اندازیم. کلاس <code>TFAutoModel</code> را به کار خواهیم گرفت که برای ساختن مدل‌ها از نقطه‌های تعلیم مشخص، بسیار پرکاربرد است.",e,o,w="کلاس <code>TFAutoModel</code> و تمامی کلاس‌های شبیه آن، در واقع پوسته‌ای ساده روی انواع مختلف مدل‌های موجود در کتابخانه هستند. پوسته‌ای هوشمند که می‌تواند به صورت خودکار معماری مدل استفاده شده در نقطه‌های تعلیم را تشخیص دهد و سپس مدلی با آن معماری بسازد.";return{c(){t=d("p"),t.innerHTML=n,e=i(),o=d("p"),o.innerHTML=w},l(h){t=f(h,"P",{"data-svelte-h":!0}),b(t)!=="svelte-1h51mje"&&(t.innerHTML=n),e=c(h),o=f(h,"P",{"data-svelte-h":!0}),b(o)!=="svelte-1qgxt6n"&&(o.innerHTML=w)},m(h,l){T(h,t,l),T(h,e,l),T(h,o,l)},d(h){h&&(_(t),_(e),_(o))}}}function Ql(m){let t,n="در این بخش نگاهی نزدیک‌تر به ساخت و استفاده از مدل‌ها می‌اندازیم. کلاس <code>AutoModel</code> را به کار خواهیم گرفت که برای ساختن مدل‌ها از نقطه‌های تعلیم مشخص، بسیار پرکاربرد است.",e,o,w="کلاس <code>AutoModel</code> و تمامی کلاس‌های شبیه آن، در واقع پوسته‌ای ساده روی انواع مختلف مدل‌های موجود در کتابخانه هستند. پوسته‌ای هوشمند که می‌تواند به صورت خودکار معماری مدل استفاده شده در نقطه‌های تعلیم را تشخیص دهد و سپس مدلی با آن معماری بسازد.";return{c(){t=d("p"),t.innerHTML=n,e=i(),o=d("p"),o.innerHTML=w},l(h){t=f(h,"P",{"data-svelte-h":!0}),b(t)!=="svelte-clze4c"&&(t.innerHTML=n),e=c(h),o=f(h,"P",{"data-svelte-h":!0}),b(o)!=="svelte-1p9l9ch"&&(o.innerHTML=w)},m(h,l){T(h,t,l),T(h,e,l),T(h,o,l)},d(h){h&&(_(t),_(e),_(o))}}}function Ll(m){let t,n;return t=new J({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEJlcnRDb25maWclMkMlMjBURkJlcnRNb2RlbCUwQSUwQSUyMyUyMEJ1aWxkaW5nJTIwdGhlJTIwY29uZmlnJTBBY29uZmlnJTIwJTNEJTIwQmVydENvbmZpZygpJTBBJTBBJTIzJTIwQnVpbGRpbmclMjB0aGUlMjBtb2RlbCUyMGZyb20lMjB0aGUlMjBjb25maWclMEFtb2RlbCUyMCUzRCUyMFRGQmVydE1vZGVsKGNvbmZpZyk=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BertConfig, TFBertModel

<span class="hljs-comment"># Building the config</span>
config = BertConfig()

<span class="hljs-comment"># Building the model from the config</span>
model = TFBertModel(config)`,wrap:!1}}),{c(){g(t.$$.fragment)},l(e){M(t.$$.fragment,e)},m(e,o){$(t,e,o),n=!0},i(e){n||(u(t.$$.fragment,e),n=!0)},o(e){p(t.$$.fragment,e),n=!1},d(e){y(t,e)}}}function Al(m){let t,n;return t=new J({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEJlcnRDb25maWclMkMlMjBCZXJ0TW9kZWwlMEElMEElMjMlMjBCdWlsZGluZyUyMHRoZSUyMGNvbmZpZyUwQWNvbmZpZyUyMCUzRCUyMEJlcnRDb25maWcoKSUwQSUwQSUyMyUyMEJ1aWxkaW5nJTIwdGhlJTIwbW9kZWwlMjBmcm9tJTIwdGhlJTIwY29uZmlnJTBBbW9kZWwlMjAlM0QlMjBCZXJ0TW9kZWwoY29uZmlnKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BertConfig, BertModel

<span class="hljs-comment"># Building the config</span>
config = BertConfig()

<span class="hljs-comment"># Building the model from the config</span>
model = BertModel(config)`,wrap:!1}}),{c(){g(t.$$.fragment)},l(e){M(t.$$.fragment,e)},m(e,o){$(t,e,o),n=!0},i(e){n||(u(t.$$.fragment,e),n=!0)},o(e){p(t.$$.fragment,e),n=!1},d(e){y(t,e)}}}function zl(m){let t,n;return t=new J({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEJlcnRDb25maWclMkMlMjBURkJlcnRNb2RlbCUwQSUwQWNvbmZpZyUyMCUzRCUyMEJlcnRDb25maWcoKSUwQW1vZGVsJTIwJTNEJTIwVEZCZXJ0TW9kZWwoY29uZmlnKSUwQSUwQSUyMyUyME1vZGVsJTIwaXMlMjByYW5kb21seSUyMGluaXRpYWxpemVkIQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BertConfig, TFBertModel

config = BertConfig()
model = TFBertModel(config)

<span class="hljs-comment"># Model is randomly initialized!</span>`,wrap:!1}}),{c(){g(t.$$.fragment)},l(e){M(t.$$.fragment,e)},m(e,o){$(t,e,o),n=!0},i(e){n||(u(t.$$.fragment,e),n=!0)},o(e){p(t.$$.fragment,e),n=!1},d(e){y(t,e)}}}function Dl(m){let t,n;return t=new J({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEJlcnRDb25maWclMkMlMjBCZXJ0TW9kZWwlMEElMEFjb25maWclMjAlM0QlMjBCZXJ0Q29uZmlnKCklMEFtb2RlbCUyMCUzRCUyMEJlcnRNb2RlbChjb25maWcpJTBBJTBBJTIzJTIwTW9kZWwlMjBpcyUyMHJhbmRvbWx5JTIwaW5pdGlhbGl6ZWQh",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BertConfig, BertModel

config = BertConfig()
model = BertModel(config)

<span class="hljs-comment"># Model is randomly initialized!</span>`,wrap:!1}}),{c(){g(t.$$.fragment)},l(e){M(t.$$.fragment,e)},m(e,o){$(t,e,o),n=!0},i(e){n||(u(t.$$.fragment,e),n=!0)},o(e){p(t.$$.fragment,e),n=!1},d(e){y(t,e)}}}function Nl(m){let t,n,e,o,w="همان طور که قبلا دیدید، می‌توانیم کلاس <code>TFBertModel</code> را با کلاس معادل <code>TFAutoModel</code> جایگزین کنیم. از این پس همین کار را خواهیم کرد چون به این صورت کد وابسته به نقطه تعلیم خاصی نخواهد بود. اگر کد شما با یک نقطه تعلیم اجرا می‌شود، بدون تغییر با نقاط تعلیم دیگر هم اجرا خواهد شد. این حتی در مورد معماری‌های متفاوت هم صدق می‌کند، البته در صورتی که نقطه تعلیم متعلق به مسئله مشابهی(برای مثال تحلیل احساسات) باشد.",h;return n=new J({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRGQmVydE1vZGVsJTBBJTBBbW9kZWwlMjAlM0QlMjBURkJlcnRNb2RlbC5mcm9tX3ByZXRyYWluZWQoJTIyYmVydC1iYXNlLWNhc2VkJTIyKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TFBertModel

model = TFBertModel.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>)`,wrap:!1}}),{c(){t=d("div"),g(n.$$.fragment),e=i(),o=d("p"),o.innerHTML=w,this.h()},l(l){t=f(l,"DIV",{dir:!0});var v=j(t);M(n.$$.fragment,v),v.forEach(_),e=c(l),o=f(l,"P",{"data-svelte-h":!0}),b(o)!=="svelte-1nx32l8"&&(o.innerHTML=w),this.h()},h(){C(t,"dir","ltr")},m(l,v){T(l,t,v),$(n,t,null),T(l,e,v),T(l,o,v),h=!0},i(l){h||(u(n.$$.fragment,l),h=!0)},o(l){p(n.$$.fragment,l),h=!1},d(l){l&&(_(t),_(e),_(o)),y(n)}}}function Fl(m){let t,n,e,o,w="همان طور که قبلا دیدید، می‌توانیم کلاس <code>BertModel</code> را با کلاس معادل <code>AutoModel</code> جایگزین کنیم. از این پس همین کار را خواهیم کرد چون به این صورت کد وابسته به نقطه تعلیم خاصی نخواهد بود. اگر کد شما با یک نقطه تعلیم اجرا می‌شود، بدون تغییر با نقاط تعلیم دیگر هم اجرا خواهد شد. این حتی در مورد معماری‌های متفاوت هم صدق می‌کند، البته در صورتی که نقطه تعلیم متعلق به مسئله مشابهی(برای مثال تحلیل احساسات) باشد.",h;return n=new J({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEJlcnRNb2RlbCUwQSUwQW1vZGVsJTIwJTNEJTIwQmVydE1vZGVsLmZyb21fcHJldHJhaW5lZCglMjJiZXJ0LWJhc2UtY2FzZWQlMjIp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> BertModel

model = BertModel.from_pretrained(<span class="hljs-string">&quot;bert-base-cased&quot;</span>)`,wrap:!1}}),{c(){t=d("div"),g(n.$$.fragment),e=i(),o=d("p"),o.innerHTML=w,this.h()},l(l){t=f(l,"DIV",{dir:!0});var v=j(t);M(n.$$.fragment,v),v.forEach(_),e=c(l),o=f(l,"P",{"data-svelte-h":!0}),b(o)!=="svelte-ngbvs0"&&(o.innerHTML=w),this.h()},h(){C(t,"dir","ltr")},m(l,v){T(l,t,v),$(n,t,null),T(l,e,v),T(l,o,v),h=!0},i(l){h||(u(n.$$.fragment,l),h=!0)},o(l){p(n.$$.fragment,l),h=!1},d(l){l&&(_(t),_(e),_(o)),y(n)}}}function Xl(m){let t,n;return t=new J({props:{code:"bHMlMjBkaXJlY3Rvcnlfb25fbXlfY29tcHV0ZXIlMEElMEFjb25maWcuanNvbiUyMHRmX21vZGVsLmg1",highlighted:`ls <span class="hljs-keyword">directory_on_my_computer
</span>
<span class="hljs-built_in">config</span>.<span class="hljs-keyword">json </span>tf_model.h5`,wrap:!1}}),{c(){g(t.$$.fragment)},l(e){M(t.$$.fragment,e)},m(e,o){$(t,e,o),n=!0},i(e){n||(u(t.$$.fragment,e),n=!0)},o(e){p(t.$$.fragment,e),n=!1},d(e){y(t,e)}}}function Yl(m){let t,n;return t=new J({props:{code:"bHMlMjBkaXJlY3Rvcnlfb25fbXlfY29tcHV0ZXIlMEElMEFjb25maWcuanNvbiUyMHB5dG9yY2hfbW9kZWwuYmlu",highlighted:`ls <span class="hljs-keyword">directory_on_my_computer
</span>
<span class="hljs-built_in">config</span>.<span class="hljs-keyword">json </span>pytorch_model.<span class="hljs-keyword">bin</span>`,wrap:!1}}),{c(){g(t.$$.fragment)},l(e){M(t.$$.fragment,e)},m(e,o){$(t,e,o),n=!0},i(e){n||(u(t.$$.fragment,e),n=!0)},o(e){p(t.$$.fragment,e),n=!1},d(e){y(t,e)}}}function Pl(m){let t,n="فایل <em>tf_model.h5</em> در واقع <em>دیکشنری وضعیت‌ها</em> است و حاوی تمام وزن‌های مدل شماست. این دو فایل به همراه هم کاربرد دارند؛ فایل تنظیمات برای دانستن معماری به کار رفته در مدل ضروری است و پارامترهای مدل هم که همان وزن‌های داخل فایل دوم هستند.";return{c(){t=d("p"),t.innerHTML=n},l(e){t=f(e,"P",{"data-svelte-h":!0}),b(t)!=="svelte-g01lm5"&&(t.innerHTML=n)},m(e,o){T(e,t,o)},d(e){e&&_(t)}}}function ql(m){let t,n="فایل <em>pytorch_model.bin</em> در واقع <em>دیکشنری وضعیت‌ها</em> است و حاوی تمام وزن‌های مدل شماست. این دو فایل به همراه هم کاربرد دارند؛ فایل تنظیمات برای دانستن معماری به کار رفته در مدل ضروری است و پارامترهای مدل هم که همان وزن‌های داخل فایل دوم هستند.";return{c(){t=d("p"),t.innerHTML=n},l(e){t=f(e,"P",{"data-svelte-h":!0}),b(t)!=="svelte-phfuac"&&(t.innerHTML=n)},m(e,o){T(e,t,o)},d(e){e&&_(t)}}}function Sl(m){let t,n;return t=new J({props:{code:"aW1wb3J0JTIwdGVuc29yZmxvdyUyMGFzJTIwdGYlMEElMEFtb2RlbF9pbnB1dHMlMjAlM0QlMjB0Zi5jb25zdGFudChlbmNvZGVkX3NlcXVlbmNlcyk=",highlighted:`<span class="hljs-keyword">import</span> tensorflow <span class="hljs-keyword">as</span> tf

model_inputs = tf.constant(encoded_sequences)`,wrap:!1}}),{c(){g(t.$$.fragment)},l(e){M(t.$$.fragment,e)},m(e,o){$(t,e,o),n=!0},i(e){n||(u(t.$$.fragment,e),n=!0)},o(e){p(t.$$.fragment,e),n=!1},d(e){y(t,e)}}}function Kl(m){let t,n;return t=new J({props:{code:"aW1wb3J0JTIwdG9yY2glMEElMEFtb2RlbF9pbnB1dHMlMjAlM0QlMjB0b3JjaC50ZW5zb3IoZW5jb2RlZF9zZXF1ZW5jZXMp",highlighted:`<span class="hljs-keyword">import</span> torch

model_inputs = torch.tensor(encoded_sequences)`,wrap:!1}}),{c(){g(t.$$.fragment)},l(e){M(t.$$.fragment,e)},m(e,o){$(t,e,o),n=!0},i(e){n||(u(t.$$.fragment,e),n=!0)},o(e){p(t.$$.fragment,e),n=!1},d(e){y(t,e)}}}function Ol(m){let t,n,e,o,w,h,l,v,Z,B,qe,U,W,Se,Ke,be,Qt="با این وجود، اگر نوع مدلی که می‌خواهید استفاده کنید را می‌دانید، می‌توانید مستقیماً کلاسی که معماری خاص آن مدل را تعریف می‌کند به کار ببرید. نگاهی به چگونگی انجام این عملیات با مدل BERT می‌اندازیم.",st,X,at,ge,Lt="اولین کار برای ساخت نمونه‌ای از مدل BERT، بارگذاری شیء تنظیمات است:",ot,Y,E,I,it,Me,At="شیء تنظیمات ویژگی‌های بسیاری دارد که برای ساختن مدل به کار می‌روند.",ct,N,P,dt,q,ft,$e,zt="با وجود اینکه هنوز ندیده‌اید تک تک این ویژگی‌ها چه تاثیری دارند، بعضی از آنها برای شما آشنا هستند: ویژگی <code>hidden_size</code> اندازه بردار <code>hidden_states</code> را مشخص می‌کند و ویژگی <code>num_hidden_layers</code> مشخص کننده تعداد لایه‌های مدل ترنسفورمر است.",pt,S,ut,ye,Dt="ساختن مدل با تنظیمات پیش‌فرض، باعث مقداردهی اولیه وزن‌های آن با اعداد تصادفی می‌شود.",mt,K,x,V,_t,ke,Nt='می‌توان از مدل در این وضعیت استفاده کرد ولی خروجی آن بی‌معنی خواهد بود؛ ابتدا باید مدل را تعلیم دهیم. می‌توانیم مدل را از صفر برای مسئله مورد نظرمان تعلیم دهیم ولی همان گونه که در <a href="/course/chapter1">فصل اول</a> دیدیم، برای این کار نیاز به زمان طولانی و داده بسیار داریم. این عملیات تاثیرات منفی غیر قابل چشم‌پوشی‌‌ای بر محیط‌زیست دارد. برای جلوگیری از دوباره‌کاری باید بتوانیم مدل‌های از پیش تعلیم دیده را به اشتراک گذاشته و به کار ببریم.',ht,Te,Ft="بارگذاری مدل از پیش تعلیم دیده ترنسفورمر، ساده است. برای این کار از تابع <code>from_pretrained()</code> استفاده‌‌ می‌کنیم.",bt,R,H,Oe,we,Xt='در کد نمونه بالا، کلاس <code>BertConfig</code> را به کار نبرده و در عوض از مدلی از پیش تعلیم دیده با شناسه <code>bert-base-cased</code> استفاده کردیم؛ نقطه تعلیم مدلی که توسط خود مؤلفان مدل BERT تعلیم دیده است. اطلاعات بیشتر در مورد این نقطه تعلیم را می‌توانید در <a href="https://huggingface.co/bert-base-cased" rel="nofollow">صفحه توضیحات</a> آن ببینید.',gt,ve,Yt="این مدل اکنون با وزن‌های نقطه تعلیم پر شده است و می‌توان آن را مستقیماً برای مسائلی که برای آن تعلیم دیده به کار برد یا برای مسئله جدیدی کوک کرد. با تعلیم روی وزن‌های از پیش تعلیم دیده، به جای تعلیم از صفر، می‌توانیم به سرعت به نتایج خوبی دست پیدا کنیم.",Mt,Je,Pt="این وزن‌ها دانلود و در پوشه‌ای مخصوص انبار شده‌اند، تا اجرای تابع <code>from_pretrained()</code> در آینده مسبب دانلود دوباره‌اشان نباشد. این پوشه به صورت پیش‌فرض در آدرس <em>~/.cache/huggingface/transformers</em> قرار دارد. شما می‌توانید با تخصیص مقدار به متغیر محیطی <code>HF_HOME</code> مکان این پوشه را تغییر دهید.",$t,je,qt='شناسه هر مدلی در هاب مدل‌ها را می‌توانید برای بارگذاری استفاده کنید. البته در صورتی که آن مدل با معماری BERT سازگاری داشته باشد. فهرست کامل تمام نقاط تعلیم سازگار با BERT را <a href="https://huggingface.co/models?filter=bert" rel="nofollow">اینجا مشاهده کنید</a>.',yt,O,kt,Ce,St="ذخیره‌سازی مدل به سادگی بارگذاری آن است. از تابع <code>save_pretrained()</code> استفاده می‌کنیم که متناظر با تابع <code>from_pretrained()</code> است:",Tt,Ze,ee,wt,Be,Kt="اجرای این تابع باعث ذخیره شدن دو فایل در سیستم شما می‌شود:",vt,te,G,Q,Jt,Ue,Ot="اگر نگاهی به فایل <em>config.json</em> بیاندازید، با ویژگی‌های آشنای مورد نیاز برای ساختن معماری مدل روبرو خواهید شد. این فایل حاوی مقادیری متادیتا، مانند نقطه مادر این نقطه تعلیم و نسخه‌‌ کتابخانه ترنسفورمرهای هاگینگ‌فِیس که آخرین بار برای ذخیره‌سازی این نقطه به کار رفته است، می‌باشد.",jt,et,le,Ct,We,el="حالا که می‌دانید چگونه مدل‌ها را ذخیره‌سازی و بارگذاری کنید، می‌توانیم آنها را برای پیش‌بینی به کار بگیریم. مدل‌های ترنسفورمر فقط می‌توانند اعداد را پردازش کنند؛ اعدادی که توکِنایزر تولید نموده است. ولی پیش از آن که سراغ بحث توکِنایزرها برویم، ورودی‌های قابل قبول برای مدل‌ها را بررسی می‌کنیم.",Zt,Ee,tl="توکِنایزرها می‌توانند ورودی‌ها را به تِنسورهای مخصوص هر فریمورک تبدیل کنند ولی برای آنکه درست متوجه آنچه اتفاق می‌افتد شویم، نگاهی کوتاه به کارهایی که باید قبل از فرستادن ورودی‌ها به مدل انجام شود می‌اندازیم.",Bt,Ie,ll="تصور کنید چند جمله به این صورت داریم:",Ut,xe,ne,Wt,Ve,nl="توکِنایزر این جملات را به اندیس‌های مخصوص کلمات که معمولا به آنها <em>شناسه‌های ورودی</em> می‌گوییم، تبدیل می‌کند. هر رشته اکنون لیستی از اعداد است! نتیجه خروجی از این قرار است:",Et,Re,re,It,He,rl="این خروجی لیستی از رشته‌های کد شده شده است: لیستی از لیست‌ها. تِنسورها تنها مقادیر به شکل مستطیل(همان ماتریس) را می‌پذیرند. این «آرایه» خود شکل مستطیلی دارد پس تبدیل آن به تِنسور ساده است:",xt,se,L,A,Vt,ae,Rt,Ge,sl="به کار بردن تِنسورها به عنوان ورودی مدل بسیار ساده است؛ تنها آرگومان تِنسور ورودی را به صورت زیر به مدل پاس می‌دهیم:",Ht,Qe,oe,Gt,Le,al="این تابع آرگومان‌های بسیاری را می‌پذیرد ولی تنها شناسه‌های ورودی ضروری هستند. کاربرد آرگومان‌های دیگر و شرایط ضرورت آنها را بعد توضیح خواهیم داد. ولی ابتدا باید نگاهی نزدیک‌تر به توکِنایزرهایی که ورودی‌های قابل فهم مدل‌های ترنسفورمر را می‌سازند، بیاندازیم.",tt,Ye,lt;w=new Il({props:{fw:m[0]}});const ol=[Vl,xl],ie=[];function il(r,k){return r[0]==="pt"?0:1}Z=il(m),B=ie[Z]=ol[Z](m);const cl=[Hl,Rl],ce=[];function dl(r,k){return r[0]==="pt"?0:1}U=dl(m),W=ce[U]=cl[U](m);function fl(r,k){return r[0]==="pt"?Ql:Gl}let nt=fl(m),z=nt(m);X=new Pe({props:{title:"ساخت ترنسفورمر",local:"ساخت-ترنسفورمر",headingTag:"h2"}});const pl=[Al,Ll],de=[];function ul(r,k){return r[0]==="pt"?0:1}E=ul(m),I=de[E]=pl[E](m),P=new J({props:{code:"cHJpbnQoY29uZmlnKQ==",highlighted:'<span class="hljs-built_in">print</span>(config)',wrap:!1}}),q=new J({props:{code:"QmVydENvbmZpZyUyMCU3QiUwQSUyMCUyMCU1Qi4uLiU1RCUwQSUyMCUyMCUyMmhpZGRlbl9zaXplJTIyJTNBJTIwNzY4JTJDJTBBJTIwJTIwJTIyaW50ZXJtZWRpYXRlX3NpemUlMjIlM0ElMjAzMDcyJTJDJTBBJTIwJTIwJTIybWF4X3Bvc2l0aW9uX2VtYmVkZGluZ3MlMjIlM0ElMjA1MTIlMkMlMEElMjAlMjAlMjJudW1fYXR0ZW50aW9uX2hlYWRzJTIyJTNBJTIwMTIlMkMlMEElMjAlMjAlMjJudW1faGlkZGVuX2xheWVycyUyMiUzQSUyMDEyJTJDJTBBJTIwJTIwJTVCLi4uJTVEJTBBJTdE",highlighted:`BertConfig {
  [...]
  <span class="hljs-string">&quot;hidden_size&quot;</span>: <span class="hljs-number">768</span>,
  <span class="hljs-string">&quot;intermediate_size&quot;</span>: <span class="hljs-number">3072</span>,
  <span class="hljs-string">&quot;max_position_embeddings&quot;</span>: <span class="hljs-number">512</span>,
  <span class="hljs-string">&quot;num_attention_heads&quot;</span>: <span class="hljs-number">12</span>,
  <span class="hljs-string">&quot;num_hidden_layers&quot;</span>: <span class="hljs-number">12</span>,
  [...]
}`,wrap:!1}}),S=new Pe({props:{title:"روش‌های مختلف بارگذاری",local:"روشهای-مختلف-بارگذاری",headingTag:"h3"}});const ml=[Dl,zl],fe=[];function _l(r,k){return r[0]==="pt"?0:1}x=_l(m),V=fe[x]=ml[x](m);const hl=[Fl,Nl],pe=[];function bl(r,k){return r[0]==="pt"?0:1}R=bl(m),H=pe[R]=hl[R](m),O=new Pe({props:{title:"روش‌های ذخیره‌سازی",local:"روشهای-ذخیرهسازی",headingTag:"h3"}}),ee=new J({props:{code:"bW9kZWwuc2F2ZV9wcmV0cmFpbmVkKCUyMmRpcmVjdG9yeV9vbl9teV9jb21wdXRlciUyMik=",highlighted:'model.save_pretrained(<span class="hljs-string">&quot;directory_on_my_computer&quot;</span>)',wrap:!1}});const gl=[Yl,Xl],ue=[];function Ml(r,k){return r[0]==="pt"?0:1}G=Ml(m),Q=ue[G]=gl[G](m);function $l(r,k){return r[0]==="pt"?ql:Pl}let rt=$l(m),D=rt(m);le=new Pe({props:{title:"اجرای یک مدل ترنسفورمر",local:"اجرای-یک-مدل-ترنسفورمر",headingTag:"h2"}}),ne=new J({props:{code:"c2VxdWVuY2VzJTIwJTNEJTIwJTVCJTIySGVsbG8hJTIyJTJDJTIwJTIyQ29vbC4lMjIlMkMlMjAlMjJOaWNlISUyMiU1RA==",highlighted:'sequences = [<span class="hljs-string">&quot;Hello!&quot;</span>, <span class="hljs-string">&quot;Cool.&quot;</span>, <span class="hljs-string">&quot;Nice!&quot;</span>]',wrap:!1}}),re=new J({props:{code:"ZW5jb2RlZF9zZXF1ZW5jZXMlMjAlM0QlMjAlNUIlMEElMjAlMjAlMjAlMjAlNUIxMDElMkMlMjA3NTkyJTJDJTIwOTk5JTJDJTIwMTAyJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTVCMTAxJTJDJTIwNDY1OCUyQyUyMDEwMTIlMkMlMjAxMDIlNUQlMkMlMEElMjAlMjAlMjAlMjAlNUIxMDElMkMlMjAzODM1JTJDJTIwOTk5JTJDJTIwMTAyJTVEJTJDJTBBJTVE",highlighted:`encoded_sequences = [
    [<span class="hljs-number">101</span>, <span class="hljs-number">7592</span>, <span class="hljs-number">999</span>, <span class="hljs-number">102</span>],
    [<span class="hljs-number">101</span>, <span class="hljs-number">4658</span>, <span class="hljs-number">1012</span>, <span class="hljs-number">102</span>],
    [<span class="hljs-number">101</span>, <span class="hljs-number">3835</span>, <span class="hljs-number">999</span>, <span class="hljs-number">102</span>],
]`,wrap:!1}});const yl=[Kl,Sl],me=[];function kl(r,k){return r[0]==="pt"?0:1}return L=kl(m),A=me[L]=yl[L](m),ae=new Pe({props:{title:"استفاده از تِنسور‌ها به عنوان ورودی مدل",local:"استفاده-از-تنسورها-به-عنوان-ورودی-مدل",headingTag:"h3"}}),oe=new J({props:{code:"b3V0cHV0JTIwJTNEJTIwbW9kZWwobW9kZWxfaW5wdXRzKQ==",highlighted:"output = model(model_inputs)",wrap:!1}}),{c(){t=d("meta"),n=i(),e=d("p"),o=i(),g(w.$$.fragment),h=i(),l=d("div"),v=Ul(`# مدل‌ها
`),B.c(),qe=i(),W.c(),Se=i(),z.c(),Ke=i(),be=d("p"),be.textContent=Qt,st=i(),g(X.$$.fragment),at=i(),ge=d("p"),ge.textContent=Lt,ot=i(),Y=d("div"),I.c(),it=i(),Me=d("p"),Me.textContent=At,ct=i(),N=d("div"),g(P.$$.fragment),dt=i(),g(q.$$.fragment),ft=i(),$e=d("p"),$e.innerHTML=zt,pt=i(),g(S.$$.fragment),ut=i(),ye=d("p"),ye.textContent=Dt,mt=i(),K=d("div"),V.c(),_t=i(),ke=d("p"),ke.innerHTML=Nt,ht=i(),Te=d("p"),Te.innerHTML=Ft,bt=i(),H.c(),Oe=i(),we=d("p"),we.innerHTML=Xt,gt=i(),ve=d("p"),ve.textContent=Yt,Mt=i(),Je=d("p"),Je.innerHTML=Pt,$t=i(),je=d("p"),je.innerHTML=qt,yt=i(),g(O.$$.fragment),kt=i(),Ce=d("p"),Ce.innerHTML=St,Tt=i(),Ze=d("div"),g(ee.$$.fragment),wt=i(),Be=d("p"),Be.textContent=Kt,vt=i(),te=d("div"),Q.c(),Jt=i(),Ue=d("p"),Ue.innerHTML=Ot,jt=i(),D.c(),et=i(),g(le.$$.fragment),Ct=i(),We=d("p"),We.textContent=el,Zt=i(),Ee=d("p"),Ee.textContent=tl,Bt=i(),Ie=d("p"),Ie.textContent=ll,Ut=i(),xe=d("div"),g(ne.$$.fragment),Wt=i(),Ve=d("p"),Ve.innerHTML=nl,Et=i(),Re=d("div"),g(re.$$.fragment),It=i(),He=d("p"),He.textContent=rl,xt=i(),se=d("div"),A.c(),Vt=i(),g(ae.$$.fragment),Rt=i(),Ge=d("p"),Ge.textContent=sl,Ht=i(),Qe=d("div"),g(oe.$$.fragment),Gt=i(),Le=d("p"),Le.textContent=al,tt=i(),Ye=d("p"),this.h()},l(r){const k=Wl("svelte-u9bgzb",document.head);t=f(k,"META",{name:!0,content:!0}),k.forEach(_),n=c(r),e=f(r,"P",{}),j(e).forEach(_),o=c(r),M(w.$$.fragment,r),h=c(r),l=f(r,"DIV",{dir:!0});var s=j(l);v=El(s,`# مدل‌ها
`),B.l(s),qe=c(s),W.l(s),Se=c(s),z.l(s),Ke=c(s),be=f(s,"P",{"data-svelte-h":!0}),b(be)!=="svelte-czne41"&&(be.textContent=Qt),st=c(s),M(X.$$.fragment,s),at=c(s),ge=f(s,"P",{"data-svelte-h":!0}),b(ge)!=="svelte-1eesr91"&&(ge.textContent=Lt),ot=c(s),Y=f(s,"DIV",{dir:!0});var Ae=j(Y);I.l(Ae),Ae.forEach(_),it=c(s),Me=f(s,"P",{"data-svelte-h":!0}),b(Me)!=="svelte-1xdutk6"&&(Me.textContent=At),ct=c(s),N=f(s,"DIV",{dir:!0});var F=j(N);M(P.$$.fragment,F),dt=c(F),M(q.$$.fragment,F),F.forEach(_),ft=c(s),$e=f(s,"P",{"data-svelte-h":!0}),b($e)!=="svelte-24frjt"&&($e.innerHTML=zt),pt=c(s),M(S.$$.fragment,s),ut=c(s),ye=f(s,"P",{"data-svelte-h":!0}),b(ye)!=="svelte-e5uwia"&&(ye.textContent=Dt),mt=c(s),K=f(s,"DIV",{dir:!0});var ze=j(K);V.l(ze),ze.forEach(_),_t=c(s),ke=f(s,"P",{"data-svelte-h":!0}),b(ke)!=="svelte-pdt5zy"&&(ke.innerHTML=Nt),ht=c(s),Te=f(s,"P",{"data-svelte-h":!0}),b(Te)!=="svelte-t9ah4a"&&(Te.innerHTML=Ft),bt=c(s),H.l(s),Oe=c(s),we=f(s,"P",{"data-svelte-h":!0}),b(we)!=="svelte-hhpyg1"&&(we.innerHTML=Xt),gt=c(s),ve=f(s,"P",{"data-svelte-h":!0}),b(ve)!=="svelte-xw3fue"&&(ve.textContent=Yt),Mt=c(s),Je=f(s,"P",{"data-svelte-h":!0}),b(Je)!=="svelte-165qbd1"&&(Je.innerHTML=Pt),$t=c(s),je=f(s,"P",{"data-svelte-h":!0}),b(je)!=="svelte-xex0hu"&&(je.innerHTML=qt),yt=c(s),M(O.$$.fragment,s),kt=c(s),Ce=f(s,"P",{"data-svelte-h":!0}),b(Ce)!=="svelte-dv8x2b"&&(Ce.innerHTML=St),Tt=c(s),Ze=f(s,"DIV",{dir:!0});var De=j(Ze);M(ee.$$.fragment,De),De.forEach(_),wt=c(s),Be=f(s,"P",{"data-svelte-h":!0}),b(Be)!=="svelte-ml3g3g"&&(Be.textContent=Kt),vt=c(s),te=f(s,"DIV",{dir:!0});var Ne=j(te);Q.l(Ne),Ne.forEach(_),Jt=c(s),Ue=f(s,"P",{"data-svelte-h":!0}),b(Ue)!=="svelte-33js67"&&(Ue.innerHTML=Ot),jt=c(s),D.l(s),et=c(s),M(le.$$.fragment,s),Ct=c(s),We=f(s,"P",{"data-svelte-h":!0}),b(We)!=="svelte-1lsbq5y"&&(We.textContent=el),Zt=c(s),Ee=f(s,"P",{"data-svelte-h":!0}),b(Ee)!=="svelte-1m92ogi"&&(Ee.textContent=tl),Bt=c(s),Ie=f(s,"P",{"data-svelte-h":!0}),b(Ie)!=="svelte-1nxsbm3"&&(Ie.textContent=ll),Ut=c(s),xe=f(s,"DIV",{dir:!0});var Fe=j(xe);M(ne.$$.fragment,Fe),Fe.forEach(_),Wt=c(s),Ve=f(s,"P",{"data-svelte-h":!0}),b(Ve)!=="svelte-1um6261"&&(Ve.innerHTML=nl),Et=c(s),Re=f(s,"DIV",{dir:!0});var Xe=j(Re);M(re.$$.fragment,Xe),Xe.forEach(_),It=c(s),He=f(s,"P",{"data-svelte-h":!0}),b(He)!=="svelte-14rb5nb"&&(He.textContent=rl),xt=c(s),se=f(s,"DIV",{dir:!0});var Tl=j(se);A.l(Tl),Tl.forEach(_),Vt=c(s),M(ae.$$.fragment,s),Rt=c(s),Ge=f(s,"P",{"data-svelte-h":!0}),b(Ge)!=="svelte-mq937q"&&(Ge.textContent=sl),Ht=c(s),Qe=f(s,"DIV",{dir:!0});var wl=j(Qe);M(oe.$$.fragment,wl),wl.forEach(_),Gt=c(s),Le=f(s,"P",{"data-svelte-h":!0}),b(Le)!=="svelte-1tyutlc"&&(Le.textContent=al),s.forEach(_),tt=c(r),Ye=f(r,"P",{}),j(Ye).forEach(_),this.h()},h(){C(t,"name","hf:doc:metadata"),C(t,"content",en),C(Y,"dir","ltr"),C(N,"dir","ltr"),C(K,"dir","ltr"),C(Ze,"dir","ltr"),C(te,"dir","ltr"),C(xe,"dir","ltr"),C(Re,"dir","ltr"),C(se,"dir","ltr"),C(Qe,"dir","ltr"),C(l,"dir","rtl")},m(r,k){a(document.head,t),T(r,n,k),T(r,e,k),T(r,o,k),$(w,r,k),T(r,h,k),T(r,l,k),a(l,v),ie[Z].m(l,null),a(l,qe),ce[U].m(l,null),a(l,Se),z.m(l,null),a(l,Ke),a(l,be),a(l,st),$(X,l,null),a(l,at),a(l,ge),a(l,ot),a(l,Y),de[E].m(Y,null),a(l,it),a(l,Me),a(l,ct),a(l,N),$(P,N,null),a(N,dt),$(q,N,null),a(l,ft),a(l,$e),a(l,pt),$(S,l,null),a(l,ut),a(l,ye),a(l,mt),a(l,K),fe[x].m(K,null),a(l,_t),a(l,ke),a(l,ht),a(l,Te),a(l,bt),pe[R].m(l,null),a(l,Oe),a(l,we),a(l,gt),a(l,ve),a(l,Mt),a(l,Je),a(l,$t),a(l,je),a(l,yt),$(O,l,null),a(l,kt),a(l,Ce),a(l,Tt),a(l,Ze),$(ee,Ze,null),a(l,wt),a(l,Be),a(l,vt),a(l,te),ue[G].m(te,null),a(l,Jt),a(l,Ue),a(l,jt),D.m(l,null),a(l,et),$(le,l,null),a(l,Ct),a(l,We),a(l,Zt),a(l,Ee),a(l,Bt),a(l,Ie),a(l,Ut),a(l,xe),$(ne,xe,null),a(l,Wt),a(l,Ve),a(l,Et),a(l,Re),$(re,Re,null),a(l,It),a(l,He),a(l,xt),a(l,se),me[L].m(se,null),a(l,Vt),$(ae,l,null),a(l,Rt),a(l,Ge),a(l,Ht),a(l,Qe),$(oe,Qe,null),a(l,Gt),a(l,Le),T(r,tt,k),T(r,Ye,k),lt=!0},p(r,[k]){const s={};k&1&&(s.fw=r[0]),w.$set(s);let Ae=Z;Z=il(r),Z!==Ae&&(he(),p(ie[Ae],1,1,()=>{ie[Ae]=null}),_e(),B=ie[Z],B||(B=ie[Z]=ol[Z](r),B.c()),u(B,1),B.m(l,qe));let F=U;U=dl(r),U!==F&&(he(),p(ce[F],1,1,()=>{ce[F]=null}),_e(),W=ce[U],W||(W=ce[U]=cl[U](r),W.c()),u(W,1),W.m(l,Se)),nt!==(nt=fl(r))&&(z.d(1),z=nt(r),z&&(z.c(),z.m(l,Ke)));let ze=E;E=ul(r),E!==ze&&(he(),p(de[ze],1,1,()=>{de[ze]=null}),_e(),I=de[E],I||(I=de[E]=pl[E](r),I.c()),u(I,1),I.m(Y,null));let De=x;x=_l(r),x!==De&&(he(),p(fe[De],1,1,()=>{fe[De]=null}),_e(),V=fe[x],V||(V=fe[x]=ml[x](r),V.c()),u(V,1),V.m(K,null));let Ne=R;R=bl(r),R!==Ne&&(he(),p(pe[Ne],1,1,()=>{pe[Ne]=null}),_e(),H=pe[R],H||(H=pe[R]=hl[R](r),H.c()),u(H,1),H.m(l,Oe));let Fe=G;G=Ml(r),G!==Fe&&(he(),p(ue[Fe],1,1,()=>{ue[Fe]=null}),_e(),Q=ue[G],Q||(Q=ue[G]=gl[G](r),Q.c()),u(Q,1),Q.m(te,null)),rt!==(rt=$l(r))&&(D.d(1),D=rt(r),D&&(D.c(),D.m(l,et)));let Xe=L;L=kl(r),L!==Xe&&(he(),p(me[Xe],1,1,()=>{me[Xe]=null}),_e(),A=me[L],A||(A=me[L]=yl[L](r),A.c()),u(A,1),A.m(se,null))},i(r){lt||(u(w.$$.fragment,r),u(B),u(W),u(X.$$.fragment,r),u(I),u(P.$$.fragment,r),u(q.$$.fragment,r),u(S.$$.fragment,r),u(V),u(H),u(O.$$.fragment,r),u(ee.$$.fragment,r),u(Q),u(le.$$.fragment,r),u(ne.$$.fragment,r),u(re.$$.fragment,r),u(A),u(ae.$$.fragment,r),u(oe.$$.fragment,r),lt=!0)},o(r){p(w.$$.fragment,r),p(B),p(W),p(X.$$.fragment,r),p(I),p(P.$$.fragment,r),p(q.$$.fragment,r),p(S.$$.fragment,r),p(V),p(H),p(O.$$.fragment,r),p(ee.$$.fragment,r),p(Q),p(le.$$.fragment,r),p(ne.$$.fragment,r),p(re.$$.fragment,r),p(A),p(ae.$$.fragment,r),p(oe.$$.fragment,r),lt=!1},d(r){r&&(_(n),_(e),_(o),_(h),_(l),_(tt),_(Ye)),_(t),y(w,r),ie[Z].d(),ce[U].d(),z.d(),y(X),de[E].d(),y(P),y(q),y(S),fe[x].d(),pe[R].d(),y(O),y(ee),ue[G].d(),D.d(),y(le),y(ne),y(re),me[L].d(),y(ae),y(oe)}}}const en='{"title":"ساخت ترنسفورمر","local":"ساخت-ترنسفورمر","sections":[{"title":"روش‌های مختلف بارگذاری","local":"روشهای-مختلف-بارگذاری","sections":[],"depth":3},{"title":"روش‌های ذخیره‌سازی","local":"روشهای-ذخیرهسازی","sections":[],"depth":3}],"depth":2}';function tn(m,t,n){let e="pt";return Cl(()=>{const o=new URLSearchParams(window.location.search);n(0,e=o.get("fw")||"pt")}),[e]}class dn extends Zl{constructor(t){super(),Bl(this,t,tn,Ol,jl,{})}}export{dn as component};
