rstudio / tfprobability

R interface to TensorFlow Probability
https://rstudio.github.io/tfprobability/
Other
54 stars 16 forks source link

Error related to tensorflowprobabilty python package #154

Open medamineskou opened 2 years ago

medamineskou commented 2 years ago

Hello, I hope you're all fine ^^

I'm trying to reproduce the code of this project : rp-bnn-claims

I'm having a weird error when I've tried to run this lines :


batch_size <- 100000

model <- make_model(n_rows = dim(train_data_keras$x[[1]])[[1]], 
                    ln_scale_bound = 0.7,
                    scale_c = 0.01)

model %>%
  compile(
    loss = list(cust_loss, cust_loss),
    loss_weights = list(1, 1),
    optimizer = optimizer_sgd(lr = 0.01, clipnorm = 1)
  )

history <- model %>%
  fit(
    x = train_data_keras$x,
    y = unname(train_data_keras$y),
    validation_data = list(validation_data_keras$x, unname(validation_data_keras$y)),
    batch_size = batch_size,
    epochs = 100,
    view_metrics = FALSE,
    verbose = 1,
    callbacks = list(callback_early_stopping(monitor = "val_loss",
                                             patience = 10, 
                                             min_delta = 0.001,
                                             restore_best_weights = FALSE),
                     callback_reduce_lr_on_plateau(factor = 0.5, patience = 5)
    )
  )

The error :

Error in py_call_impl(callable, dots$args, dots$keywords): RuntimeError: in user code:

File "/miniconda/envs/r-reticulate/lib/python3.8/site-packages/keras/engine/training.py", line 878, in train_function return step_function(self, iterator) File "/usr/local/lib/R/site-library/reticulate/python/rpytools/call.py", line 21, in python_function raise RuntimeError(res[kErrorKey])

RuntimeError: Evaluation error: TypeError: bad operand type for unary -: 'NoneType'

Detailed traceback: File "/miniconda/envs/r-reticulate/lib/python3.8/site-packages/tensorflow_probability/python/distributions/distribution.py", line 1316, in log_prob return self._call_log_prob(value, name, kwargs) File "/miniconda/envs/r-reticulate/lib/python3.8/site-packages/tensorflow_probability/python/distributions/distribution.py", line 1298, in _call_log_prob return self._log_prob(value, kwargs) File "/miniconda/envs/r-reticulate/lib/python3.8/site-packages/tensorflow_probability/python/distributions/mixture.py", line 279, in _log_prob distribution_log_probs = [d.log_prob(x) for d in self.components] File "/miniconda/envs/r-reticulate/lib/python3.8/site-packages/tensorflow_probability/python/distributions/mixture.py", line 279, in distribution_log_probs = [d.log_prob(x) for d in self.components] File "/miniconda/envs/r-reticulate/lib/python3.8/site-packages/tensorflow_probability/python/distributions/distribution.py", line 1316, in log_prob return self._call_log_prob(value, name, kwargs) File "/miniconda/envs/r-reticulate/lib/python3.8/site-packages/tensorflow_probability/python/distributions/distribution.py", line 1298, in _call_log_prob return self._log_prob(value, kwargs) File "/miniconda/envs/r-reticulate/lib/python3.8/site-packages/tensorflow_probability/python/distributions/transformed_distribution.py", line 367, in _log_prob ildj = self.bijector.inverse_log_det_jacobian( File "/miniconda/envs/r-reticulate/lib/python3.8/site-packages/tensorflow_probability/python/bijectors/bijector.py", line 1561, in inverse_log_det_jacobian return self._call_inverse_log_det_jacobian(y, event_ndims, name, kwargs) File "/miniconda/envs/r-reticulate/lib/python3.8/site-packages/tensorflow_probability/python/bijectors/composition.py", line 539, in _call_inverse_log_det_jacobian return self._inverse_log_det_jacobian(y, event_ndims, kwargs) File "/miniconda/envs/r-reticulate/lib/python3.8/site-packages/tensorflow_probability/python/bijectors/composition.py", line 552, in _inverse_log_det_jacobian bm.bijector.inverse_log_det_jacobian(bm.x, bm.x_event_ndims, File "/miniconda/envs/r-reticulate/lib/python3.8/site-packages/tensorflow_probability/python/bijectors/bijector.py", line 1561, in inverse_log_det_jacobian return self._call_inverse_log_det_jacobian(y, event_ndims, name, kwargs) File "/miniconda/envs/r-reticulate/lib/python3.8/site-packages/tensorflow_probability/python/bijectors/bijector.py", line 1492, in _call_inverse_log_det_jacobian ildj = attrs['ildj'] = -self._forward_log_det_jacobian(x, kwargs)

I was wondring if it's related to _tf_probability since I see directories that refears to tensorflow_probability_ and if you have an idea how to fix it !

Kindly yours,

anirban-mukherjee commented 2 years ago
  1. Suggest you file an issue with the authors of the code since what you have posted is a fragment of the code and it's unlikely that anyone will download, run, and debug the full code.
  2. Suggest that you try to boil the error down to a minimum working example (smallest replicable example). That will allow people to dig into it. Else, option 1 is your best bet IMO. In what you have posted its not clear what train_data_keras etc. is. For example, why are you doing dim(train_data_keras$x[[1]])[[1]] this and then sending train_data_keras$x to Keras. That looks wrong but I can't tell because I don't know what each object is.