diff --git a/cmake/external/python.cmake b/cmake/external/python.cmake index fc66d6b2154b73d8f6a259ecfa55c7ef5ce999fa..f4d0daab06c9fcf17f4af59c25f62b415074a52f 100644 --- a/cmake/external/python.cmake +++ b/cmake/external/python.cmake @@ -16,11 +16,13 @@ INCLUDE(ExternalProject) INCLUDE(python_module) FIND_PACKAGE(PythonInterp 2.7) -FIND_PACKAGE(PythonLibs 2.7) +IF(WITH_PYTHON) + FIND_PACKAGE(PythonLibs 2.7) +ENDIF(WITH_PYTHON) SET(py_env "") SET(USE_VIRTUALENV_FOR_TEST 1) -IF(PYTHONLIBS_FOUND AND PYTHONINTERP_FOUND) +IF(PYTHONINTERP_FOUND) find_python_module(pip REQUIRED) find_python_module(numpy REQUIRED) find_python_module(wheel REQUIRED) @@ -30,7 +32,7 @@ IF(PYTHONLIBS_FOUND AND PYTHONINTERP_FOUND) MESSAGE(FATAL_ERROR "Found Python Protobuf ${PY_GOOGLE.PROTOBUF_VERSION} < 3.0.0, " "please use pip to upgrade protobuf. pip install -U protobuf") ENDIF() -ELSE(PYTHONLIBS_FOUND AND PYTHONINTERP_FOUND) +ELSE(PYTHONINTERP_FOUND) MESSAGE(FATAL_ERROR "Please install python 2.7 before building PaddlePaddle.") ##################################### PYTHON ######################################## SET(PYTHON_SOURCES_DIR ${THIRD_PARTY_PATH}/python) @@ -217,7 +219,7 @@ ELSE(PYTHONLIBS_FOUND AND PYTHONINTERP_FOUND) LIST(APPEND external_project_dependencies python setuptools six cython wheel python-protobuf numpy) -ENDIF(PYTHONLIBS_FOUND AND PYTHONINTERP_FOUND) +ENDIF(PYTHONINTERP_FOUND) IF(WITH_PYTHON) INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_DIR}) diff --git a/python/paddle/v2/config_base.py b/python/paddle/v2/config_base.py index b0e8da563e0d65d534d3f224fe5f1c39a67eeb54..acda778e0aee1a8339ad6bd0d719868151d4fabe 100644 --- a/python/paddle/v2/config_base.py +++ b/python/paddle/v2/config_base.py @@ -16,6 +16,7 @@ import collections import re from paddle.trainer_config_helpers.default_decorators import wrap_name_default import paddle.trainer_config_helpers as conf_helps +from topology import Topology class LayerType(type): @@ -161,6 +162,10 @@ class Layer(object): """ return self.__context__[self.context_name()].size + def attr(self): + topo = Topology(self) + return topo.get_layer_proto(self.name) + def __convert_to_v2__(method_name, parent_names, diff --git a/python/paddle/v2/topology.py b/python/paddle/v2/topology.py index ff28c85c53dc8255b6ad5e3975b07f72a9a64e4b..1e46e4973f467a017de3d2b45186690af16dd123 100644 --- a/python/paddle/v2/topology.py +++ b/python/paddle/v2/topology.py @@ -130,6 +130,12 @@ class Topology(object): return [(nm, data_layers[nm].type) for nm in self.proto().input_layer_names] + def get_layer_proto(self, name): + for layer in self.__model_config__.layers: + if layer.name == name: + return layer + return None + def __check_layer_type__(layer): if not isinstance(layer, v2_layer.LayerV2):