#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)
, вы получаете выход из этого слоя.