geometric-kernels / GeometricKernels

Geometric kernels on manifolds, meshes and graphs

Home Page:https://geometric-kernels.github.io/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

A problem with datatypes

vabor112 opened this issue · comments

I try to run the following simple code

# Import a backend
import tensorflow
# Import the corresponding geometric_kernels backend
import geometric_kernels.tensorflow
# Import a space and an appropriate kernel
from geometric_kernels.spaces.hypersphere import Hypersphere
from geometric_kernels.kernels.geometric_kernels import MaternKarhunenLoeveKernel

# Create a manifold (2-dim sphere)
hypersphere = Hypersphere(dim=2)

# Generate 3 random points on the sphere
xs = hypersphere.random_point(3)

# Initialize kernel, use 100 terms to approximate the infinite series.
kernel = MaternKarhunenLoeveKernel(hypersphere, 100)
params, state = kernel.init_params_and_state()
params["nu"] = tf.convert_to_tensor(5/2)
params["lengthscale"] = tf.convert_to_tensor(1.)

# Compute and print out the 3x3 kernel matrix.
print(kernel.K(params, state, tf.convert_to_tensor(xs)))

And get InvalidArgumentError: cannot compute AddV2 as input #1(zero-based) was expected to be a float tensor but is a double tensor [Op:AddV2].

Here is the full traceback:

---------------------------------------------------------------------------
InvalidArgumentError                      Traceback (most recent call last)
<ipython-input-12-4a21cbf866ec> in <module>
     20 
     21 # Compute and print out the 3x3 kernel matrix.
---> 22 print(kernel.K(params, state, tf.convert_to_tensor(xs)))

~/.local/lib/python3.8/site-packages/geometric_kernels/kernels/geometric_kernels.py in K(self, params, state, X, X2, **kwargs)
    119         assert "eigenvalues_laplacian" in state
    120 
--> 121         weights = self.eigenvalues(params, state)  # [M, 1]
    122         Phi = state["eigenfunctions"]
    123 

~/.local/lib/python3.8/site-packages/geometric_kernels/kernels/geometric_kernels.py in eigenvalues(self, params, state)
    106 
    107         eigenvalues_laplacian = state["eigenvalues_laplacian"]  # [M, 1]
--> 108         return self._spectrum(
    109             eigenvalues_laplacian ** 0.5,
    110             nu=params["nu"],

~/.local/lib/python3.8/site-packages/geometric_kernels/kernels/geometric_kernels.py in _spectrum(self, s, nu, lengthscale)
     82         elif nu > 0:
     83             power = -nu - self.space.dimension / 2.0
---> 84             base = 2.0 * nu / lengthscale ** 2 + from_numpy(nu, s ** 2)
     85             return base ** power
     86         else:

~/.local/lib/python3.8/site-packages/tensorflow/python/util/traceback_utils.py in error_handler(*args, **kwargs)
    151     except Exception as e:
    152       filtered_tb = _process_traceback_frames(e.__traceback__)
--> 153       raise e.with_traceback(filtered_tb) from None
    154     finally:
    155       del filtered_tb

~/.local/lib/python3.8/site-packages/tensorflow/python/framework/ops.py in raise_from_not_ok_status(e, name)
   7184 def raise_from_not_ok_status(e, name):
   7185   e.message += (" name: " + name if name is not None else "")
-> 7186   raise core._status_to_exception(e) from None  # pylint: disable=protected-access
   7187 
   7188 

InvalidArgumentError: cannot compute AddV2 as input #1(zero-based) was expected to be a float tensor but is a double tensor [Op:AddV2]

Thanks for the issue! I close it as fixed with PR #35.