Home | Develop | Download | Contact
example_matrix_dsp.cpp
1
75#include <Pds/Ra>
76
77int main(void)
78{
79 Pds::Matrix Ans;
80
81 Pds::Matrix Kernel( "-2 -1 2\n"
82 "-1 2 -1\n"
83 " 1 0 1");
84 Kernel.Print("Kernel:\n");
85
86 Pds::Matrix A( "-1 1 -1 -1\n"
87 " 1 1 1 -1\n"
88 " 1 -1 1 -1\n"
89 " 1 -1 -1 -1");
90 A.Print("A:\n");
91
92 Ans=A.Conv2D(Kernel,{1,2},Pds::Ra::Full);
93 Ans.Print("\nA.Conv2D(Kernel,{1,2},Pds::Ra::Full):\n");
94 std::cout<<"Size: "<<Pds::Matrix::Conv2DOutputSize(A.Size(),Kernel.Size(),{1,2},Pds::Ra::Full)<<"\n";
95
96 Ans=A.Conv2D(Kernel,{1,2},Pds::Ra::Same);
97 Ans.Print("\nA.Conv2D(Kernel,{1,2},Pds::Ra::Same):\n");
98 std::cout<<"Size: "<<Pds::Matrix::Conv2DOutputSize(A.Size(),Kernel.Size(),{1,2},Pds::Ra::Same)<<"\n";
99
100 Ans=A.Conv2D(Kernel,{1,2},Pds::Ra::Valid);
101 Ans.Print("\nA.Conv2D(Kernel,{1,2},Pds::Ra::Valid):\n");
102 std::cout<<"Size: "<<Pds::Matrix::Conv2DOutputSize(A.Size(),Kernel.Size(),{1,2},Pds::Ra::Valid)<<"\n";
103
104 Ans=Pds::Conv2DCh({A,A},{Kernel,Kernel},{1,1},Pds::Ra::Same);
105 Ans.Print("\nPds::Conv2DCh({A},{Kernel},{1,1},Pds::Ra::Valid):\n");
106
107 Pds::Matrix B=Pds::RandN(7,7);
108 B.Print("B:\n");
109 B.MaxPooling(3,3).Print("B.MaxPooling(3,3):\n");
110
111 Pds::SampleBlock Block;
112 Block=Pds::Matrix::MaxPoolingSampleBlock({B,B},3,3);
113 Block[0].Print("Block[0]:\n");
114 Block[1].Print("Block[1]:\n");
115
116 return 0;
117}
La clase tipo Pds::Matrix . Esta clase genera una matriz de Nlin lineas y Ncol columnas....
Definition: Matrix.hpp:96
Pds::Matrix RandN(unsigned int N)
Crea una matriz con datos aleatórios con distribución Normal de media cero 0.0 y desvío padrón 1....
Pds::Matrix Conv2DCh(const std::vector< Pds::Matrix > &A, const std::vector< Pds::Matrix > &Kernel, const std::vector< unsigned int > &Strides={1, 1}, Pds::Ra::Padding Padding=Pds::Ra::Valid)
Calcula la convolución de todos los canales entre A y Kernel.
Pds::Matrix MaxPooling(unsigned int LinPool, unsigned int ColPool) const
Aplica max pooling de la matriz de lineas y columnas.
Pds::Matrix Conv2D(const Pds::Matrix &B, const std::vector< unsigned int > &Strides={1, 1}, Pds::Ra::Padding Padding=Pds::Ra::Full) const
Calcula la convolución entre A y B.
static std::vector< Pds::Matrix > MaxPoolingSampleBlock(const std::vector< Pds::Matrix > &A, unsigned int LinPool, unsigned int ColPool)
Aplica max pooling a cada matriz de lineas y columnas.
static Pds::Size Conv2DOutputSize(const Pds::Size &A, const Pds::Size &B, const std::vector< unsigned int > &Strides, Pds::Ra::Padding Padding)
Calcula el tamaño de la matriz resultado de la convolucion de A y B.
std::vector< Pds::Matrix > SampleBlock
Definición de un tipo de dato Pds::SampleBlock.
Definition: Matrix.hpp:8147
void Print(const std::string &str, unsigned int precision) const
Imprime en pantalla el contenido de la matriz después del texto indicado en str.

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed