model.losses возвращает символические тензоры

В реализации сверточного слоя есть пример: https://www.tensorflow.org/probability/api_docs/python/tfp/layers/Convolution2DFlipout

В нем учитывается loss-функции на каждом слое нейронной сети (kl = sum(model.losses)). Однако в моей реализации

model = tf.keras.models.Sequential([
tfp.layers.Convolution2DFlipout(6, kernel_size=5, padding='SAME',
                                          kernel_divergence_fn=kl_divergence_function, bias_divergence_fn = kl_divergence_function,
                                          activation='relu',input_shape=(28,28,1)),
tf.keras.layers.MaxPooling2D(pool_size=[2, 2], strides=[2, 2],padding='SAME'),
tfp.layers.Convolution2DFlipout(16, kernel_size=5, padding='SAME',
                                          kernel_divergence_fn=kl_divergence_function,bias_divergence_fn = kl_divergence_function,
                                          activation='relu'),
tf.keras.layers.MaxPooling2D(pool_size=[2, 2], strides=[2, 2],padding='SAME'),
tfp.layers.Convolution2DFlipout(120, kernel_size=5, padding='SAME',
                                          kernel_divergence_fn=kl_divergence_function,bias_divergence_fn = kl_divergence_function,
                                          activation='relu'),
tf.keras.layers.Flatten(),
tfp.layers.DenseFlipout(84, kernel_divergence_fn=kl_divergence_function,bias_divergence_fn = kl_divergence_function,activation=tf.nn.relu),
tfp.layers.DenseFlipout(NUM_CLASSES, kernel_divergence_fn=kl_divergence_function,bias_divergence_fn = kl_divergence_function,
                        activation=tf.nn.softmax)])

в качестве model.losses возвращаются символические тензоры:

[<tf.Tensor 'conv2d_flipout/divergence_kernel:0' shape=() dtype=float32>,
 <tf.Tensor 'conv2d_flipout_1/divergence_kernel:0' shape=() dtype=float32>,
 <tf.Tensor 'conv2d_flipout_2/divergence_kernel:0' shape=() dtype=float32>,
 <tf.Tensor 'dense_flipout/divergence_kernel:0' shape=() dtype=float32>,
 <tf.Tensor 'dense_flipout_1/divergence_kernel:0' shape=() dtype=float32>]

Есть ли возможность преобразовать их в numpy array для дальнейшей работы? tf.executing_eagerly включен по умолчанию.


Ответы (0 шт):