From a5dca8d185ebe009024b628329306439ca28c80e Mon Sep 17 00:00:00 2001 From: Baozeng Ding Date: Fri, 29 Jul 2011 21:21:33 +0800 Subject: [PATCH 1/3] add kernel_linear_byte/word_modular --- .../kernel_linear_byte_modular.rb | 29 ++++++++++++++++++ .../kernel_linear_word_modular.rb | 30 +++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 examples/undocumented/ruby_modular/kernel_linear_byte_modular.rb create mode 100644 examples/undocumented/ruby_modular/kernel_linear_word_modular.rb diff --git a/examples/undocumented/ruby_modular/kernel_linear_byte_modular.rb b/examples/undocumented/ruby_modular/kernel_linear_byte_modular.rb new file mode 100644 index 00000000000..1906338a39b --- /dev/null +++ b/examples/undocumented/ruby_modular/kernel_linear_byte_modular.rb @@ -0,0 +1,29 @@ +require 'narray' +require 'modshogun' +require 'load' +require 'pp' + +traindat = LoadMatrix.load_numbers('../data/fm_train_byte.dat') +testdat = LoadMatrix.load_numbers('../data/fm_test_byte.dat') + +parameter_list=[[traindat,testdat],[traindat,testdat]] + +def kernel_linear_byte_modular(fm_train_byte=traindat,fm_test_byte=testdat) + pp fm_train_byte + feats_train=Modshogun::ByteFeatures.new(fm_train_byte) + feats_test=Modshogun::ByteFeatures.new(fm_test_byte) + + kernel=Modshogun::LinearKernel.new(feats_train, feats_train) + km_train=kernel.get_kernel_matrix() + + kernel.init(feats_train, feats_test) + km_test=kernel.get_kernel_matrix() + pp " km_train", km_train + pp " km_test", km_test + return kernel +end + +if __FILE__ == $0 + print 'LinearByte' + kernel_linear_byte_modular(*parameter_list[0]) +end diff --git a/examples/undocumented/ruby_modular/kernel_linear_word_modular.rb b/examples/undocumented/ruby_modular/kernel_linear_word_modular.rb new file mode 100644 index 00000000000..a39cf916ec4 --- /dev/null +++ b/examples/undocumented/ruby_modular/kernel_linear_word_modular.rb @@ -0,0 +1,30 @@ +require 'narray' +require 'modshogun' +require 'load' +require 'pp' + +traindat = LoadMatrix.load_numbers('../data/fm_train_word.dat') +testdat = LoadMatrix.load_numbers('../data/fm_test_word.dat') + +parameter_list=[[traindat,testdat,1.2],[traindat,testdat,1.2]] + +def kernel_linear_word_modular(fm_train_word=traindat,fm_test_word=testdat,scale=1.2) + feats_train=Modshogun::WordFeatures.new(fm_train_word) + feats_test=Modshogun::WordFeatures.new(fm_test_word) + + kernel=Modshogun::LinearKernel.new(feats_train, feats_train) + kernel.set_normalizer(Modshogun::AvgDiagKernelNormalizer.new(scale)) + kernel.init(feats_train, feats_train) + + km_train=kernel.get_kernel_matrix() + kernel.init(feats_train, feats_test) + km_test=kernel.get_kernel_matrix() + pp " km_train", km_train + pp " km_test", km_test + return kernel +end + +if __FILE__ == $0 + print 'LinearWord' + kernel_linear_word_modular(*parameter_list[0]) +end From b8ead091b199f10c36dbd9accfa6e184cb79fa15 Mon Sep 17 00:00:00 2001 From: Baozeng Ding Date: Wed, 3 Aug 2011 16:40:29 +0800 Subject: [PATCH 2/3] support C# SGVector --- src/interfaces/csharp_modular/swig_typemaps.i | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/interfaces/csharp_modular/swig_typemaps.i b/src/interfaces/csharp_modular/swig_typemaps.i index 3b1f04821a6..f24ecef0f7f 100644 --- a/src/interfaces/csharp_modular/swig_typemaps.i +++ b/src/interfaces/csharp_modular/swig_typemaps.i @@ -1,4 +1,3 @@ - /* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -9,22 +8,24 @@ * Based upon code by Baozeng Ding for the modular java interface * */ -/* + %define TYPEMAP_SGVECTOR(SGTYPE, CTYPE, CSHARPTYPE) %typemap(ctype) shogun::SGVector %{CTYPE*%} // ctype is the C# equivalent of the javatypemap jni -%typemap(imtype) shogun::SGVector %{CSHARPTYPE[]%} // imtype is the C# equivalent of the java typemap jtype +%typemap(imtype, inattributes="[MarshalAs(UnmanagedType.LPArray)]", outattributes="[MarshalAs(UnmanagedType.LPArray)]") shogun::SGVector %{CSHARPTYPE[]%} // imtype is the C# equivalent of the java typemap jtype %typemap(cstype) shogun::SGVector %{CSHARPTYPE[]%} // cstype is the C# equivalent of the java typemap cstype %typemap(in) shogun::SGVector (CTYPE *jarr) { int32_t i, len; SGTYPE *array; + if (!$input) { SWIG_CSharpSetPendingException(SWIG_CSharpNullReferenceException, "null array"); return $null; } - - len = ((sizeof($input)) / (sizeof($input[0]))); + jarr = (CTYPE *)$input; + len = ((sizeof($input)) / (sizeof($input[0]))); + printf("the len is %d\n", len); array = SG_MALLOC(SGTYPE, len); @@ -55,19 +56,21 @@ $result = res; } + +%typemap(csin) shogun::SGVector "$csinput" %enddef TYPEMAP_SGVECTOR(bool, bool, bool) -TYPEMAP_SGVECTOR(char, char, char) -TYPEMAP_SGVECTOR(uint8_t, uint8_t, byte) +TYPEMAP_SGVECTOR(char, signed char, sbyte) +TYPEMAP_SGVECTOR(uint8_t, unsigned char, byte) TYPEMAP_SGVECTOR(int16_t, short, short) -TYPEMAP_SGVECTOR(uint16_t, ushort, ushort) +TYPEMAP_SGVECTOR(uint16_t, unsigned short, ushort) TYPEMAP_SGVECTOR(int32_t, int, int) -TYPEMAP_SGVECTOR(uint32_t, uint, uint) -TYPEMAP_SGVECTOR(int64_t, int64_t, long) -TYPEMAP_SGVECTOR(uint64_t, uint64_t, ulong) -TYPEMAP_SGVECTOR(long long, long, long long) +TYPEMAP_SGVECTOR(uint32_t, unsigned int, uint) +TYPEMAP_SGVECTOR(int64_t, long, int) +TYPEMAP_SGVECTOR(uint64_t, unsigned long, ulong) +TYPEMAP_SGVECTOR(long long, long long, long) TYPEMAP_SGVECTOR(float32_t, float, float) TYPEMAP_SGVECTOR(float64_t, double, double) @@ -79,7 +82,7 @@ TYPEMAP_SGVECTOR(float64_t, double, double) ///////////////////////////////// SGMATRIX Typemaps - Begin //////////////////////////////////////// -%define TYPEMAP_SGMATRIX(SGTYPE, CTYPE, CSHARPTYPE) +/*%define TYPEMAP_SGMATRIX(SGTYPE, CTYPE, CSHARPTYPE) %typemap(ctype) shogun::SGMatrix %{CSHARPTYPE**%} // CTYPE %typemap(imtype) shogun::SGMatrix %{CSHARPTYPE[][]%} @@ -180,6 +183,5 @@ TYPEMAP_SGMATRIX(long long, long, long long) TYPEMAP_SGMATRIX(float32_t, float, float) TYPEMAP_SGMATRIX(float64_t, double, double) -#undef TYPEMAP_SGMATRIX +#undef TYPEMAP_SGMATRIX*/ ///////////////////////////////// SGMATRIX Typemaps - End ////////////////////////////////////////// -*/ From a8175a35879a120d4de11b859d5ec56d9c1ce883 Mon Sep 17 00:00:00 2001 From: Baozeng Ding Date: Wed, 3 Aug 2011 16:41:15 +0800 Subject: [PATCH 3/3] add VectorTest example --- .../undocumented/csharp_modular/VectorTest.cs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 examples/undocumented/csharp_modular/VectorTest.cs diff --git a/examples/undocumented/csharp_modular/VectorTest.cs b/examples/undocumented/csharp_modular/VectorTest.cs new file mode 100644 index 00000000000..5138c09f842 --- /dev/null +++ b/examples/undocumented/csharp_modular/VectorTest.cs @@ -0,0 +1,18 @@ +using System; + +public class VectorTest +{ + public static void Main(string[] args) { + modshogun.init_shogun_with_defaults(); + + double[] y = new double[4] {1, 2, 3, 4}; + Labels x = new Labels(y); + double[] r = x.get_labels(); + for (int i = 0; i < r.Length; i++) { + Console.WriteLine(r[i]); + } + + modshogun.exit_shogun(); + + } +}