[mlpack-svn] r12735 - mlpack/trunk/src/mlpack/methods/maxip
fastlab-svn at coffeetalk-1.cc.gatech.edu
fastlab-svn at coffeetalk-1.cc.gatech.edu
Sun May 20 13:53:28 EDT 2012
Author: rcurtin
Date: 2012-05-20 13:53:27 -0400 (Sun, 20 May 2012)
New Revision: 12735
Modified:
mlpack/trunk/src/mlpack/methods/maxip/max_ip_main.cpp
Log:
We can do polynomial kernels too.
Modified: mlpack/trunk/src/mlpack/methods/maxip/max_ip_main.cpp
===================================================================
--- mlpack/trunk/src/mlpack/methods/maxip/max_ip_main.cpp 2012-05-20 17:53:20 UTC (rev 12734)
+++ mlpack/trunk/src/mlpack/methods/maxip/max_ip_main.cpp 2012-05-20 17:53:27 UTC (rev 12735)
@@ -6,6 +6,7 @@
*/
#include <mlpack/core.hpp>
#include <mlpack/core/kernels/linear_kernel.hpp>
+#include <mlpack/core/kernels/polynomial_kernel.hpp>1
#include "max_ip.hpp"
@@ -34,6 +35,9 @@
PARAM_STRING("indices_file", "File to save indices of inner products into.",
"i", "");
+PARAM_STRING("kernel", "Kernel type to use: 'linear', 'polynomial'.", "K",
+ "linear");
+
PARAM_FLAG("naive", "If true, O(n^2) naive mode is used for computation.", "N");
PARAM_FLAG("single", "If true, single-tree search is used (as opposed to "
"dual-tree search.", "s");
@@ -50,6 +54,8 @@
const bool naive = CLI::HasParam("naive");
const bool single = CLI::HasParam("single");
+ const string kernelType = CLI::GetParam<string>("kernel");
+
arma::mat referenceData;
arma::mat queryData;
@@ -66,6 +72,13 @@
Log::Fatal << referenceData.n_cols << ")." << endl;
}
+ // Check on kernel type.
+ if ((kernelType != "linear") && (kernelType != "polynomial"))
+ {
+ Log::Fatal << "Invalid kernel type: '" << kernelType << "'; must be ";
+ Log::Fatal << "'linear' or 'polynomial'." << endl;
+ }
+
// Load the query matrix, if we can.
if (CLI::HasParam("query_file"))
{
@@ -94,14 +107,32 @@
// Construct MaxIP object.
if (queryData.n_elem == 0)
{
- MaxIP<LinearKernel> maxip(referenceData, (single && !naive), naive);
- maxip.Search(k, indices, products);
+ if (kernelType == "linear")
+ {
+ MaxIP<LinearKernel> maxip(referenceData, (single && !naive), naive);
+ maxip.Search(k, indices, products);
+ }
+ else if (kernelType == "polynomial")
+ {
+ MaxIP<PolynomialNoOffsetKernel<2> > maxip(referenceData,
+ (single && !naive), naive);
+ maxip.Search(k, indices, products);
+ }
}
else
{
- MaxIP<LinearKernel> maxip(referenceData, queryData, (single && !naive),
- naive);
- maxip.Search(k, indices, products);
+ if (kernelType == "linear")
+ {
+ MaxIP<LinearKernel> maxip(referenceData, queryData, (single && !naive),
+ naive);
+ maxip.Search(k, indices, products);
+ }
+ else if (kernelType == "polynomial")
+ {
+ MaxIP<PolynomialNoOffsetKernel<2> > maxip(referenceData, queryData,
+ (single && !naive), naive);
+ maxip.Search(k, indices, products);
+ }
}
// Save output, if we were asked to.
More information about the mlpack-svn
mailing list