示例#1
0
    def __init__(self, transformer, op):
        super(DimShuffleKernel, self).__init__(transformer)

        if isinstance(op, DimshuffleOp):
            out = TensorDescriptionWrapper(self.transformer,
                                           op.tensor_description())
            (arg, ) = (_ for _ in op.call_info())
            in_tensor = TensorDescriptionWrapper(self.transformer,
                                                 arg,
                                                 ignore_layout=True)

            # Reshape the tensors in place with dimshuffle views
            in_tensor.shape = tuple(op.in_view.shape)
            in_tensor.strides = tuple(op.in_view.strides)
            out.shape = tuple(op.out_view.shape)
            out.strides = tuple(op.out_view.strides)

            dtype = out.dtype
            shape = in_tensor.shape
            axes = op.axis_order
        elif isinstance(op, AssignOp):
            (larg, rarg) = (_ for _ in op.call_info())
            out = TensorDescriptionWrapper(self.transformer, larg)
            in_tensor = TensorDescriptionWrapper(self.transformer, rarg)

            dtype = out.dtype
            shape = in_tensor.shape
            axes = tuple(range(len(shape)))

        self.kernel, self.params = get_dimshuffle(dtype, shape, axes,
                                                  in_tensor, out)
示例#2
0
    def __init__(self, transformer, op):
        super(DimShuffleKernel, self).__init__(transformer)

        out = TensorDescriptionWrapper(op.tensor_description())
        (arg, ) = (_ for _ in op.call_info())
        in_tensor = TensorDescriptionWrapper(arg, ignore_layout=True)

        # Reshape the tensors in place with dimshuffle views
        in_tensor.shape = tuple(op.in_view.shape)
        in_tensor.strides = tuple(op.in_view.strides)
        out.shape = tuple(op.out_view.shape)
        out.strides = tuple(op.out_view.strides)

        dtype = out.dtype
        shape = in_tensor.shape
        axes = op.axis_order

        self.kernel, self.params = get_dimshuffle(dtype, shape, axes,
                                                  in_tensor, out)