def make_node(self, *inputs):
        inputs = list(map(T.as_tensor_variable, inputs))
        if (not all(a.type == inputs[0].type for a in inputs) or
                (len(inputs) > 0 and inputs[0].dtype != self.dtype)):
            dtype = theano.scalar.upcast(self.dtype, *[i.dtype for i in inputs])
            # upcast the input to the determined dtype,
            # but don't downcast anything
            assert dtype == self.dtype, (
                "The upcast of the inputs to MakeVector should match the "
                "dtype given in __init__.")
            if not all(self.dtype == T.cast(i, dtype=dtype).dtype
                       for i in inputs):
                raise TypeError("MakeVector.make_node expected inputs"
                                " upcastable to %s. got %s" %
                                (self.dtype, str([i.dtype for i in inputs])))
            inputs = [T.cast(i, dtype=dtype) for i in inputs]
        assert all(self.dtype == a.dtype for a in inputs)
        assert all(a.ndim == 0 for a in inputs)

        if inputs:
            dtype = inputs[0].type.dtype
        else:
            dtype = self.dtype
        # bcastable = (len(inputs) == 1)
        bcastable = False
        otype = T.TensorType(broadcastable=(bcastable,), dtype=dtype)
        return T.Apply(self, inputs, [otype()])
dataset/ETHPy150Open rizar/attention-lvcsr/libs/Theano/theano/tensor/opt.py/MakeVector.make_node/original