Skip to content

Instantly share code, notes, and snippets.

@uduse
Last active March 7, 2023 20:55
Show Gist options
  • Save uduse/c6ba1ebec7b585bfb4cf4b73d275c682 to your computer and use it in GitHub Desktop.
Save uduse/c6ba1ebec7b585bfb4cf4b73d275c682 to your computer and use it in GitHub Desktop.
scalar_transformations
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<Axes: xlabel='x', ylabel='y'>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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bANbZ5qBpk4PGL4I7p1boQIN6EnNRWXnF9LoxYU2ufbuV3oVuxtf//79eeyxx5g3bx79+/cHICkpifnz5/PHH39c8tjBgwfTsmVLPvnkE1xcXNi6dStubm74+Phw9913M3XqVO68886i/c8u+/r6cvKk+Wh1/PjxTJo0iYiICO6//34GDRqEr68v77//Pt7e3gwYMIAXX3yRTz755II1PPXUU/zwww9Mnz6dyMhI3nrrLXr16kV0dDRVqlTh8OHD3HnnnTz++OM88MADbNmyhSeffLJYfzciIqXJMAzWH05h1objLNgRT26BBTBnwe7VJIS724bTsXZVnMvy9dJZaTGw8u0zDYDPPB2qe735ZKZGm7K/fjmlUGPnvLy8GDRoEFOnTi0KNTNnziQiIoJu3bpd8thjx44xbtw4GjRoAEC9evWKtj3wwAN06tSJ+Ph4QkNDSUpKYsGCBSxevPicczz55JP06tULgMcff5yBAweyZMkSOnfuDMDw4cOZNm3aBa+fmZnJJ598wrRp0+jduzcAn332GYsWLeKLL75g3LhxTJkyhaioKN5++20AoqKi2LlzJ6+99lrJ/qJERK7QydO5fL8phlkbjnP4H41+o4J9ubtdOH1bVKeyj7t1islIMHszbZr6d9fsOj2g+/NQo7V1aijH7CbUTJgwgR9//JG9e/fi5eVFp06dePPNN4mKiiqT63m5ubD7lV5lcu7iXLskRowYQdu2bYmNjaV69epMmzaNYcOG4XSZcQfGjBnDAw88wFdffUXPnj3p378/derUAaBdu3Y0btyY6dOn88wzzzBz5kwiIyO59tprzzlHs2bNiv4cHBwMQNOmTc9Zl5SUdMHrHzx4kPz8/KIABODm5ka7du3Ys2cPAPv27aNt27bnHNeuXbvL/ZWIiFwVwzDYfOwUX609yoIdCeQVmk9lfNxduLVFGHe1jaB5Df/L/pwtNZknYPUk+OtzKMg219XsAtf9t8K9YroUuwk1K1asYNSoUbRt25aCggKee+45brjhBnbv3o2Pj0+pX8/Jyan0R3IsIy1btqR58+bMmDGDG264gV27djF//vzLHvfSSy8xaNAg5s+fz2+//cb48eP57rvvuP322wHzac3kyZN55plnmDp1Kvfdd99538Bubn8PEnV227/XWSyW0viYIiJlLjO3gJ+3xvHVuqPsiU8vWt+8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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"import seaborn as sns\n",
"import pandas as pd\n",
"from IPython.display import display\n",
"\n",
"\n",
"def phi(scalar, eps=np.finfo(float).eps):\n",
" \"\"\"\n",
" 1. Pohlen, T. et al. Observe and Look Further: Achieving Consistent Performance on Atari. http://arxiv.org/abs/1805.11593 (2018) doi:10.48550/arXiv.1805.11593.\n",
" \"\"\"\n",
" return np.sign(scalar) * (np.sqrt(np.abs(scalar) + 1) - 1) + eps * scalar\n",
"\n",
"\n",
"def symlog(scalar):\n",
" \"\"\"\n",
" 1. Webber, J. B. W. A bi-symmetric log transformation for wide-range data. Meas. Sci. Technol. 24, 027001 (2013).\n",
" 2. Hafner, D., Pasukonis, J., Ba, J. & Lillicrap, T. Mastering Diverse Domains through World Models. Preprint at http://arxiv.org/abs/2301.04104 (2023).\n",
" \"\"\"\n",
" return np.sign(scalar) * np.log(np.abs(scalar) + 1)\n",
"\n",
"x = np.arange(-10, 10, 0.01)\n",
"y_symlog = symlog(x)\n",
"y_phi = phi(x)\n",
"\n",
"df = pd.DataFrame(dict(x=x, y_symlog=y_symlog, y_phi=y_phi)).melt(\n",
" id_vars=\"x\", var_name=\"kind\", value_name=\"y\"\n",
")\n",
"\n",
"sns.lineplot(data=df, x=\"x\", y=\"y\", hue=\"kind\")\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "mini-p9-UMDnz-py3.10",
"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.10.9"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment