/// <summary>四元数3次元カーネル積</summary>
        public static VariableNode QuaternionKernelProduct3D(VariableNode x, VariableNode y, int kwidth, int kheight, int kdepth, int stride, bool transpose = false)
        {
            Function function =
                new Functions.QuaternionConvolution.QuaternionKernelProduct3D(x.Shape, y.Shape, kwidth, kheight, kdepth, stride, transpose);

            VariableNode w = Apply(function, x, y)[0];

            return(w);
        }
        /// <summary>四元数3次元カーネル積</summary>
        public static Tensor QuaternionKernelProduct3D(Tensor x, Tensor y, int kwidth, int kheight, int kdepth, int stride, bool transpose = false)
        {
            Functions.QuaternionConvolution.QuaternionKernelProduct3D function =
                new Functions.QuaternionConvolution.QuaternionKernelProduct3D(x.Shape, y.Shape, kwidth, kheight, kdepth, stride, transpose);

            Tensor w = new Tensor(function.OutShape);

            function.Execute(new Tensor[] { x, y }, new Tensor[] { w });

            return(w);
        }