ruta icon indicating copy to clipboard operation
ruta copied to clipboard

Variational autoencoder is broken

Open fdavidcl opened this issue 2 years ago • 0 comments

Variational autoencoder tutorial gives the following error when it's run:

stop(structure(list(message = "TypeError: in user code:\n\n File \"/home/david/.local/share/r-miniconda/envs/r-reticulate/lib/python3.8/site-packages/keras/engine/training.py\", line 1021, in train_function *\n return step_function(self, iterator)\n File \"/home/david/.local/share/r-miniconda/envs/r-reticulate/lib/python3.8/site-packages/keras/engine/training.py\", line 1010, in step_function **\n outputs = model.distribute_strategy.run(run_step, args=(data,))\n File \"/home/david/.local/share/r-miniconda/envs/r-reticulate/lib/python3.8/site-packages/keras/engine/training.py\", line 1000, in run_step **\n outputs = model.train_step(data)\n File \"/home/david/.local/share/r-miniconda/envs/r-reticulate/lib/python3.8/site-packages/keras/engine/training.py\", line 860, in train_step\n loss = self.compute_loss(x, y, y_pred, sample_weight)\n File \"/home/david/.local/share/r-miniconda/envs/r-reticulate/lib/python3.8/site-packages/keras/engine/training.py\", line 918, in compute_loss\n return self.compiled_loss(\n File \"/home/david/.local/share/r-miniconda/envs/r-reticulate/lib/python3.8/site-packages/keras/engine/compile_utils.py\", line 239, in __call__\n self._loss_metric.update_state(\n File \"/home/david/.local/share/r-miniconda/envs/r-reticulate/lib/python3.8/site-packages/keras/utils/metrics_utils.py\", line 70, in decorated\n update_op = update_state_fn(*args, **kwargs)\n File \"/home/david/.local/share/r-miniconda/envs/r-reticulate/lib/python3.8/site-packages/keras/metrics.py\", line 178, in update_state_fn\n return ag_update_state(*args, **kwargs)\n File \"/home/david/.local/share/r-miniconda/envs/r-reticulate/lib/python3.8/site-packages/keras/metrics.py\", line 455, in update_state **\n sample_weight = tf.__internal__.ops.broadcast_weights(\n File \"/home/david/.local/share/r-miniconda/envs/r-reticulate/lib/python3.8/site-packages/keras/engine/keras_tensor.py\", line 254, in __array__\n raise TypeError(\n\n TypeError: You are passing KerasTensor(type_spec=TensorSpec(shape=(), dtype=tf.float32, name=None), name='Placeholder:0', description=\"created by layer 'tf.cast_5'\"), an intermediate Keras symbolic input/output, to a TF API that does not allow registering custom dispatchers, such as `tf.cond`, `tf.function`, gradient tapes, or `tf.map_fn`. Keras Functional model construction only supports TF API calls that *do* support dispatching, such as `tf.math.add` or `tf.reshape`. Other APIs cannot be called directly on symbolic Kerasinputs/outputs. You can work around this limitation by putting the operation in a custom Keras layer `call` and calling that layer on this symbolic input/output.\n", 
call = py_call_impl(callable, dots$args, dots$keywords), 
cppstack = structure(list(file = "", line = -1L, stack = c("/home/david/R/x86_64-pc-linux-gnu-library/4.1/reticulate/libs/reticulate.so(Rcpp::exception::exception(char const*, bool)+0x74) [0x7f06a41c1524]", 
"/home/david/R/x86_64-pc-linux-gnu-library/4.1/reticulate/libs/reticulate.so(Rcpp::stop(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x29) [0x7f06a41b0bc4]", ...

Until this is fixed, users should implement variational autoencoders directly in Keras: https://keras.rstudio.com/articles/examples/variational_autoencoder.html. Sorry for any inconvenience.

fdavidcl avatar Feb 17 '22 10:02 fdavidcl