{ "cells": [ { "cell_type": "code", "execution_count": 2, "id": "designing-borough", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/workspace/DeepSpeech-2.x/tools/venv/lib/python3.7/site-packages/ipykernel/ipkernel.py:283: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n", " and should_run_async(code)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[[ 0.0000000e+00 0.0000000e+00 0.0000000e+00 ... 0.0000000e+00\n", " 0.0000000e+00 0.0000000e+00]\n", " [ 8.4147096e-01 8.0196178e-01 7.6172036e-01 ... 1.2409373e-04\n", " 1.1547816e-04 1.0746076e-04]\n", " [ 9.0929741e-01 9.5814437e-01 9.8704624e-01 ... 2.4818745e-04\n", " 2.3095631e-04 2.1492151e-04]\n", " ...\n", " [ 3.7960774e-01 7.4510968e-01 7.3418564e-01 ... 1.2036801e-02\n", " 1.1201146e-02 1.0423505e-02]\n", " [-5.7338190e-01 -8.9752287e-02 -4.1488394e-02 ... 1.2160885e-02\n", " 1.1316618e-02 1.0530960e-02]\n", " [-9.9920684e-01 -8.5234123e-01 -7.8794664e-01 ... 1.2284970e-02\n", " 1.1432089e-02 1.0638415e-02]]\n", "True\n", "True\n" ] } ], "source": [ "import torch\n", "import math\n", "import numpy as np\n", "\n", "max_len=100\n", "d_model=256\n", "\n", "pe = torch.zeros(max_len, d_model)\n", "position = torch.arange(0, max_len,\n", " dtype=torch.float32).unsqueeze(1)\n", "toruch_position = position\n", "div_term = torch.exp(\n", " torch.arange(0, d_model, 2, dtype=torch.float32) *\n", " -(math.log(10000.0) / d_model))\n", "tourch_div_term = div_term.cpu().detach().numpy()\n", "\n", "\n", "\n", "torhc_sin = torch.sin(position * div_term)\n", "torhc_cos = torch.cos(position * div_term)\n", "print(torhc_sin.cpu().detach().numpy())\n", "np_sin = np.sin((position * div_term).cpu().detach().numpy())\n", "np_cos = np.cos((position * div_term).cpu().detach().numpy())\n", "print(np.allclose(np_sin, torhc_sin.cpu().detach().numpy()))\n", "print(np.allclose(np_cos, torhc_cos.cpu().detach().numpy()))\n", "pe[:, 0::2] = torhc_sin\n", "pe[:, 1::2] = torhc_cos\n", "tourch_pe = pe.cpu().detach().numpy()" ] }, { "cell_type": "code", "execution_count": 5, "id": "swiss-referral", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n", "True\n", "False\n", "False\n", "False\n", "False\n", "[[ 1. 1. 1. ... 1. 1.\n", " 1. ]\n", " [ 0.5403023 0.59737533 0.6479059 ... 1. 1.\n", " 1. ]\n", " [-0.41614684 -0.28628543 -0.1604359 ... 0.99999994 1.\n", " 1. ]\n", " ...\n", " [-0.92514753 -0.66694194 -0.67894876 ... 0.9999276 0.99993724\n", " 0.9999457 ]\n", " [-0.81928825 -0.9959641 -0.999139 ... 0.99992603 0.999936\n", " 0.99994457]\n", " [ 0.03982088 -0.52298605 -0.6157435 ... 0.99992454 0.9999347\n", " 0.99994344]]\n", "----\n", "[[ 1. 1. 1. ... 1. 1.\n", " 1. ]\n", " [ 0.54030234 0.59737533 0.6479059 ... 1. 1.\n", " 1. ]\n", " [-0.41614684 -0.28628543 -0.1604359 ... 1. 1.\n", " 1. ]\n", " ...\n", " [-0.92514753 -0.66694194 -0.67894876 ... 0.9999276 0.9999373\n", " 0.9999457 ]\n", " [-0.81928825 -0.9959641 -0.999139 ... 0.99992603 0.999936\n", " 0.99994457]\n", " [ 0.03982088 -0.5229861 -0.6157435 ... 0.99992454 0.9999347\n", " 0.99994344]]\n", ")))))))\n", "[[ 0.0000000e+00 0.0000000e+00 0.0000000e+00 ... 0.0000000e+00\n", " 0.0000000e+00 0.0000000e+00]\n", " [ 8.4147096e-01 8.0196178e-01 7.6172036e-01 ... 1.2409373e-04\n", " 1.1547816e-04 1.0746076e-04]\n", " [ 9.0929741e-01 9.5814437e-01 9.8704624e-01 ... 2.4818745e-04\n", " 2.3095631e-04 2.1492151e-04]\n", " ...\n", " [ 3.7960774e-01 7.4510968e-01 7.3418564e-01 ... 1.2036801e-02\n", " 1.1201146e-02 1.0423505e-02]\n", " [-5.7338190e-01 -8.9752287e-02 -4.1488394e-02 ... 1.2160885e-02\n", " 1.1316618e-02 1.0530960e-02]\n", " [-9.9920684e-01 -8.5234123e-01 -7.8794664e-01 ... 1.2284970e-02\n", " 1.1432089e-02 1.0638415e-02]]\n", "----\n", "[[ 0.0000000e+00 0.0000000e+00 0.0000000e+00 ... 0.0000000e+00\n", " 0.0000000e+00 0.0000000e+00]\n", " [ 8.4147096e-01 8.0196178e-01 7.6172036e-01 ... 1.2409373e-04\n", " 1.1547816e-04 1.0746076e-04]\n", " [ 9.0929741e-01 9.5814437e-01 9.8704624e-01 ... 2.4818745e-04\n", " 2.3095631e-04 2.1492151e-04]\n", " ...\n", " [ 3.7960774e-01 7.4510968e-01 7.3418564e-01 ... 1.2036801e-02\n", " 1.1201146e-02 1.0423505e-02]\n", " [-5.7338190e-01 -8.9752287e-02 -4.1488394e-02 ... 1.2160885e-02\n", " 1.1316618e-02 1.0530960e-02]\n", " [-9.9920684e-01 -8.5234123e-01 -7.8794664e-01 ... 1.2284970e-02\n", " 1.1432089e-02 1.0638415e-02]]\n" ] } ], "source": [ "import paddle\n", "paddle.set_device('cpu')\n", "ppe = paddle.zeros((max_len, d_model), dtype='float32')\n", "position = paddle.arange(0, max_len,\n", " dtype='float32').unsqueeze(1)\n", "print(np.allclose(position.numpy(), toruch_position))\n", "div_term = paddle.exp(\n", " paddle.arange(0, d_model, 2, dtype='float32') *\n", " -(math.log(10000.0) / d_model))\n", "print(np.allclose(div_term.numpy(), tourch_div_term))\n", "\n", "\n", "\n", "p_sin = paddle.sin(position * div_term)\n", "p_cos = paddle.cos(position * div_term)\n", "print(np.allclose(np_sin, p_sin.numpy(), rtol=1.e-6, atol=0))\n", "print(np.allclose(np_cos, p_cos.numpy(), rtol=1.e-6, atol=0))\n", "ppe[:, 0::2] = p_sin\n", "ppe[:, 1::2] = p_cos\n", "print(np.allclose(p_sin.numpy(), torhc_sin.cpu().detach().numpy()))\n", "print(np.allclose(p_cos.numpy(), torhc_cos.cpu().detach().numpy()))\n", "print(p_cos.numpy())\n", "print(\"----\")\n", "print(torhc_cos.cpu().detach().numpy())\n", "print(\")))))))\")\n", "print(p_sin.numpy())\n", "print(\"----\")\n", "print(torhc_sin.cpu().detach().numpy())" ] }, { "cell_type": "code", "execution_count": 4, "id": "integrated-boards", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "False\n" ] } ], "source": [ "print(np.allclose(ppe.numpy(), pe.numpy()))" ] }, { "cell_type": "code", "execution_count": null, "id": "flying-reserve", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "revised-divide", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.0" } }, "nbformat": 4, "nbformat_minor": 5 }