35 #ifndef SHARK_MODELS_KERNELS_PRODUCTKERNEL_H 36 #define SHARK_MODELS_KERNELS_PRODUCTKERNEL_H 59 template<
class InputType>
94 for(std::size_t i = 0; i != kernels.size(); ++i)
100 {
return "ProductKernel"; }
132 double eval(ConstInputReference x1, ConstInputReference x2)
const{
134 for (std::size_t i=0; i<
m_kernels.size(); i++)
139 void eval(ConstBatchInputReference batchX1, ConstBatchInputReference batchX2, RealMatrix& result)
const{
144 m_kernels[0]->eval(batchX1,batchX2,result);
146 RealMatrix kernelResult(sizeX1,sizeX2);
147 for(std::size_t i = 1; i !=
m_kernels.size(); ++i){
148 m_kernels[i]->eval(batchX1,batchX2,kernelResult);
149 noalias(result) *= kernelResult;
153 void eval(ConstBatchInputReference batchX1, ConstBatchInputReference batchX2, RealMatrix& result,
State& state)
const{
154 eval(batchX1,batchX2,result);
159 for(std::size_t i = 0;i !=
m_kernels.size(); ++i ){
167 for(std::size_t i = 0;i !=
m_kernels.size(); ++i ){
168 ar << const_cast<AbstractKernelFunction<InputType>
const&>(*
m_kernels[i]);