├── .gitignore ├── LICENSE ├── README.md ├── deep_evidential_regression_loss_pytorch ├── __init__.py ├── loss.py └── paper_loss.py ├── examples ├── README.md ├── example_dataset_experiment_1.ipynb └── plot_loss_function.ipynb ├── setup.py └── tests └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | pip-wheel-metadata/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | target/ 76 | 77 | # Jupyter Notebook 78 | .ipynb_checkpoints 79 | 80 | # IPython 81 | profile_default/ 82 | ipython_config.py 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # pipenv 88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 91 | # install all needed dependencies. 92 | #Pipfile.lock 93 | 94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 95 | __pypackages__/ 96 | 97 | # Celery stuff 98 | celerybeat-schedule 99 | celerybeat.pid 100 | 101 | # SageMath parsed files 102 | *.sage.py 103 | 104 | # Environments 105 | .env 106 | .venv 107 | env/ 108 | venv/ 109 | ENV/ 110 | env.bak/ 111 | venv.bak/ 112 | 113 | # Spyder project settings 114 | .spyderproject 115 | .spyproject 116 | 117 | # Rope project settings 118 | .ropeproject 119 | 120 | # mkdocs documentation 121 | /site 122 | 123 | # mypy 124 | .mypy_cache/ 125 | .dmypy.json 126 | dmypy.json 127 | 128 | # Pyre type checker 129 | .pyre/ 130 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 |
4 | 5 | # Deep Evidential Regression Loss Function 6 | 7 | [![Paper](http://img.shields.io/badge/paper-arxiv.1001.2234-B31B1B.svg)](https://arxiv.org/abs/1910.02600) 8 | [![Conference](http://img.shields.io/badge/ICLR-2020-4b44ce.svg)](https://openreview.net/forum?id=S1eSoeSYwr) 9 | 10 | 13 |
14 | 15 | ## Description 16 | The paper "Deep Evidential Uncertainty/Regression" was submitted to ICLR where 17 | it was rejected[1]. The idea is inline with light of Sensoy et al.[2] and Malinin & Gales[3]. 18 | It was rejected because of lack of experiments and similar ideas with Malinin thesis. 19 | The goal is to implement the loss function and validate the results. 20 | 21 | 22 | ## Installation 23 | 24 | ### Typical Install 25 | ``` 26 | pip install git+https://github.com/deebuls/deep_evidential_regression_loss_pytorch 27 | ``` 28 | 29 | ### Development 30 | ``` 31 | git clone https://github.com/deebuls/deep_evidential_regression_loss_pytorch 32 | cd deep_evidential_regression_loss_pytorch 33 | pip install -e .[dev] 34 | ``` 35 | 36 | Tests can then be run from the root of the project using: 37 | ``` 38 | nosetests 39 | ``` 40 | 41 | ## Usage 42 | 43 | To use this code `EvidentialLossSumOfSquares` and create loss function. `loss.py` 44 | implements the evidential loss function. 45 | 46 | Check examples for detailed usage example 47 | 48 | ## ToDo 49 | 50 | 1. Different variation of the loss (NLL, with log(alpha, beta, lambda)) 51 | 2. When output is image as case of VAE 52 | 3. Examples 53 | 4. Test cases 54 | 55 | 56 | ## Abstract 57 | Deterministic neural networks (NNs) are increasingly being deployed in safety 58 | critical domains, where calibrated, robust and efficient measures of 59 | uncertainty are crucial. While it is possible to train regression networks to 60 | output the parameters of a probability distribution by maximizing a Gaussian 61 | likelihood function, the resulting model remains oblivious to the underlying 62 | confidence of its predictions. In this paper, we propose a novel method for 63 | training deterministic NNs to not only estimate the desired target but also the 64 | associated evidence in support of that target. We accomplish this by placing 65 | evidential priors over our original Gaussian likelihood function and training 66 | our NN to infer the hyperparameters of our evidential distribution. We impose 67 | priors during training such that the model is penalized when its predicted 68 | evidence is not aligned with the correct output. Thus the model estimates not 69 | only the probabilistic mean and variance of our target but also the underlying 70 | uncertainty associated with each of those parameters. We observe that our 71 | evidential regression method learns well-calibrated measures of uncertainty on 72 | various benchmarks, scales to complex computer vision tasks, and is robust to 73 | adversarial input perturbations. 74 | 75 | ## References 76 | * [1] https://openreview.net/forum?id=S1eSoeSYwr¬eId=78WcDK50Bi 77 | * [2] M. Sensoy, et al. "Evidential deep learning to quantify classification uncertainty." NeurIPS. 2018. 78 | * [3] A. Malinin, et al. Predictive uncertainty estimation via prior networks. NeurIPS 2018. 79 | -------------------------------------------------------------------------------- /deep_evidential_regression_loss_pytorch/__init__.py: -------------------------------------------------------------------------------- 1 | from .loss import EvidentialLossSumOfSquares 2 | from .paper_loss import PaperEvidentialLossSumOfSquares 3 | -------------------------------------------------------------------------------- /deep_evidential_regression_loss_pytorch/loss.py: -------------------------------------------------------------------------------- 1 | # coding=utf-8 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | """Implements the evidential loss using Normal Inverse Gamma Distribution 15 | Use this function when you want to model your regression output as a 16 | normal inverse gamma distribution. 17 | """ 18 | 19 | from __future__ import absolute_import 20 | from __future__ import division 21 | from __future__ import print_function 22 | 23 | import numpy as np 24 | import torch 25 | import torch.nn as nn 26 | 27 | class EvidentialLossSumOfSquares(nn.Module): 28 | """The evidential loss function on a matrix. 29 | 30 | This class is implemented with slight modifications from the paper. The major 31 | change is in the regularizer parameter mentioned in the paper. The regularizer 32 | mentioned in the paper didnot give the required results, so we modified it 33 | with the KL divergence regularizer from the paper. In orderto overcome the problem 34 | that KL divergence are missing near zero so we add the minimum values to alpha, 35 | beta and lambda and compare distance with NIG(alpha=1.0, beta=0.1, lambda=1.0) 36 | 37 | This class only allows for rank-4 inputs for the output `targets`, and expectes 38 | `inputs` be of the form [mu, alpha, beta, lambda] 39 | 40 | alpha, beta and lambda needs to be positive values. 41 | """ 42 | 43 | def __init__(self, debug=False, return_all=False): 44 | """Sets up loss function. 45 | 46 | Args: 47 | debug: When set to 'true' prints all the intermittent values 48 | return_all: When set to 'true' returns all loss values without taking average 49 | 50 | """ 51 | super(EvidentialLossSumOfSquares, self).__init__() 52 | 53 | self.debug = debug 54 | self.return_all_values = return_all 55 | self.MAX_CLAMP_VALUE = 5.0 # Max you can go is 85 because exp(86) is nan Now exp(5.0) is 143 which is max of a,b and l 56 | 57 | def kl_divergence_nig(self, mu1, mu2, alpha_1, beta_1, lambda_1): 58 | alpha_2 = torch.ones_like(mu1)*1.0 59 | beta_2 = torch.ones_like(mu1)*0.1 60 | lambda_2 = torch.ones_like(mu1)*1.0 61 | 62 | t1 = 0.5 * (alpha_1/beta_1) * ((mu1 - mu2)**2) * lambda_2 63 | #t1 = 0.5 * (alpha_1/beta_1) * (torch.abs(mu1 - mu2)) * lambda_2 64 | t2 = 0.5*lambda_2/lambda_1 65 | t3 = alpha_2*torch.log(beta_1/beta_2) 66 | t4 = -torch.lgamma(alpha_1) + torch.lgamma(alpha_2) 67 | t5 = (alpha_1-alpha_2)*torch.digamma(alpha_1) 68 | t6 = -(beta_1 - beta_2)*(alpha_1/beta_1) 69 | return (t1+t2-0.5+t3+t4+t5+t6) 70 | 71 | def forward(self, inputs, targets): 72 | """ Implements the loss function 73 | 74 | Args: 75 | inputs: The output of the neural network. inputs has 4 dimension 76 | in the format [mu, alpha, beta, lambda]. Must be a tensor of 77 | floats 78 | targets: The expected output 79 | 80 | Returns: 81 | Based on the `return_all` it will return mean loss of batch or individual loss 82 | 83 | """ 84 | assert torch.is_tensor(inputs) 85 | assert torch.is_tensor(targets) 86 | assert (inputs[:,1] > 0).all() 87 | assert (inputs[:,2] > 0).all() 88 | assert (inputs[:,3] > 0).all() 89 | 90 | targets = targets.view(-1) 91 | y = inputs[:,0].view(-1) #first column is mu,delta, predicted value 92 | a = inputs[:,1].view(-1) + 1.0 #alpha 93 | b = inputs[:,2].view(-1) + 0.1 #beta to avoid zero 94 | l = inputs[:,3].view(-1) + 1.0 #lamda 95 | 96 | if self.debug: 97 | print("a :", a) 98 | print("b :", b) 99 | print("l :", l) 100 | 101 | J1 = torch.lgamma(a - 0.5) 102 | J2 = -torch.log(torch.tensor([4.0])) 103 | J3 = -torch.lgamma(a) 104 | J4 = -torch.log(l) 105 | J5 = -0.5*torch.log(b) 106 | J6 = torch.log(2*b*(1 + l) + (2*a - 1)*l*(y-targets)**2) 107 | 108 | if self.debug: 109 | print("lgama(a - 0.5) :", J1) 110 | print("log(4):", J2) 111 | print("lgama(a) :", J3) 112 | print("log(l) :", J4) 113 | print("log( ---- ) :", J6) 114 | 115 | J = J1 + J2 + J3 + J4 + J5 + J6 116 | #Kl_divergence = torch.abs(y - targets) * (2*a + l)/b ######## ????? 117 | #Kl_divergence = ((y - targets)**2) * (2*a + l) 118 | #Kl_divergence = torch.abs(y - targets) * (2*a + l) 119 | #Kl_divergence = 0.0 120 | #Kl_divergence = (torch.abs(y - targets) * (a-1) * l)/b 121 | Kl_divergence = self.kl_divergence_nig(y, targets, a, b, l) 122 | 123 | if self.debug: 124 | print ("KL ",Kl_divergence.data.numpy()) 125 | loss = torch.exp(J) + Kl_divergence 126 | 127 | if self.debug: 128 | print ("loss :", loss.mean()) 129 | 130 | 131 | if self.return_all_values: 132 | ret_loss = loss 133 | else: 134 | ret_loss = loss.mean() 135 | #if torch.isnan(ret_loss): 136 | # ret_loss.item() = self.prev_loss + 10 137 | #else: 138 | # self.prev_loss = ret_loss.item() 139 | 140 | return ret_loss 141 | -------------------------------------------------------------------------------- /deep_evidential_regression_loss_pytorch/paper_loss.py: -------------------------------------------------------------------------------- 1 | # coding=utf-8 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | """Implements the evidential loss using Normal Inverse Gamma Distribution 15 | Use this function when you want to model your regression output as a 16 | normal inverse gamma distribution. 17 | """ 18 | 19 | from __future__ import absolute_import 20 | from __future__ import division 21 | from __future__ import print_function 22 | 23 | import numpy as np 24 | import torch 25 | import torch.nn as nn 26 | 27 | class PaperEvidentialLossSumOfSquares(nn.Module): 28 | """The evidential loss function on a matrix. 29 | 30 | This class is implemented same as the paper. 31 | 32 | This class only allows for rank-4 inputs for the output `targets`, and expectes 33 | `inputs` be of the form [mu, alpha, beta, lambda] 34 | 35 | alpha, beta and lambda needs to be positive values. 36 | """ 37 | 38 | def __init__(self, debug=False, return_all=False): 39 | """Sets up loss function. 40 | 41 | Args: 42 | debug: When set to 'true' prints all the intermittent values 43 | return_all: When set to 'true' returns all loss values without taking average 44 | 45 | """ 46 | super(PaperEvidentialLossSumOfSquares, self).__init__() 47 | 48 | self.debug = debug 49 | self.return_all_values = return_all 50 | self.MAX_CLAMP_VALUE = 5.0 # Max you can go is 85 because exp(86) is nan Now exp(5.0) is 143 which is max of a,b and l 51 | 52 | 53 | def forward(self, inputs, targets): 54 | """ Implements the loss function 55 | 56 | Args: 57 | inputs: The output of the neural network. inputs has 4 dimension 58 | in the format [mu, alpha, beta, lambda]. Must be a tensor of 59 | floats 60 | targets: The expected output 61 | 62 | Returns: 63 | Based on the `return_all` it will return mean loss of batch or individual loss 64 | 65 | """ 66 | assert torch.is_tensor(inputs) 67 | assert torch.is_tensor(targets) 68 | assert (inputs[:,1] > 0).all() 69 | assert (inputs[:,2] > 0).all() 70 | assert (inputs[:,3] > 0).all() 71 | 72 | targets = targets.view(-1) 73 | y = inputs[:,0].view(-1) #first column is mu,delta, predicted value 74 | a = inputs[:,1].view(-1) #alpha 75 | b = inputs[:,2].view(-1) #beta to avoid zero 76 | l = inputs[:,3].view(-1) #lamda 77 | 78 | if self.debug: 79 | print("a :", a) 80 | print("b :", b) 81 | print("l :", l) 82 | 83 | #machine epsilon for safe cases 84 | machine_epsilon = torch.tensor(np.finfo(np.float32).eps) 85 | safe_a = torch.max(machine_epsilon, a) 86 | safe_b = torch.max(machine_epsilon, b) 87 | safe_l = torch.max(machine_epsilon, l) 88 | J1 = torch.lgamma(torch.max(a - 0.5)) 89 | J2 = -torch.log(torch.tensor([4.0])) 90 | J3 = -torch.lgamma(safe_a) 91 | J4 = -torch.log(safe_l) 92 | J5 = -0.5*torch.log(safe_b) 93 | J6 = torch.log(torch.max(machine_epsilon, 2*b*(1 + l) + (2*a - 1)*l*(y-targets)**2)) 94 | 95 | if self.debug: 96 | print("lgama(a - 0.5) :", J1) 97 | print("log(4):", J2) 98 | print("lgama(a) :", J3) 99 | print("log(l) :", J4) 100 | print("log( ---- ) :", J6) 101 | 102 | J = J1 + J2 + J3 + J4 + J5 + J6 103 | #Kl_divergence = torch.abs(y - targets) * (2*a + l)/b ######## ????? 104 | #Kl_divergence = ((y - targets)**2) * (2*safe_a + safe_l) 105 | #Kl_divergence = torch.abs(y - targets) * (2*a + l) 106 | #Kl_divergence = 0.0 107 | #Kl_divergence = (torch.abs(y - targets) * (a-1) * l)/b 108 | Kl_divergence = torch.norm(y - targets)*(2*safe_a + safe_l) 109 | 110 | if self.debug: 111 | print ("KL ",Kl_divergence.data.numpy()) 112 | loss = torch.exp(J) + Kl_divergence 113 | 114 | if self.debug: 115 | print ("loss :", loss.mean()) 116 | 117 | 118 | if self.return_all_values: 119 | ret_loss = loss 120 | else: 121 | ret_loss = loss.mean() 122 | #if torch.isnan(ret_loss): 123 | # ret_loss.item() = self.prev_loss + 10 124 | #else: 125 | # self.prev_loss = ret_loss.item() 126 | 127 | return ret_loss 128 | -------------------------------------------------------------------------------- /examples/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deebuls/deep_evidential_regression_loss_pytorch/373dbd492f47fb063b0aaaa1a62e1fe7328a0812/examples/README.md -------------------------------------------------------------------------------- /examples/plot_loss_function.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "name": "plot_loss_function.ipynb", 7 | "provenance": [], 8 | "authorship_tag": "ABX9TyPZlZ02ifV0YVljczxIFYpH", 9 | "include_colab_link": true 10 | }, 11 | "kernelspec": { 12 | "name": "python3", 13 | "display_name": "Python 3" 14 | } 15 | }, 16 | "cells": [ 17 | { 18 | "cell_type": "markdown", 19 | "metadata": { 20 | "id": "view-in-github", 21 | "colab_type": "text" 22 | }, 23 | "source": [ 24 | "\"Open" 25 | ] 26 | }, 27 | { 28 | "cell_type": "code", 29 | "metadata": { 30 | "id": "9soCgj4iCiGF", 31 | "outputId": "ad06ba66-21ed-4071-f1cb-c273a545ec08", 32 | "colab": { 33 | "base_uri": "https://localhost:8080/" 34 | } 35 | }, 36 | "source": [ 37 | "!pip install git+https://github.com/deebuls/deep_evidential_regression_loss_pytorch" 38 | ], 39 | "execution_count": 1, 40 | "outputs": [ 41 | { 42 | "output_type": "stream", 43 | "text": [ 44 | "Collecting git+https://github.com/deebuls/deep_evidential_regression_loss_pytorch\n", 45 | " Cloning https://github.com/deebuls/deep_evidential_regression_loss_pytorch to /tmp/pip-req-build-_6zgu7no\n", 46 | " Running command git clone -q https://github.com/deebuls/deep_evidential_regression_loss_pytorch /tmp/pip-req-build-_6zgu7no\n", 47 | "Requirement already satisfied: torch>=1.3.1 in /usr/local/lib/python3.6/dist-packages (from deep-evidential-regression-loss-pytorch==0.0.1) (1.7.0+cu101)\n", 48 | "Collecting torch-dct\n", 49 | " Downloading https://files.pythonhosted.org/packages/8f/20/6f6280ed77a0382ae6226c5250c02f64924b8fc73d9aa7d73b9c6b3ee6a5/torch_dct-0.1.5-py3-none-any.whl\n", 50 | "Requirement already satisfied: numpy>=1.15.4 in /usr/local/lib/python3.6/dist-packages (from deep-evidential-regression-loss-pytorch==0.0.1) (1.18.5)\n", 51 | "Requirement already satisfied: scipy>=1.1.0 in /usr/local/lib/python3.6/dist-packages (from deep-evidential-regression-loss-pytorch==0.0.1) (1.4.1)\n", 52 | "Requirement already satisfied: absl-py>=0.1.9 in /usr/local/lib/python3.6/dist-packages (from deep-evidential-regression-loss-pytorch==0.0.1) (0.10.0)\n", 53 | "Requirement already satisfied: mpmath>=1.1.0 in /usr/local/lib/python3.6/dist-packages (from deep-evidential-regression-loss-pytorch==0.0.1) (1.1.0)\n", 54 | "Requirement already satisfied: typing-extensions in /usr/local/lib/python3.6/dist-packages (from torch>=1.3.1->deep-evidential-regression-loss-pytorch==0.0.1) (3.7.4.3)\n", 55 | "Requirement already satisfied: dataclasses in /usr/local/lib/python3.6/dist-packages (from torch>=1.3.1->deep-evidential-regression-loss-pytorch==0.0.1) (0.7)\n", 56 | "Requirement already satisfied: future in /usr/local/lib/python3.6/dist-packages (from torch>=1.3.1->deep-evidential-regression-loss-pytorch==0.0.1) (0.16.0)\n", 57 | "Requirement already satisfied: six in /usr/local/lib/python3.6/dist-packages (from absl-py>=0.1.9->deep-evidential-regression-loss-pytorch==0.0.1) (1.15.0)\n", 58 | "Building wheels for collected packages: deep-evidential-regression-loss-pytorch\n", 59 | " Building wheel for deep-evidential-regression-loss-pytorch (setup.py) ... \u001b[?25l\u001b[?25hdone\n", 60 | " Created wheel for deep-evidential-regression-loss-pytorch: filename=deep_evidential_regression_loss_pytorch-0.0.1-cp36-none-any.whl size=9547 sha256=a103d7cfdf0ead83de6b64105baefc37afe37c2286ad61fe1dca2d3f3695ca44\n", 61 | " Stored in directory: /tmp/pip-ephem-wheel-cache-vm98g9aj/wheels/55/4b/1c/769c7b66ab5dd04cef9dcb1e43a4797d9d467680ace7b95222\n", 62 | "Successfully built deep-evidential-regression-loss-pytorch\n", 63 | "Installing collected packages: torch-dct, deep-evidential-regression-loss-pytorch\n", 64 | "Successfully installed deep-evidential-regression-loss-pytorch-0.0.1 torch-dct-0.1.5\n" 65 | ], 66 | "name": "stdout" 67 | } 68 | ] 69 | }, 70 | { 71 | "cell_type": "code", 72 | "metadata": { 73 | "id": "rHUekTvqC8kf" 74 | }, 75 | "source": [ 76 | "from deep_evidential_regression_loss_pytorch import EvidentialLossSumOfSquares" 77 | ], 78 | "execution_count": 2, 79 | "outputs": [] 80 | }, 81 | { 82 | "cell_type": "code", 83 | "metadata": { 84 | "id": "xD3M8EzgwfaN" 85 | }, 86 | "source": [ 87 | "import numpy as np\n", 88 | "import torch\n", 89 | "import pandas as pd\n", 90 | "import seaborn as sns" 91 | ], 92 | "execution_count": 5, 93 | "outputs": [] 94 | }, 95 | { 96 | "cell_type": "code", 97 | "metadata": { 98 | "id": "UUIWqzG60yIa", 99 | "outputId": "f4ccdf62-7ca2-4017-f17b-8a6e7388e084", 100 | "colab": { 101 | "base_uri": "https://localhost:8080/" 102 | } 103 | }, 104 | "source": [ 105 | "criterion = EvidentialLossSumOfSquares(return_all=True)\n", 106 | "alphas = [1.0, 1.5, 2.0]\n", 107 | "betas = [0.1, 0.5, 1.0]\n", 108 | "lambdas = [1.0, 1.5, 2.0]\n", 109 | "\n", 110 | "diff = np.linspace(-1, 1, 100)\n", 111 | "val = np.zeros(100)\n", 112 | "val = val + diff\n", 113 | "\n", 114 | "all_data_loss = []\n", 115 | "\n", 116 | "for aa in alphas:\n", 117 | " for bb in betas:\n", 118 | " for ll in lambdas:\n", 119 | " temp = np.vstack((val, np.ones(100)*aa, np.ones(100)*bb, np.ones(100)*ll)).T\n", 120 | " inputs = torch.tensor(temp)\n", 121 | " targets = torch.zeros((100,1))\n", 122 | " loss_temp = criterion(inputs,targets).data.numpy()\n", 123 | " one_iter = np.hstack((temp, loss_temp.reshape(100,1)))\n", 124 | " all_data_loss.extend(one_iter)\n", 125 | "\n", 126 | "all_data_loss = pd.DataFrame(all_data_loss, columns=['residual', 'alpha', 'beta', 'lambda', 'loss'])\n", 127 | "all_data_loss.shape" 128 | ], 129 | "execution_count": 12, 130 | "outputs": [ 131 | { 132 | "output_type": "execute_result", 133 | "data": { 134 | "text/plain": [ 135 | "(2700, 5)" 136 | ] 137 | }, 138 | "metadata": { 139 | "tags": [] 140 | }, 141 | "execution_count": 12 142 | } 143 | ] 144 | }, 145 | { 146 | "cell_type": "code", 147 | "metadata": { 148 | "id": "JAOU6Oqy-MbG", 149 | "outputId": "f85cc4ee-c57b-43cf-86c0-f6ab69645344", 150 | "colab": { 151 | "base_uri": "https://localhost:8080/", 152 | "height": 455 153 | } 154 | }, 155 | "source": [ 156 | "g = sns.relplot(\n", 157 | " data=all_data_loss,\n", 158 | " x=\"residual\", y=\"loss\", col=\"alpha\", row=\"lambda\",\n", 159 | " hue=\"beta\",\n", 160 | " kind=\"line\", palette=\"crest\", linewidth=4, zorder=5,\n", 161 | " height=2, aspect=1.5, legend=True\n", 162 | " )" 163 | ], 164 | "execution_count": 14, 165 | "outputs": [ 166 | { 167 | "output_type": "display_data", 168 | "data": { 169 | "image/png": "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\n", 170 | "text/plain": [ 171 | "
" 172 | ] 173 | }, 174 | "metadata": { 175 | "tags": [], 176 | "needs_background": "light" 177 | } 178 | } 179 | ] 180 | }, 181 | { 182 | "cell_type": "code", 183 | "metadata": { 184 | "id": "W32GRLv08nwq" 185 | }, 186 | "source": [ 187 | "" 188 | ], 189 | "execution_count": null, 190 | "outputs": [] 191 | } 192 | ] 193 | } -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | import io 2 | import os 3 | import re 4 | 5 | from setuptools import find_packages 6 | from setuptools import setup 7 | 8 | 9 | def read(filename): 10 | filename = os.path.join(os.path.dirname(__file__), filename) 11 | text_type = type(u"") 12 | with io.open(filename, mode="r", encoding='utf-8') as fd: 13 | return re.sub(text_type(r':[a-z]+:`~?(.*?)`'), text_type(r'``\1``'), fd.read()) 14 | 15 | 16 | requirements = [ 17 | 'torch>=1.3.1', 18 | 'torch-dct', 19 | 'numpy>=1.15.4', 20 | 'scipy>=1.1.0', 21 | 'absl-py>=0.1.9', 22 | 'mpmath>=1.1.0', 23 | ] 24 | 25 | requirements_dev = [ 26 | 'Pillow', 27 | 'nose' 28 | ] 29 | 30 | 31 | setup( 32 | name="deep_evidential_regression_loss_pytorch", 33 | version="0.0.1", 34 | url="https://github.com/deebuls/deep_evidential_regression_loss_pytorch", 35 | license='Apache 2.0', 36 | author="Deebul S. Nair", 37 | author_email="deebul.nair@h-brs.de", 38 | description="A Loss function which predicts posterior distribution for regression problems", 39 | long_description=read("README.md"), 40 | #package_dir={'':'deep_evidential_regression_loss_pytorch'}, # Optional 41 | #packages=find_packages(where=('deep_evidential_regression_loss_pytorch'),exclude=('tests',)), 42 | packages=find_packages(exclude=('tests',)), 43 | install_requires=requirements, 44 | extras_require={ 45 | 'dev': requirements_dev 46 | }, 47 | ) 48 | 49 | -------------------------------------------------------------------------------- /tests/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deebuls/deep_evidential_regression_loss_pytorch/373dbd492f47fb063b0aaaa1a62e1fe7328a0812/tests/README.md --------------------------------------------------------------------------------