A computer implemented method, the method comprising: defining a computational cell of a neural network, wherein the computational cell comprises a directed graph of nodes and edges, each node representing a respective neural network latent representation and each edge representing a respective operation that transforms a respective neural network latent representation; replacing each operation that transforms a respective neural network latent representation with a respective linear combination of candidate operations from a predefined set of candidate operations, wherein each candidate operation in a respective linear combination has a respective mixing weight that is parameterized by one or more computational cell hyper parameters; iteratively adjusting values of i) the computational cell hyper parameters, and ii) computational cell weights, to optimize a validation loss function subject to one or more computational resource constraints, whereas a respective cost function is defined for each of the one or more computational resource constraints, wherein each defined cost function maps the computational cell hyper parameters to a respective resource cost, the adjustment comprising, for each iteration: performing an unconstrained optimization of the validation loss function to update values of the computational cell hyper parameters for a previous iteration and to obtain adjusted values of the computational cell weights; and projecting the updated values of the computational cell hyper parameters to a nearest point in a feasible set, the feasible set being defined by the one or more resource constraints to obtain adjusted values of the computational cell hyper parameters, wherein the one or more computational resource constraints comprise user defined constraints on one or more of the amount of available memory and the number of float point operations of a computational device implementing the neural network; and generating a neural network for performing a machine learning task, whereas the generation is performed by using the defined computational cell and the adjusted values of the computational cell hyper parameters and computational cell weights. defining a computational cell of a neural network, wherein the computational cell comprises a directed graph of nodes and edges, each node representing a respective neural network latent representation and each edge representing a respective operation that transforms a respective neural network latent representation; replacing each operation that transforms a respective neural network latent representation with a respective linear combination of candidate operations from a predefined set of candidate operations, wherein each candidate operation in a respective linear combination has a respective mixing weight that is parameterized by one or more computational cell hyper parameters; iteratively adjusting values of i) the computational cell hyper parameters, and ii) computational cell weights, to optimize a validation loss function subject to one or more computational resource constraints, whereas a respective cost function is defined for each of the one or more computational resource constraints, wherein each defined cost function maps the computational cell hyper parameters to a respective resource cost, the adjustment comprising, for each iteration: performing an unconstrained optimization of the validation loss function to update values of the computational cell hyper parameters for a previous iteration and to obtain adjusted values of the computational cell weights; and projecting the updated values of the computational cell hyper parameters to a nearest point in a feasible set, the feasible set being defined by the one or more resource constraints to obtain adjusted values of the computational cell hyper parameters, wherein the one or more computational resource constraints comprise user defined constraints on one or more of the amount of available memory and the number of float point operations of a computational device implementing the neural network; and performing an unconstrained optimization of the validation loss function to update values of the computational cell hyper parameters for a previous iteration and to obtain adjusted values of the computational cell weights; and projecting the updated values of the computational cell hyper parameters to a nearest point in a feasible set, the feasible set being defined by the one or more resource constraints to obtain adjusted values of the computational cell hyper parameters, wherein the one or more computational resource constraints comprise user defined constraints on one or more of the amount of available memory and the number of float point operations of a computational device implementing the neural network; and generating a neural network for performing a machine learning task, whereas the generation is performed by using the defined computational cell and the adjusted values of the computational cell hyper parameters and computational cell weights.