Skip to content

Instantly share code, notes, and snippets.

@wassname
Created September 25, 2018 02:54
Show Gist options
  • Save wassname/073fd2adea7b1f3fa80f0afc854a6f31 to your computer and use it in GitHub Desktop.
Save wassname/073fd2adea7b1f3fa80f0afc854a6f31 to your computer and use it in GitHub Desktop.
Comparing the shape of mse, l1 (mae), smoothl1loss etc in pytorch as they approach 0 error
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"ExecuteTime": {
"end_time": "2018-09-25T02:44:46.282080Z",
"start_time": "2018-09-25T02:44:45.508681Z"
}
},
"outputs": [],
"source": [
"%pylab inline\n",
"import torch"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {
"ExecuteTime": {
"end_time": "2018-09-25T02:53:27.073660Z",
"start_time": "2018-09-25T02:53:26.679878Z"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/wassname/.pyenv/versions/3.5.3/envs/jupyter3/lib/python3.5/site-packages/torch/nn/functional.py:52: UserWarning: size_average and reduce args will be deprecated, please use reduction='none' instead.\n",
" warnings.warn(warning.format(ret))\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f5fc0e19fd0>"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f5fc0dec0b8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"x = torch.linspace(-3, 3, 200)\n",
"losses = [\n",
" torch.nn.L1Loss,\n",
" torch.nn.MSELoss,\n",
" torch.nn.SmoothL1Loss,\n",
" torch.nn.SoftMarginLoss,\n",
"# torch.nn.AdaptiveLogSoftmaxWithLoss,\n",
" torch.nn.BCELoss,\n",
" torch.nn.BCEWithLogitsLoss,\n",
"# torch.nn.CosineEmbeddingLoss,\n",
"# torch.nn.CrossEntropyLoss,\n",
" torch.nn.HingeEmbeddingLoss,\n",
" torch.nn.KLDivLoss,\n",
"# torch.nn.MarginRankingLoss,\n",
"# torch.nn.MultiLabelMarginLoss,\n",
" torch.nn.MultiLabelSoftMarginLoss,\n",
"# torch.nn.MultiMarginLoss,\n",
"# torch.nn.NLLLoss,\n",
" torch.nn.PoissonNLLLoss,\n",
" torch.nn.SoftMarginLoss,\n",
"# torch.nn.TripletMarginLoss,\n",
" \n",
"]\n",
"x_true = x*0\n",
"for loss in losses:\n",
" y = loss(reduce=False)(x_true, x)\n",
" plt.plot(x.data.numpy(), y.data.numpy(), label=str(loss))\n",
"plt.ylim(-1,1)\n",
"plt.legend(loc='upper right', bbox_to_anchor=(0.5, 0.5))"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"ExecuteTime": {
"end_time": "2018-09-25T02:49:29.348194Z",
"start_time": "2018-09-25T02:49:29.339539Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"['AdaptiveLogSoftmaxWithLoss',\n",
" 'BCELoss',\n",
" 'BCEWithLogitsLoss',\n",
" 'CosineEmbeddingLoss',\n",
" 'CrossEntropyLoss',\n",
" 'HingeEmbeddingLoss',\n",
" 'KLDivLoss',\n",
" 'L1Loss',\n",
" 'MSELoss',\n",
" 'MarginRankingLoss',\n",
" 'MultiLabelMarginLoss',\n",
" 'MultiLabelSoftMarginLoss',\n",
" 'MultiMarginLoss',\n",
" 'NLLLoss',\n",
" 'PoissonNLLLoss',\n",
" 'SmoothL1Loss',\n",
" 'SoftMarginLoss',\n",
" 'TripletMarginLoss']"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[l for l in dir(torch.nn) if l.endswith('Loss')]"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"ExecuteTime": {
"end_time": "2018-09-25T02:46:22.268245Z",
"start_time": "2018-09-25T02:46:22.261345Z"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "jupyter3",
"language": "python",
"name": "jupyter3"
},
"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.5.3"
},
"toc": {
"colors": {
"hover_highlight": "#DAA520",
"navigate_num": "#000000",
"navigate_text": "#333333",
"running_highlight": "#FF0000",
"selected_highlight": "#FFD700",
"sidebar_border": "#EEEEEE",
"wrapper_background": "#FFFFFF"
},
"moveMenuLeft": true,
"nav_menu": {
"height": "12px",
"width": "252px"
},
"navigate_menu": true,
"number_sections": true,
"sideBar": false,
"threshold": 4,
"toc_cell": false,
"toc_section_display": "block",
"toc_window_display": true,
"widenNotebook": false
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment