예제 #1
0
        // Матрицей считается размерности h, d. Вектором d
        // Первый аргумент -- матрица весов, батч во втором
        public static Tensor4 <T> MultAsMatrix(Tensor4 <T> A, Tensor4 <T> B)
        {
            Tensor4 <T> result = new Tensor4 <T>(A.W, B.H, A.D, B.BS);

            for (int i = 0; i < B.BS; i++)
            {
                for (int j = 0; j < B.H; j++)
                {
                    for (int k = 0; k < A.D; k++)
                    {
                        for (int z = 0; z < A.H; z++)
                        {
                            result[0, j, k, i] += (A[0, z, k, i] as dynamic) * (B[0, j, z, i] as dynamic);
                        }
                    }
                }
            }

            return(result);
        }
예제 #2
0
        public static Tensor4 <T> operator/(Tensor4 <T> B, dynamic A)
        {
            Tensor4 <T> newTen = new Tensor4 <T>(A.W, A.H, A.D, A.BS);

            for (int i = 0; i < A.W; i++)
            {
                for (int j = 0; j < A.H; j++)
                {
                    for (int k = 0; k < A.D; k++)
                    {
                        for (int z = 0; z < A.BS; z++)
                        {
                            newTen[i, j, k, z] = (B[i, j, k, z] as dynamic) / A;
                        }
                    }
                }
            }

            return(newTen);
        }
예제 #3
0
 // Сама функция может быть запараллелина, но параллелизация вдоль bs недопустима,
 // т.к. собьются метки классов
 public static Tensor4 <T> ConvolutionalLayerForward(Tensor4 <T> map, Tensor4 <T> feature)
 {
     throw new NotImplementedException();
 }