Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
labmlai
GitHub Repository: labmlai/annotated_deep_learning_paper_implementations
Path: blob/master/translate_cache/transformers/mha.si.json
4924 views
1
{
2
"<h1>Multi-Headed Attention (MHA)</h1>\n<p><a href=\"https://colab.research.google.com/github/labmlai/annotated_deep_learning_paper_implementations/blob/master/labml_nn/transformers/basic/autoregressive_experiment.ipynb\"><span translate=no>_^_0_^_</span></a></p>\n<p>This is a tutorial/implementation of multi-headed attention from paper <a href=\"https://arxiv.org/abs/1706.03762\">Attention Is All You Need</a> in <a href=\"https://pytorch.org/\">PyTorch</a>. The implementation is inspired from <a href=\"https://nlp.seas.harvard.edu/2018/04/03/attention.html\">Annotated Transformer</a>.</p>\n<p>Here is the <a href=\"basic/autoregressive_experiment.html\">training code</a> that uses a basic transformer with MHA for NLP auto-regression.</p>\n<p><a href=\"basic/autoregressive_experiment.html\">Here is an experiment implementation</a> that trains a simple transformer.</p>\n": "<h1>\u0db6\u0dc4\u0dd4 \u0dc1\u0dd3\u0dbb\u0dca\u0dc2 \u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba (MHA)</h1>\n<p><a href=\"https://colab.research.google.com/github/labmlai/annotated_deep_learning_paper_implementations/blob/master/labml_nn/transformers/basic/autoregressive_experiment.ipynb\"><span translate=no>_^_0_^_</span></a></p>\n</a><p>\u0db8\u0dd9\u0dba \u0d9a\u0da9\u0daf\u0dcf\u0dc3\u0dd2 \u0dc0\u0dbd\u0dd2\u0db1\u0dca \u0db6\u0dc4\u0dd4-\u0dc1\u0dd3\u0dbb\u0dca\u0dc2 \u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba \u0dba\u0ddc\u0db8\u0dd4 \u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0dda \u0db1\u0dd2\u0db6\u0db1\u0dca\u0db0\u0db1\u0dba\u0d9a\u0dca/\u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0dad\u0dca\u0db8\u0d9a <a href=\"https://arxiv.org/abs/1706.03762\">\u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0d9a\u0dd2 \u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba <a href=\"https://pytorch.org/\">PyTorch \u0dc4\u0dd2 \u0d94\u0db6\u0da7 \u0d85\u0dc0\u0dc1\u0dca\u0dba \u0dc3\u0dd2\u0dba\u0dbd\u0dca\u0dbd</a> \u0dc0\u0dda. \u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0dad\u0dca\u0db8\u0d9a \u0d9a\u0dd2\u0dbb\u0dd3\u0db8 \u0d86\u0db1\u0dd4\u0db7\u0dcf\u0dc0 \u0dbd\u0dad\u0dca <a href=\"https://nlp.seas.harvard.edu/2018/04/03/attention.html\">\u0da7\u0dca\u0dbb\u0dcf\u0db1\u0dca\u0dc3\u0dca\u0dc6\u0ddd\u0db8\u0dbb\u0dca</a> \u0dc0\u0dd9\u0dad\u0dd2\u0db1\u0dca \u0daf\u0dda\u0dc0\u0dcf\u0db1\u0dd4\u0db7\u0dcf\u0dc0\u0dba\u0dd9\u0db1\u0dca \u0dba.</p>\n<p>NLP \u0dc3\u0dca\u0dc0\u0dba\u0d82\u0d9a\u0dca\u0dbb\u0dd3\u0dba-\u0db4\u0dca\u0dbb\u0dad\u0dd2\u0d9c\u0dcf\u0db8\u0dd3 \u0dc3\u0db3\u0dc4\u0dcf MHA \u0dc3\u0db8\u0d9f \u0db8\u0dd6\u0dbd\u0dd2\u0d9a \u0da7\u0dca\u0dbb\u0dcf\u0db1\u0dca\u0dc3\u0dca\u0dc6\u0ddd\u0db8\u0dbb\u0dba\u0d9a\u0dca \u0db7\u0dcf\u0dc0\u0dd2\u0dad\u0dcf \u0d9a\u0dbb\u0db1 <a href=\"basic/autoregressive_experiment.html\">\u0db4\u0dd4\u0dc4\u0dd4\u0dab\u0dd4 \u0d9a\u0dda\u0dad\u0dba</a> \u0db8\u0dd9\u0db1\u0dca\u0db1.</p>\n<p>\u0dc3\u0dbb\u0dbd <a href=\"basic/autoregressive_experiment.html\">\u0da7\u0dca\u0dbb\u0dcf\u0db1\u0dca\u0dc3\u0dca\u0dc6\u0ddd\u0db8\u0dbb\u0dba\u0d9a\u0dca \u0db4\u0dd4\u0dc4\u0dd4\u0dab\u0dd4 \u0d9a\u0dbb\u0db1 \u0d85\u0dad\u0dca\u0dc4\u0daf\u0dcf \u0db6\u0dd0\u0dbd\u0dd3\u0db8\u0dda \u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0dad\u0dca\u0db8\u0d9a \u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0d9a\u0dca \u0db8\u0dd9\u0db1\u0dca\u0db1</a>.</p>\n",
3
"<h3>Calculate scores between queries and keys</h3>\n<p>This method can be overridden for other variations like relative attention.</p>\n": "<h3>\u0dc0\u0dd2\u0db8\u0dc3\u0dd4\u0db8\u0dca\u0dc3\u0dc4 \u0dba\u0dad\u0dd4\u0dbb\u0dd4 \u0d85\u0dad\u0dbb \u0dbd\u0d9a\u0dd4\u0dab\u0dd4 \u0d9c\u0dab\u0db1\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1</h3>\n<p>\u0dc3\u0dcf\u0db4\u0dda\u0d9a\u0dca\u0dc2\u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba \u0dc0\u0dd0\u0db1\u0dd2 \u0dc0\u0dd9\u0db1\u0dad\u0dca \u0dc0\u0dd9\u0db1\u0dc3\u0dca\u0d9a\u0db8\u0dca \u0dc3\u0db3\u0dc4\u0dcf \u0db8\u0dd9\u0db8 \u0d9a\u0dca\u0dbb\u0db8\u0dba \u0d89\u0d9a\u0dca\u0db8\u0dc0\u0dcf \u0dba\u0dcf \u0dc4\u0dd0\u0d9a\u0dd2\u0dba. </p>\n",
4
"<p> <a id=\"MHA\"></a></p>\n<h2>Multi-Head Attention Module</h2>\n<p>This computes scaled multi-headed attention for given <span translate=no>_^_0_^_</span>, <span translate=no>_^_1_^_</span> and <span translate=no>_^_2_^_</span> vectors.</p>\n<p><span translate=no>_^_3_^_</span></p>\n<p>In simple terms, it finds keys that matches the query, and gets the values of those keys.</p>\n<p>It uses dot-product of query and key as the indicator of how matching they are. Before taking the <span translate=no>_^_4_^_</span> the dot-products are scaled by <span translate=no>_^_5_^_</span>. This is done to avoid large dot-product values causing softmax to give very small gradients when <span translate=no>_^_6_^_</span> is large.</p>\n<p>Softmax is calculated along the axis of of the sequence (or time).</p>\n": "<p> <a id=\"MHA\"></a></p>\n<h2>\u0db6\u0dc4\u0dd4-\u0db4\u0dca\u0dbb\u0db0\u0dcf\u0db1\u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba \u0db8\u0ddc\u0da9\u0dd2\u0dba\u0dd4\u0dbd\u0dba</h2>\n<p>\u0db8\u0dd9\u0dba\u0dbd\u0db6\u0dcf \u0daf\u0dd3 <span translate=no>_^_0_^_</span>\u0d87\u0dad\u0dd2 <span translate=no>_^_1_^_</span> \u0dc3\u0dc4 <span translate=no>_^_2_^_</span> \u0daf\u0ddb\u0dc1\u0dd2\u0d9a \u0dc3\u0db3\u0dc4\u0dcf \u0db6\u0dc4\u0dd4-\u0dc1\u0dd3\u0dbb\u0dca\u0dc2 \u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba \u0db4\u0dbb\u0dd2\u0db8\u0dcf\u0dab\u0dba \u0d9a\u0dbb\u0dba\u0dd2. </p>\n<p><span translate=no>_^_3_^_</span></p>\n<p>\u0dc3\u0dbb\u0dc5\u0dc0\u0d9a\u0dd2\u0dc0\u0dc4\u0ddc\u0dad\u0dca, \u0d91\u0dba \u0dc0\u0dd2\u0db8\u0dc3\u0dd4\u0db8\u0da7 \u0d9c\u0dd0\u0dbd\u0db4\u0dd9\u0db1 \u0dba\u0dad\u0dd4\u0dbb\u0dd4 \u0dc3\u0ddc\u0dba\u0dcf \u0d9c\u0db1\u0dca\u0db1\u0dcf \u0d85\u0dad\u0dbb \u0d91\u0db8 \u0dba\u0dad\u0dd4\u0dbb\u0dd4 \u0dc0\u0dbd \u0d85\u0d9c\u0dba\u0db1\u0dca \u0dbd\u0db6\u0dcf \u0d9c\u0db1\u0dd3. </p>\n<p>\u0d91\u0dba\u0d94\u0dc0\u0dd4\u0db1\u0dca \u0d9a\u0dd9\u0dad\u0dbb\u0db8\u0dca \u0d9c\u0dd0\u0dbd\u0db4\u0dd9\u0db1 \u0daf\u0dbb\u0dca\u0dc1\u0d9a\u0dba\u0d9a\u0dca \u0dbd\u0dd9\u0dc3 \u0dc0\u0dd2\u0db8\u0dc3\u0dd4\u0db8 \u0dc4\u0dcf \u0db4\u0dca\u0dbb\u0db0\u0dcf\u0db1 \u0dad\u0dd2\u0dad\u0dca-\u0db1\u0dd2\u0dc2\u0dca\u0db4\u0dcf\u0daf\u0db1 \u0db7\u0dcf\u0dc0\u0dd2\u0dad\u0dcf \u0d9a\u0dbb\u0dba\u0dd2. <span translate=no>_^_4_^_</span> \u0dad\u0dd2\u0dad\u0dca-\u0db1\u0dd2\u0dc2\u0dca\u0db4\u0dcf\u0daf\u0db1 \u0d9c\u0dd0\u0db1\u0dd3\u0db8\u0da7 \u0db4\u0dd9\u0dbb \u0db4\u0dbb\u0dd2\u0db8\u0dcf\u0dab\u0dba \u0d9a\u0dbb\u0db1\u0dd4 \u0dbd\u0dd0\u0db6\u0dda <span translate=no>_^_5_^_</span>. \u0db8\u0dd9\u0dba \u0dc3\u0dd2\u0daf\u0dd4 \u0d9a\u0dbb\u0db1\u0dd4 \u0dbd\u0db6\u0db1\u0dca\u0db1\u0dda \u0dc0\u0dd2\u0dc1\u0dcf\u0dbd \u0dad\u0dd2\u0dad\u0dca \u0db1\u0dd2\u0dc2\u0dca\u0db4\u0dcf\u0daf\u0db1 \u0d85\u0d9c\u0dba\u0db1\u0dca \u0dc0\u0dc5\u0d9a\u0dca\u0dc0\u0dcf \u0d9c\u0dd0\u0db1\u0dd3\u0db8 \u0dc3\u0db3\u0dc4\u0dcf \u0dc0\u0db1 \u0d85\u0dad\u0dbb \u0d91\u0db8\u0d9f\u0dd2\u0db1\u0dca \u0dc3\u0ddc\u0dc6\u0dca\u0da7\u0dca\u0db8\u0dd0\u0d9a\u0dca\u0dc3\u0dca \u0dc0\u0dd2\u0dc1\u0dcf\u0dbd <span translate=no>_^_6_^_</span> \u0dc0\u0db1 \u0dc0\u0dd2\u0da7 \u0d89\u0dad\u0dcf \u0d9a\u0dd4\u0da9\u0dcf \u0d85\u0db1\u0dd4\u0d9a\u0dca\u0dbb\u0db8\u0dd2\u0d9a \u0db4\u0dca\u0dbb\u0db8\u0dcf\u0dab\u0dba\u0d9a\u0dca \u0dbd\u0db6\u0dcf \u0daf\u0dda. </p>\n<p>Softmax\u0d85\u0db1\u0dd4\u0d9a\u0dca\u0dbb\u0db8\u0dba (\u0dc4\u0ddd \u0d9a\u0dcf\u0dbd\u0dba) \u0d85\u0d9a\u0dca\u0dc2\u0dba \u0d94\u0dc3\u0dca\u0dc3\u0dda \u0d9c\u0dab\u0db1\u0dba \u0d9a\u0dbb\u0db1\u0dd4 \u0dbd\u0dd0\u0db6\u0dda. </p>\n",
5
"<p> <a id=\"PrepareMHA\"></a></p>\n<h2>Prepare for multi-head attention</h2>\n<p>This module does a linear transformation and splits the vector into given number of heads for multi-head attention. This is used to transform <strong>key</strong>, <strong>query</strong>, and <strong>value</strong> vectors.</p>\n": "<p> <a id=\"PrepareMHA\"></a></p>\n<h2>\u0db6\u0dc4\u0dd4-\u0dc4\u0dd2\u0dc3\u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba \u0dc3\u0db3\u0dc4\u0dcf \u0dc3\u0dd6\u0daf\u0dcf\u0db1\u0db8\u0dca \u0dc0\u0db1\u0dca\u0db1</h2>\n<p>\u0db8\u0dd9\u0db8\u0db8\u0ddc\u0da9\u0dd2\u0dba\u0dd4\u0dbd\u0dba \u0dbb\u0dda\u0d9b\u0dd3\u0dba \u0db4\u0dbb\u0dd2\u0dc0\u0dbb\u0dca\u0dad\u0db1\u0dba\u0d9a\u0dca \u0dc3\u0dd2\u0daf\u0dd4 \u0d9a\u0dbb\u0db1 \u0d85\u0dad\u0dbb \u0db6\u0dc4\u0dd4 \u0dc4\u0dd2\u0dc3 \u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba \u0dc3\u0db3\u0dc4\u0dcf \u0daf\u0ddb\u0dc1\u0dd2\u0d9a\u0dba \u0dbd\u0db6\u0dcf \u0daf\u0dd3 \u0d87\u0dad\u0dd2 \u0dc4\u0dd2\u0dc3\u0dca \u0d9c\u0dab\u0db1\u0da7 \u0db6\u0dd9\u0daf\u0dda. <strong>\u0dba\u0dad\u0dd4\u0dbb</strong>, <strong>\u0dc0\u0dd2\u0db8\u0dc3\u0dd4\u0db8</strong>\u0dc3\u0dc4 <strong>\u0d85\u0d9c\u0dba</strong>\u0daf\u0ddb\u0dc1\u0dd2\u0d9a \u0db4\u0dbb\u0dd2\u0dc0\u0dbb\u0dca\u0dad\u0db1\u0dba \u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0da7 \u0db8\u0dd9\u0dba \u0db7\u0dcf\u0dc0\u0dd2\u0dad\u0dcf \u0d9a\u0dbb\u0dba\u0dd2. </p>\n",
6
"<p> <span translate=no>_^_0_^_</span> has shape <span translate=no>_^_1_^_</span>, where first dimension is the query dimension. If the query dimension is equal to <span translate=no>_^_2_^_</span> it will be broadcasted.</p>\n": "<p> <span translate=no>_^_0_^_</span> \u0dc4\u0dd0\u0da9\u0dba \u0d87\u0dad <span translate=no>_^_1_^_</span>, \u0d91\u0dc4\u0dd2\u0daf\u0dd3 \u0db4\u0dc5\u0db8\u0dd4 \u0db8\u0dcf\u0db1\u0dba \u0dc0\u0dd2\u0db8\u0dc3\u0dd4\u0db8\u0dca \u0db8\u0dcf\u0db1\u0dba\u0d9a\u0dca \u0dc0\u0dda. \u0dc0\u0dd2\u0db8\u0dc3\u0dd4\u0db8 \u0db8\u0dcf\u0db1\u0dba\u0d9a\u0dca \u0dc3\u0db8\u0dcf\u0db1 \u0dc0\u0dda \u0db1\u0db8\u0dca <span translate=no>_^_2_^_</span> \u0d91\u0dba \u0dc0\u0dd2\u0d9a\u0dcf\u0dc1\u0db1\u0dba \u0d9a\u0dbb\u0db1\u0dd4 \u0d87\u0dad. </p>\n",
7
"<p> <span translate=no>_^_0_^_</span>, <span translate=no>_^_1_^_</span> and <span translate=no>_^_2_^_</span> are the tensors that store collection of <em>query</em>, <em>key</em> and <em>value</em> vectors. They have shape <span translate=no>_^_3_^_</span>.</p>\n<p><span translate=no>_^_4_^_</span> has shape <span translate=no>_^_5_^_</span> and <span translate=no>_^_6_^_</span> indicates whether for batch <span translate=no>_^_7_^_</span>, query at position <span translate=no>_^_8_^_</span> has access to key-value at position <span translate=no>_^_9_^_</span>.</p>\n": "<p> <span translate=no>_^_0_^_</span>, <span translate=no>_^_1_^_</span> \u0dc3\u0dc4 <span translate=no>_^_2_^_</span> <em>\u0dc0\u0dd2\u0db8\u0dc3\u0dd4\u0db8</em>, <em>\u0dba\u0dad\u0dd4\u0dbb</em>\u0dc3\u0dc4 <em>\u0d85\u0d9c\u0dba</em>\u0daf\u0ddb\u0dc1\u0dd2\u0d9a \u0d91\u0d9a\u0dad\u0dd4 \u0d9a\u0dd2\u0dbb\u0dd3\u0db8 \u0d9c\u0db6\u0da9\u0dcf \u0d9a\u0dbb\u0db1 \u0d86\u0dad\u0db1\u0dca\u0dba \u0dc0\u0dda. \u0d92\u0dc0\u0dcf\u0dba\u0dda \u0dc4\u0dd0\u0da9\u0dba \u0d87\u0dad <span translate=no>_^_3_^_</span>. </p>\n<p><span translate=no>_^_4_^_</span> \u0dc4\u0dd0\u0da9\u0dba \u0d87\u0dad\u0dd2 <span translate=no>_^_5_^_</span> \u0d85\u0dad\u0dbb \u0d9a\u0dab\u0dca\u0da9\u0dcf\u0dba\u0db8 \u0dc3\u0db3\u0dc4\u0dcf <span translate=no>_^_7_^_</span>, \u0dc3\u0dca\u0dae\u0dcf\u0db1\u0dba\u0dda \u0dc0\u0dd2\u0db8\u0dc3\u0dd4\u0db8\u0da7 \u0db4\u0dca\u0dbb\u0dc0\u0dda\u0dc1\u0dba <span translate=no>_^_8_^_</span> \u0dad\u0dd2\u0db6\u0dda\u0daf \u0dba\u0db1\u0dca\u0db1 <span translate=no>_^_6_^_</span> \u0daf\u0d9a\u0dca\u0dc0\u0dba\u0dd2 \u0dc3\u0dca\u0dae\u0dcf\u0db1\u0dba\u0dda \u0db4\u0dca\u0dbb\u0db0\u0dcf\u0db1-\u0d85\u0d9c\u0dba <span translate=no>_^_9_^_</span>. </p>\n",
8
"<p><span translate=no>_^_0_^_</span> attention along the key sequence dimension <span translate=no>_^_1_^_</span> </p>\n": "<p><span translate=no>_^_0_^_</span> \u0db4\u0dca\u0dbb\u0db0\u0dcf\u0db1 \u0d85\u0db1\u0dd4\u0d9a\u0dca\u0dbb\u0db8\u0dba \u0db8\u0dcf\u0db1\u0dba\u0d9a\u0dca \u0d94\u0dc3\u0dca\u0dc3\u0dda \u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba <span translate=no>_^_1_^_</span> </p>\n",
9
"<p><span translate=no>_^_0_^_</span>, <span translate=no>_^_1_^_</span> and <span translate=no>_^_2_^_</span> have shape <span translate=no>_^_3_^_</span> </p>\n": "<p><span translate=no>_^_0_^_</span>, <span translate=no>_^_1_^_</span> <span translate=no>_^_2_^_</span> \u0dc3\u0dc4 \u0dc4\u0dd0\u0da9\u0dba <span translate=no>_^_3_^_</span> </p>\n",
10
"<p>Apply dropout </p>\n": "<p>\u0d85\u0dad\u0dc4\u0dd0\u0dbb\u0daf\u0dd0\u0db8\u0dd3\u0db8 \u0dba\u0ddc\u0daf\u0db1\u0dca\u0db1 </p>\n",
11
"<p>Apply mask </p>\n": "<p>\u0dc0\u0dd9\u0dc3\u0dca\u0dba\u0ddc\u0daf\u0db1\u0dca\u0db1 </p>\n",
12
"<p>Calculate <span translate=no>_^_0_^_</span> or <span translate=no>_^_1_^_</span> </p>\n": "<p>\u0d9c\u0dab\u0db1\u0dba\u0d9a\u0dbb\u0db1\u0dca\u0db1 <span translate=no>_^_0_^_</span> \u0dc4\u0ddd <span translate=no>_^_1_^_</span> </p>\n",
13
"<p>Compute attention scores <span translate=no>_^_0_^_</span>. This gives a tensor of shape <span translate=no>_^_1_^_</span>. </p>\n": "<p>\u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba\u0dbd\u0d9a\u0dd4\u0dab\u0dd4 \u0d9c\u0dab\u0db1\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1 <span translate=no>_^_0_^_</span>. \u0db8\u0dd9\u0dba \u0dc4\u0dd0\u0da9\u0dba\u0dda \u0d86\u0dad\u0dad\u0dd2\u0d9a\u0dba\u0d9a\u0dca \u0dbd\u0db6\u0dcf \u0daf\u0dd9\u0dba\u0dd2 <span translate=no>_^_1_^_</span>. </p>\n",
14
"<p>Concatenate multiple heads </p>\n": "<p>\u0db6\u0dc4\u0dd4\u0dc4\u0dd2\u0dc3\u0dca \u0dc3\u0d82\u0dba\u0dd4\u0d9a\u0dca\u0dad \u0d9a\u0dbb\u0db1\u0dca\u0db1 </p>\n",
15
"<p>Dropout </p>\n": "<p>\u0dc4\u0dd0\u0dbd\u0dd3\u0db8 </p>\n",
16
"<p>Input has shape <span translate=no>_^_0_^_</span> or <span translate=no>_^_1_^_</span>. We apply the linear transformation to the last dimension and split that into the heads. </p>\n": "<p>\u0d86\u0daf\u0dcf\u0db1\u0dba\u0da7\u0dc4\u0dd0\u0da9\u0dba <span translate=no>_^_0_^_</span> \u0dc4\u0ddd <span translate=no>_^_1_^_</span>\u0d87\u0dad. \u0d85\u0db4\u0dd2 \u0dbb\u0dda\u0d9b\u0dd3\u0dba \u0db4\u0dbb\u0dd2\u0dc0\u0dbb\u0dca\u0dad\u0db1\u0dba \u0d85\u0dc0\u0dc3\u0dcf\u0db1 \u0db8\u0dcf\u0db1\u0dba\u0da7 \u0d85\u0daf\u0dcf\u0dc5 \u0dc0\u0db1 \u0d85\u0dad\u0dbb \u0d91\u0dba \u0dc4\u0dd2\u0dc3\u0dca \u0db6\u0dc0\u0da7 \u0db6\u0dd9\u0daf\u0dd3 \u0dba\u0dba\u0dd2. </p>\n",
17
"<p>Linear layer for linear transform </p>\n": "<p>\u0dbb\u0dda\u0d9b\u0dd3\u0dba\u0db4\u0dbb\u0dd2\u0dab\u0dcf\u0db8\u0db1\u0dba \u0dc3\u0db3\u0dc4\u0dcf \u0dbb\u0dda\u0d9b\u0dd3\u0dba \u0dc3\u0dca\u0dae\u0dbb\u0dba </p>\n",
18
"<p>Linear transform </p>\n": "<p>\u0dbb\u0dda\u0d9b\u0dd3\u0dba\u0db4\u0dbb\u0dd2\u0dab\u0dcf\u0db8\u0db1\u0dba </p>\n",
19
"<p>Multiply by values <span translate=no>_^_0_^_</span> </p>\n": "<p>\u0d85\u0d9c\u0dba\u0db1\u0dca\u0d85\u0db1\u0dd4\u0dc0 \u0d9c\u0dd4\u0dab \u0d9a\u0dbb\u0db1\u0dca\u0db1 <span translate=no>_^_0_^_</span> </p>\n",
20
"<p>Number of dimensions in vectors in each head </p>\n": "<p>\u0d91\u0d9a\u0dca\u0d91\u0d9a\u0dca \u0dc4\u0dd2\u0dc3\u0dd9\u0dc4\u0dd2 \u0daf\u0ddb\u0dc1\u0dd2\u0d9a\u0dc0\u0dbd \u0db8\u0dcf\u0db1\u0dba\u0db1\u0dca \u0d9c\u0dab\u0db1 </p>\n",
21
"<p>Number of features per head </p>\n": "<p>\u0dc4\u0dd2\u0dc3\u0d9a\u0da7\u0dc0\u0dd2\u0dc1\u0dda\u0dc2\u0dcf\u0d82\u0d9c \u0d9c\u0dab\u0db1 </p>\n",
22
"<p>Number of heads </p>\n": "<p>\u0dc4\u0dd2\u0dc3\u0dca\u0d9c\u0dab\u0db1 </p>\n",
23
"<p>Output has shape <span translate=no>_^_0_^_</span> or <span translate=no>_^_1_^_</span> </p>\n": "<p>\u0db1\u0dd2\u0db8\u0dd0\u0dc0\u0dd4\u0db8\u0dda\u0dc4\u0dd0\u0da9\u0dba <span translate=no>_^_0_^_</span> \u0dc4\u0ddd <span translate=no>_^_1_^_</span> </p>\n",
24
"<p>Output layer </p>\n": "<p>\u0db4\u0dca\u0dbb\u0dad\u0dd2\u0daf\u0dcf\u0db1\u0dc3\u0dca\u0dae\u0dbb\u0dba </p>\n",
25
"<p>Prepare <span translate=no>_^_0_^_</span>, <span translate=no>_^_1_^_</span> and <span translate=no>_^_2_^_</span> for attention computation. These will then have shape <span translate=no>_^_3_^_</span>. </p>\n": "<p>\u0dc3\u0dd6\u0daf\u0dcf\u0db1\u0db8\u0dca\u0dc0\u0db1\u0dca\u0db1 <span translate=no>_^_0_^_</span>, <span translate=no>_^_1_^_</span> \u0dc3\u0dc4 \u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba \u0d9c\u0dab\u0db1\u0dba \u0d9a\u0dd2\u0dbb\u0dd3\u0db8 <span translate=no>_^_2_^_</span> \u0dc3\u0db3\u0dc4\u0dcf. \u0db8\u0dda\u0dc0\u0dcf\u0da7 \u0db4\u0dc3\u0dd4\u0dc0 \u0dc4\u0dd0\u0da9\u0dba \u0d87\u0dad <span translate=no>_^_3_^_</span>. </p>\n",
26
"<p>Same mask applied to all heads. </p>\n": "<p>\u0dc3\u0dd2\u0dba\u0dbd\u0dd4\u0db8\u0dc4\u0dd2\u0dc3\u0dca \u0dc3\u0db3\u0dc4\u0dcf \u0d91\u0d9a\u0db8 \u0d86\u0dc0\u0dbb\u0dab \u0dba\u0ddc\u0daf\u0db1\u0dd4 \u0dbd\u0dd0\u0db6\u0dda. </p>\n",
27
"<p>Save attentions for any other calculations </p>\n": "<p>\u0dc0\u0dd9\u0db1\u0dad\u0dca\u0d9c\u0dab\u0db1\u0dba \u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0dca \u0dc3\u0db3\u0dc4\u0dcf \u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba \u0dc3\u0dd4\u0dbb\u0d9a\u0dd2\u0db1\u0dca\u0db1 </p>\n",
28
"<p>Save attentions if debugging </p>\n": "<p>\u0db1\u0dd2\u0daf\u0ddc\u0dc3\u0dca\u0d9a\u0dbb\u0dab\u0dba\u0db1\u0db8\u0dca \u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba \u0dc3\u0dd4\u0dbb\u0d9a\u0dd2\u0db1\u0dca\u0db1 </p>\n",
29
"<p>Scale scores <span translate=no>_^_0_^_</span> </p>\n": "<p>\u0db4\u0dbb\u0dd2\u0db8\u0dcf\u0dab\u0dbd\u0d9a\u0dd4\u0dab\u0dd4 <span translate=no>_^_0_^_</span> </p>\n",
30
"<p>Scaling factor before the softmax </p>\n": "<p>\u0dc3\u0ddc\u0dc6\u0dca\u0da7\u0dca\u0db8\u0dd0\u0d9a\u0dca\u0dc3\u0dca\u0dc0\u0dbd\u0da7 \u0db4\u0dd9\u0dbb \u0db4\u0dbb\u0dd2\u0db8\u0dcf\u0dab \u0dc3\u0dcf\u0db0\u0d9a\u0dba </p>\n",
31
"<p>Softmax for attention along the time dimension of <span translate=no>_^_0_^_</span> </p>\n": "<p>\u0d9a\u0dcf\u0dbd\u0db8\u0dcf\u0db1\u0dba \u0d94\u0dc3\u0dca\u0dc3\u0dda \u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba \u0dba\u0ddc\u0db8\u0dd4 \u0d9a\u0dd2\u0dbb\u0dd3\u0db8 \u0dc3\u0db3\u0dc4\u0dcf \u0dc3\u0ddc\u0dc6\u0dca\u0da7\u0dca\u0db8\u0dd0\u0d9a\u0dca\u0dc3\u0dca <span translate=no>_^_0_^_</span> </p>\n",
32
"<p>Split last dimension into heads </p>\n": "<p>\u0d85\u0dc0\u0dc3\u0dcf\u0db1\u0db8\u0dcf\u0db1\u0dba \u0dc4\u0dd2\u0dc3\u0dca \u0db6\u0dc0\u0da7 \u0db6\u0dd9\u0daf\u0db1\u0dca\u0db1 </p>\n",
33
"<p>These transform the <span translate=no>_^_0_^_</span>, <span translate=no>_^_1_^_</span> and <span translate=no>_^_2_^_</span> vectors for multi-headed attention. </p>\n": "<p>\u0db8\u0dda\u0dc0\u0dcf\u0db6\u0dc4\u0dd4-\u0dc1\u0dd3\u0dbb\u0dca\u0dc2 \u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba \u0dc3\u0db3\u0dc4\u0dcf <span translate=no>_^_1_^_</span> \u0dc3\u0dc4 <span translate=no>_^_2_^_</span> \u0daf\u0ddb\u0dc1\u0dd2\u0d9a \u0db4\u0dbb\u0dd2\u0dc0\u0dbb\u0dca\u0dad\u0db1\u0dba \u0d9a\u0dbb\u0dba\u0dd2. <span translate=no>_^_0_^_</span> </p>\n",
34
"<p>We store attentions so that it can be used for logging, or other computations if needed </p>\n": "<p>\u0d85\u0dc0\u0dc1\u0dca\u0dba\u0db1\u0db8\u0dca \u0dbd\u0ddc\u0d9c\u0dca \u0dc0\u0dd3\u0db8 \u0dc4\u0ddd \u0dc0\u0dd9\u0db1\u0dad\u0dca \u0d9c\u0dab\u0db1\u0dba \u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0dca \u0dc3\u0db3\u0dc4\u0dcf \u0db7\u0dcf\u0dc0\u0dd2\u0dad\u0dcf \u0d9a\u0dc5 \u0dc4\u0dd0\u0d9a\u0dd2 \u0dc0\u0db1 \u0db4\u0dbb\u0dd2\u0daf\u0dd2 \u0d85\u0db4\u0dd2 \u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba \u0d9c\u0db6\u0da9\u0dcf \u0d9a\u0dbb\u0db8\u0dd4 </p>\n",
35
"<p>resulting mask has shape <span translate=no>_^_0_^_</span> </p>\n": "<p>\u0d91\u0dc4\u0dd2\u0db4\u0dca\u0dbb\u0dad\u0dd2 ing \u0dbd\u0dba\u0d9a\u0dca \u0dbd\u0dd9\u0dc3 \u0dc0\u0dd9\u0dc3\u0dca <span translate=no>_^_0_^_</span> </p>\n",
36
"<ul><li><span translate=no>_^_0_^_</span> is the number of heads. </li>\n<li><span translate=no>_^_1_^_</span> is the number of features in the <span translate=no>_^_2_^_</span>, <span translate=no>_^_3_^_</span> and <span translate=no>_^_4_^_</span> vectors.</li></ul>\n": "<ul><li><span translate=no>_^_0_^_</span> \u0dc4\u0dd2\u0dc3\u0dca \u0d9c\u0dab\u0db1 \u0dc0\u0dda. </li>\n<li><span translate=no>_^_1_^_</span> \u0dba\u0db1\u0dd4 <span translate=no>_^_2_^_</span>, <span translate=no>_^_3_^_</span> \u0dc3\u0dc4 <span translate=no>_^_4_^_</span> \u0daf\u0ddb\u0dc1\u0dd2\u0d9a\u0dc0\u0dbd \u0d87\u0dad\u0dd2 \u0dbd\u0d9a\u0dca\u0dc2\u0dab \u0d9c\u0dab\u0db1 \u0dc0\u0dda. </li></ul>\n",
37
"Multi-Headed Attention (MHA)": "\u0db6\u0dc4\u0dd4 \u0dc1\u0dd3\u0dbb\u0dca\u0dc2 \u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba (MHA)",
38
"This implements the Multi-Headed Attention used in transformers using PyTorch with explanations.": "\u0db8\u0dd9\u0dba \u0db4\u0dd0\u0dc4\u0dd0\u0daf\u0dd2\u0dbd\u0dd2 \u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0dca \u0dc3\u0db8\u0d9f PyTorch \u0db7\u0dcf\u0dc0\u0dd2\u0dad\u0dcf \u0d9a\u0dbb\u0db1 \u0da7\u0dca\u0dbb\u0dcf\u0db1\u0dca\u0dc3\u0dca\u0dc6\u0ddd\u0db8\u0dbb\u0dca\u0dc0\u0dbd \u0db7\u0dcf\u0dc0\u0dd2\u0dad\u0dcf \u0d9a\u0dbb\u0db1 \u0db6\u0dc4\u0dd4-\u0dc1\u0dd3\u0dbb\u0dca\u0dc2 \u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba \u0d9a\u0dca\u0dbb\u0dd2\u0dba\u0dcf\u0dad\u0dca\u0db8\u0d9a \u0d9a\u0dbb\u0dba\u0dd2."
39
}
40