Получите доступ к выходным данным слоя, определенного в tf.keras.слои.Подклассы слоев

#tensorflow #tf.keras #keras-layer

Вопрос:

Я хочу получить доступ к выходным данным одного из линейных слоев, определенных в классе MLPBlock (код приведен ниже). Итак, как я могу это сделать?

 import tensorflow as tf
class Linear(tf.keras.layers.Layer):
    def __init__(self, units=32):
        super(Linear, self).__init__()
        self.units = units

    def build(self, input_shape):
        self.w = self.add_weight(
            shape=(input_shape[-1], self.units),
            initializer="random_normal",
            trainable=True,
        )
        self.b = self.add_weight(
            shape=(self.units,), initializer="random_normal", trainable=True
        )

    def call(self, inputs):

        return tf.matmul(inputs, self.w)   self.b

class MLPBlock(tf.keras.layers.Layer):
    def __init__(self):
        super(MLPBlock, self).__init__()
        self.linear_1 = Linear(32)
        self.linear_2 = Linear(32)
        self.linear_3 = Linear(1)

    def call(self, inputs):
        x = self.linear_1(inputs)
        x = tf.nn.relu(x)
        x = self.linear_2(x)
            x = tf.nn.relu(x)
            return self.linear_3(x)
    
mlp = MLPBlock()
 

Обратите внимание, что я хочу получить доступ к выходу линейного слоя из экземпляра MLPBlock.
Есть ли какой-либо способ получить доступ к выходным данным этих слоев, например, к выходным данным любого промежуточного слоя tf.keras.Экземпляр модели с методами». get_layer» и «.output».

Комментарии:

1. Когда вы проходите self.linear_1(inputs) , вы получаете выход из этого слоя.