Right now if the user forgets to specify the input space of the outermost MLP they will not get an error message until some other method causes an AttributeError. I think the right way to fix this is to make input_space a python property. The getter method for the property should check if _input_space has been defined. If not, it raises an error explaining that the constructor wasn't provided with an input space and that nothing else has happened to give it one. The setter can assign to _input_space.