Path: blob/master/translate_cache/transformers/mha.si.json
4924 views
{1"<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",2"<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",3"<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",4"<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",5"<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",6"<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",7"<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",8"<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",9"<p>Apply dropout </p>\n": "<p>\u0d85\u0dad\u0dc4\u0dd0\u0dbb\u0daf\u0dd0\u0db8\u0dd3\u0db8 \u0dba\u0ddc\u0daf\u0db1\u0dca\u0db1 </p>\n",10"<p>Apply mask </p>\n": "<p>\u0dc0\u0dd9\u0dc3\u0dca\u0dba\u0ddc\u0daf\u0db1\u0dca\u0db1 </p>\n",11"<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",12"<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",13"<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",14"<p>Dropout </p>\n": "<p>\u0dc4\u0dd0\u0dbd\u0dd3\u0db8 </p>\n",15"<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",16"<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",17"<p>Linear transform </p>\n": "<p>\u0dbb\u0dda\u0d9b\u0dd3\u0dba\u0db4\u0dbb\u0dd2\u0dab\u0dcf\u0db8\u0db1\u0dba </p>\n",18"<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",19"<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",20"<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",21"<p>Number of heads </p>\n": "<p>\u0dc4\u0dd2\u0dc3\u0dca\u0d9c\u0dab\u0db1 </p>\n",22"<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",23"<p>Output layer </p>\n": "<p>\u0db4\u0dca\u0dbb\u0dad\u0dd2\u0daf\u0dcf\u0db1\u0dc3\u0dca\u0dae\u0dbb\u0dba </p>\n",24"<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",25"<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",26"<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",27"<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",28"<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",29"<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",30"<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",31"<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",32"<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",33"<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",34"<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",35"<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",36"Multi-Headed Attention (MHA)": "\u0db6\u0dc4\u0dd4 \u0dc1\u0dd3\u0dbb\u0dca\u0dc2 \u0d85\u0dc0\u0db0\u0dcf\u0db1\u0dba (MHA)",37"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."38}3940