我正在尝试创建变分自动编码器,这意味着我需要自定义损失函数。问题是,在损失函数内部,我有 2 个不同的损失 - mse 和散度。mse是Tensor,divergence是KerasTensor(由于色散和mu,我从编码器中退出)。我收到这样的错误:
类型错误:无法将符号 Keras 输入/输出转换为 numpy 数组。此错误可能表明您正在尝试将符号值传递给 NumPy 调用,但该调用不受支持。或者,您可能尝试将 Keras 符号输入/输出传递到未注册调度的 TF API,从而阻止 Keras 自动将 API 调用转换为功能模型中的 lambda 层。
这是我的架构:
import tensorflow.keras as keras
from keras.layers import Input, Dense, Flatten, Reshape
from keras.layers import Conv2D, MaxPooling2D, UpSampling2D, Conv2DTranspose
from keras.models import Model
import tensorflow as tf
import keras.backend as K
encoded_dim = 2
class Sampling(keras.layers.Layer):
"""Uses (z_mean, z_log_var) to sample z, the vector encoding a digit."""
def call(self, inputs):
z_mean, z_log_var = inputs
batch = tf.shape(z_mean)[0] …Run Code Online (Sandbox Code Playgroud)