<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def set_input(self, input_names, input_dims):
 """ Set the inputs of the network spec. Parameters input_names: [str] List of input names of the network. input_dims: [tuple] List of input dimensions of the network. The ordering of input_dims is the same as input_names. Examples -------- .. sourcecode:: python # Set the neural network spec inputs to be 3 dimensional vector data1 and # 4 dimensional vector data2. See Also -------- set_output, set_class_labels """

        spec = self.spec
        nn_spec = self.nn_spec
        for idx, dim in enumerate(input_dims):
            if len(dim) == 3:
                input_shape = (dim[0], dim[1], dim[2])
            elif len(dim) == 2:
                input_shape = (dim[1], )
            elif len(dim) == 1:
                input_shape = tuple(dim)
            else:
                raise RuntimeError("Attempting to add a neural network " +
                        "input with rank " + str(len(dim)) +
                        ". All networks should take inputs of rank 1 or 3.")

            spec.description.input[idx].type.multiArrayType.ClearField("shape")
            spec.description.input[idx].type.multiArrayType.shape.extend(input_shape)

            # TODO: if it's an embedding, this should be integer
            spec.description.input[idx].type.multiArrayType.dataType = _Model_pb2.ArrayFeatureType.DOUBLE