/// <summary>3次元ベクトル2次元畳み込み</summary>
        public static VariableNode TrivectorConvolution2D(VariableNode x, VariableNode w, int stride, bool gradmode = false)
        {
            Function function =
                new Functions.TrivectorConvolution.TrivectorConvolution2D(x.Shape, w.Shape, stride, gradmode);

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

            return(y);
        }
        /// <summary>3次元ベクトル2次元畳み込み</summary>
        public static Tensor TrivectorConvolution2D(Tensor x, Tensor w, int stride, bool gradmode = false)
        {
            Functions.TrivectorConvolution.TrivectorConvolution2D function =
                new Functions.TrivectorConvolution.TrivectorConvolution2D(x.Shape, w.Shape, stride, gradmode);

            Tensor y = new Tensor(function.OutShape);

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

            return(y);
        }