update the version number
[ti-machine-learning/ti-machine-learning.git] / src / common / cnn / timlCNNDeleteConvLayer.c
1 /******************************************************************************/\r
2 /*!\r
3  * \file timlCNNDeleteConvLayer.c\r
4  */\r
5 /* Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com/\r
6  *\r
7  * Redistribution and use in source and binary forms, with or without\r
8  * modification, are permitted provided that the following conditions\r
9  * are met:\r
10  *\r
11  *    Redistributions of source code must retain the above copyright\r
12  *    notice, this list of conditions and the following disclaimer.\r
13  *\r
14  *    Redistributions in binary form must reproduce the above copyright\r
15  *    notice, this list of conditions and the following disclaimer in the\r
16  *    documentation and/or other materials provided with the\r
17  *    distribution.\r
18  *\r
19  *    Neither the name of Texas Instruments Incorporated nor the names of\r
20  *    its contributors may be used to endorse or promote products derived\r
21  *    from this software without specific prior written permission.\r
22  *\r
23  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
24  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
25  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\r
26  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\r
27  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r
28  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
29  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
30  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r
31  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
32  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
33  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
34  *\r
35  ******************************************************************************/\r
36 \r
37 \r
38 /*******************************************************************************\r
39  *\r
40  * INCLUDES\r
41  *\r
42  ******************************************************************************/\r
43 \r
44 #include "../api/timl.h"\r
45 \r
46 \r
47 /******************************************************************************/\r
48 /*!\r
49  * \ingroup       cnn\r
50  * \brief         Delete conv layer\r
51  * \param[in]     layer Layer ptr\r
52  * \return        Error code\r
53  */\r
54 /******************************************************************************/\r
55 \r
56 int timlCNNDeleteConvLayer(timlCNNLayer *layer)\r
57 {\r
58    if (layer->allocatorLevel != Util_AllocatorLevel3) {\r
59       if (layer->featureMap != NULL) {\r
60          timlUtilFree(layer->featureMap);\r
61       }\r
62    }\r
63 \r
64    if (layer->convParams.biasMultiplier != NULL) {\r
65       timlUtilFree(layer->convParams.biasMultiplier);\r
66    }\r
67 \r
68    if (layer->delta != NULL) {\r
69       timlUtilFree(layer->delta);\r
70    }\r
71 \r
72    if (layer->convParams.prevFeatureMapReshape != NULL) {\r
73       timlUtilFree(layer->convParams.prevFeatureMapReshape);\r
74    }\r
75 \r
76    if (layer->convParams.shared == false) {\r
77       if (layer->convParams.prevFeatureMapReshapeIndex != NULL) {\r
78          timlUtilFree(layer->convParams.prevFeatureMapReshapeIndex);\r
79       }\r
80       if (layer->convParams.connectivity != NULL) {\r
81          free(layer->convParams.connectivity);\r
82          layer->convParams.connectivity = NULL;\r
83       }\r
84       if (layer->convParams.kernel != NULL) {\r
85          timlUtilFree(layer->convParams.kernel);\r
86       }\r
87       if (layer->convParams.kernelInc != NULL) {\r
88          timlUtilFree(layer->convParams.kernelInc);\r
89       }\r
90       if (layer->convParams.kernelGradAccum != NULL) {\r
91          timlUtilFree(layer->convParams.kernelGradAccum);\r
92       }\r
93       if (layer->convParams.bias != NULL) {\r
94          timlUtilFree(layer->convParams.bias);\r
95       }\r
96       if (layer->convParams.biasInc != NULL) {\r
97          timlUtilFree(layer->convParams.biasInc);\r
98       }\r
99       if (layer->convParams.biasGradAccum != NULL) {\r
100          timlUtilFree(layer->convParams.biasGradAccum);\r
101       }\r
102    }\r
103    free(layer);\r
104 \r
105    return 0;\r
106 \r
107 }\r