Skip to main content
Help the Python Software Foundation raise $60,000 USD by December 31st!  Building the PSF Q4 Fundraiser

A package with Tensorflow (both CPU and GPU) implementation of most popular Kernels for kernels methods (SVM, MKL...).

Project description



A package with Tensorflow (both CPU and GPU) implementation of most popular Kernels for kernels methods (SVM, MKL...).

Those kernels works with tensor as inputs.

The main idea of this project is to exploit the powerfull of GPUs and modern CPUs on matrix and kernels elaborations. Actually the implemented kernels are:

  • Linear
  • RBF
  • Polynomial
  • CosineSimilarity
  • Fourier
  • Spline

Attention: Due to the GPUs usage the precision of decimal numbers may be different, and hence, the results may be slightly differs as well

Attention 2: Due to exploit the power of GPUs it's strongly recommended to work with float32 or even in half precision float16.


A simple example with PolynomialKernel

import numpy as np
import tensorflow as tf
from kernels.polynomial_kernel import PolynomialKernel
from kernels import array_to_tensor, tensor_to_array

n = 2000
p = 1000
a = np.random.random((n, p)).astype(np.float32)
b = np.random.random((n, p)).astype(np.float32)

x = array_to_tensor(a, dtype=tf.float32)
y = array_to_tensor(b, dtype=tf.float32)

poly = PolynomialKernel(scale=1, bias=0, degree=4)
kernel = poly.compute(x, y)

print(tensor_to_array(kernel, dtype=np.float32))

A simple example with PSpectrumKernel. Attention: PSpectrum is still experimental and it exploits eager computation in order to work properly. Furthermore it maybe won't works with Tensorflow 2.0 since some packages have been removed.

Attention 2: Due to the usage of the type tf.string computation will be shared between GPUs and CPUs.

Attention 3: This kernel return tensor with type tf.int64.

import numpy as np
import tensorflow as tf
from kernels.experimental.p_spectrum_kernel import PSpectrumKernel
from kernels import array_to_tensor, tensor_to_array

a = np.array(['aaaaaaaa','bbbbbbb','ccccc','aaaaaaa','cccccc','bbbbbb'])
b = np.array(['aaaaaaaa','bbbbbbb','aaaaaaa','cccccc'])

x = array_to_tensor(a, dtype=tf.string)
y = array_to_tensor(b, dtype=tf.string)

p_spectrum = PSpectrumKernel(p=3)

kernel = p_spectrum.compute(x, y)

print(tensor_to_array(kernel, dtype=np.float32))


The idea was born by using methods available here:

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for tensorflow-kernels, version 0.1.2
Filename, size File type Python version Upload date Hashes
Filename, size tensorflow_kernels-0.1.2-py2-none-any.whl (14.2 kB) File type Wheel Python version py2 Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page