简体   繁体   English

使用 tfprobability 拟合 keras model 时出错

[英]Error in fitting a keras model using tfprobability

I'm trying to reproduce the code of this project: https://github.com/casact/rp-bnn-claims我正在尝试重现该项目的代码: https://github.com/casact/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 <listcomp>
        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 suspect that it's related to tensorflow probability package, I'm new in tensorflow and I'll be grateful if you could help me!我怀疑它与 tensorflow 概率 package 有关,我是 tensorflow 的新手,如果你能帮助我,我将不胜感激! Thank you,谢谢,

Update:更新:

I tfb_affine_scalar as it became obsolete due to new version of tensorflow probability: I used tfb_shift()(tfb_scale())由于新版本的 tensorflow 概率,我使用tfb_affine_scalar已过时:我使用tfb_shift()(tfb_scale())

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM