Может быть, немного глупый вопрос, но я все еще не понимаю. Если мы используем пользовательский слой, такой как
from keras.layers.core import Lambda
shiftedConv = Lambda(lambda x : x[:, 3:, :, :])(conv)
или пользовательский регуляризатор
from keras.layers import Dense
def near1Regularizer(activations):
return 0.01 * K.mean((1 - activations) ** 2)
dense = Dense(100, activity_regularizer=near1Regularizer)(flatten)
, то TensorFlow (последние версии 2.x) смотрит на необработанный код и «понимает», как дифференцировать все ? Например, по измерениям 1 N градиенты смещенного сдвига должны точно соответствовать значениям 3 - N + 2 конв?
Это вопрос о моделях, созданных с помощью керасов,
from keras.models import Model
…
return Model(input=inputs, output=prediction)
и переданных модели. .поместиться*. Без магии, как
@tf.function
def train_step(self, images, labels):