From 2f898b2a91272624db93eb0c5a25d3f090be40a1 Mon Sep 17 00:00:00 2001 From: Andre Anjos <andre.anjos@idiap.ch> Date: Tue, 14 Jan 2014 14:19:52 +0100 Subject: [PATCH] Activation functor tests are now passing --- xbob/machine/__init__.py | 2 ++ xbob/machine/activation.cpp | 4 ++-- xbob/machine/externals.cpp | 5 ++++- xbob/machine/identity_activation.cpp | 2 +- xbob/machine/linear_activation.cpp | 4 ++-- xbob/machine/logistic_activation.cpp | 2 +- xbob/machine/main.cpp | 16 +++++++++------- xbob/machine/mult_tanh_activation.cpp | 4 ++-- xbob/machine/tanh_activation.cpp | 2 +- 9 files changed, 24 insertions(+), 17 deletions(-) diff --git a/xbob/machine/__init__.py b/xbob/machine/__init__.py index 2f37f43..ead6eb6 100644 --- a/xbob/machine/__init__.py +++ b/xbob/machine/__init__.py @@ -1,4 +1,6 @@ from ._library import * +from ._library import __version__, __api_version__ +from . import _externals #from . import __linear__ #from . import __mlp__ diff --git a/xbob/machine/activation.cpp b/xbob/machine/activation.cpp index 40811f2..7a2ebf7 100644 --- a/xbob/machine/activation.cpp +++ b/xbob/machine/activation.cpp @@ -143,7 +143,7 @@ static PyObject* PyBobMachineActivation_call1(PyBobMachineActivationObject* o, } Py_INCREF(res); - return res; + return PyBlitzArray_NUMPY_WRAP(res); } @@ -220,7 +220,7 @@ static PyObject* PyBobMachineActivation_call2(PyBobMachineActivationObject* o, } Py_INCREF(res); - return reinterpret_cast<PyObject*>(res); + return PyBlitzArray_NUMPY_WRAP(reinterpret_cast<PyObject*>(res)); } diff --git a/xbob/machine/externals.cpp b/xbob/machine/externals.cpp index bd18228..bf8380b 100644 --- a/xbob/machine/externals.cpp +++ b/xbob/machine/externals.cpp @@ -62,6 +62,9 @@ PyMODINIT_FUNC XBOB_EXT_ENTRY_NAME (void) { /* register some constants */ PyModule_AddIntConstant(m, "__api_version__", XBOB_MACHINE_API_VERSION); PyModule_AddStringConstant(m, "__version__", XBOB_EXT_MODULE_VERSION); - PyModule_AddObject(m, "versions", build_version_dictionary()); + + PyObject* dict = build_version_dictionary(); + if (!dict) return; + PyModule_AddObject(m, "versions", dict); } diff --git a/xbob/machine/identity_activation.cpp b/xbob/machine/identity_activation.cpp index ce5849a..c21f748 100644 --- a/xbob/machine/identity_activation.cpp +++ b/xbob/machine/identity_activation.cpp @@ -58,7 +58,7 @@ static void PyBobMachineIdentityActivation_delete PyTypeObject PyBobMachineIdentityActivation_Type = { PyObject_HEAD_INIT(0) 0, /*ob_size*/ - 0, /*tp_name*/ + s_identityactivation_str, /*tp_name*/ sizeof(PyBobMachineIdentityActivationObject), /*tp_basicsize*/ 0, /*tp_itemsize*/ (destructor)PyBobMachineIdentityActivation_delete, /*tp_dealloc*/ diff --git a/xbob/machine/linear_activation.cpp b/xbob/machine/linear_activation.cpp index c2919a8..10c74cc 100644 --- a/xbob/machine/linear_activation.cpp +++ b/xbob/machine/linear_activation.cpp @@ -26,7 +26,7 @@ static int PyBobMachineLinearActivation_init (PyBobMachineLinearActivationObject* self, PyObject* args, PyObject* kwds) { /* Parses input arguments in a single shot */ - static const char* const_kwlist[] = {0}; + static const char* const_kwlist[] = {"C", 0}; static char** kwlist = const_cast<char**>(const_kwlist); double C = 1.0; @@ -87,7 +87,7 @@ static PyGetSetDef PyBobMachineLinearActivation_getseters[] = { PyTypeObject PyBobMachineLinearActivation_Type = { PyObject_HEAD_INIT(0) 0, /*ob_size*/ - 0, /*tp_name*/ + s_linearactivation_str, /*tp_name*/ sizeof(PyBobMachineLinearActivationObject), /*tp_basicsize*/ 0, /*tp_itemsize*/ (destructor)PyBobMachineLinearActivation_delete, /*tp_dealloc*/ diff --git a/xbob/machine/logistic_activation.cpp b/xbob/machine/logistic_activation.cpp index d1ff0df..079af69 100644 --- a/xbob/machine/logistic_activation.cpp +++ b/xbob/machine/logistic_activation.cpp @@ -58,7 +58,7 @@ static void PyBobMachineLogisticActivation_delete PyTypeObject PyBobMachineLogisticActivation_Type = { PyObject_HEAD_INIT(0) 0, /*ob_size*/ - 0, /*tp_name*/ + s_logisticactivation_str, /*tp_name*/ sizeof(PyBobMachineLogisticActivationObject), /*tp_basicsize*/ 0, /*tp_itemsize*/ (destructor)PyBobMachineLogisticActivation_delete, /*tp_dealloc*/ diff --git a/xbob/machine/main.cpp b/xbob/machine/main.cpp index 8730a65..e44da45 100644 --- a/xbob/machine/main.cpp +++ b/xbob/machine/main.cpp @@ -27,21 +27,23 @@ PyMODINIT_FUNC XBOB_EXT_ENTRY_NAME (void) { PyBobMachineActivation_Type.tp_new = PyType_GenericNew; if (PyType_Ready(&PyBobMachineActivation_Type) < 0) return; - PyBobMachineIdentityActivation_Type.tp_new = PyType_GenericNew; + PyBobMachineIdentityActivation_Type.tp_base = &PyBobMachineActivation_Type; if (PyType_Ready(&PyBobMachineIdentityActivation_Type) < 0) return; - PyBobMachineLinearActivation_Type.tp_new = PyType_GenericNew; + PyBobMachineLinearActivation_Type.tp_base = &PyBobMachineActivation_Type; if (PyType_Ready(&PyBobMachineLinearActivation_Type) < 0) return; - PyBobMachineLogisticActivation_Type.tp_new = PyType_GenericNew; + PyBobMachineLogisticActivation_Type.tp_base = &PyBobMachineActivation_Type; if (PyType_Ready(&PyBobMachineLogisticActivation_Type) < 0) return; - PyBobMachineHyperbolicTangentActivation_Type.tp_new = PyType_GenericNew; + PyBobMachineHyperbolicTangentActivation_Type.tp_base = + &PyBobMachineActivation_Type; if (PyType_Ready(&PyBobMachineHyperbolicTangentActivation_Type) < 0) return; - PyBobMachineMultipliedHyperbolicTangentActivation_Type.tp_new = - PyType_GenericNew; - if (PyType_Ready(&PyBobMachineMultipliedHyperbolicTangentActivation_Type) < 0) return; + PyBobMachineMultipliedHyperbolicTangentActivation_Type.tp_base = + &PyBobMachineActivation_Type; + if (PyType_Ready(&PyBobMachineMultipliedHyperbolicTangentActivation_Type) < 0) + return; PyObject* m = Py_InitModule3(XBOB_EXT_MODULE_NAME, library_methods, library_docstr); diff --git a/xbob/machine/mult_tanh_activation.cpp b/xbob/machine/mult_tanh_activation.cpp index c06ada6..ff917af 100644 --- a/xbob/machine/mult_tanh_activation.cpp +++ b/xbob/machine/mult_tanh_activation.cpp @@ -28,7 +28,7 @@ static int PyBobMachineMultipliedHyperbolicTangentActivation_init (PyBobMachineMultipliedHyperbolicTangentActivationObject* self, PyObject* args, PyObject* kwds) { /* Parses input arguments in a single shot */ - static const char* const_kwlist[] = {0}; + static const char* const_kwlist[] = {"C", "M", 0}; static char** kwlist = const_cast<char**>(const_kwlist); double C = 1.0; @@ -113,7 +113,7 @@ static PyGetSetDef PyBobMachineMultipliedHyperbolicTangentActivation_getseters[] PyTypeObject PyBobMachineMultipliedHyperbolicTangentActivation_Type = { PyObject_HEAD_INIT(0) 0, /*ob_size*/ - 0, /*tp_name*/ + s_multtanhactivation_str, /*tp_name*/ sizeof(PyBobMachineMultipliedHyperbolicTangentActivationObject), /*tp_basicsize*/ 0, /*tp_itemsize*/ (destructor)PyBobMachineMultipliedHyperbolicTangentActivation_delete, /*tp_dealloc*/ diff --git a/xbob/machine/tanh_activation.cpp b/xbob/machine/tanh_activation.cpp index 978277e..f121057 100644 --- a/xbob/machine/tanh_activation.cpp +++ b/xbob/machine/tanh_activation.cpp @@ -59,7 +59,7 @@ static void PyBobMachineHyperbolicTangentActivation_delete PyTypeObject PyBobMachineHyperbolicTangentActivation_Type = { PyObject_HEAD_INIT(0) 0, /*ob_size*/ - 0, /*tp_name*/ + s_hyperbolictangentactivation_str, /*tp_name*/ sizeof(PyBobMachineHyperbolicTangentActivationObject), /*tp_basicsize*/ 0, /*tp_itemsize*/ (destructor)PyBobMachineHyperbolicTangentActivation_delete, /*tp_dealloc*/ -- GitLab