Вы можете использовать слой Lambda в качестве последнего слоя вашей модели:
def convert_to_n_times_n(x):
# transform x from shape (N, 3) to (N, N)
transformation_layer = tf.keras.layers.Lambda(convert_to_n_times_n)
Возможно, вы захотите использовать "tf
-неативные методы" в своей функции столько женасколько возможно, чтобы избежать ненужных преобразований тензоров в массивы и обратно.
Если вы хотите использовать слой только во время обучения, но не во время вывода, вы можете добиться этого с помощью функционального API:
# create your original model (N,) -> (N, 3)
input_ = Input(shape=(N,))
x = SomeFancyLayer(...)(input_)
x = ...
...
inference_output = OtherFancyLayer(...)(x)
inference_model = Model(inputs=input_, outputs=inference_output)
# create & fit the training model
training_output = transformation_layer(inference_output)
training_model = Model(inputs=input_, outputs=training_output)
training_model.compile(...)
training_model.fit(X, Y)
# run inference using your original model
inference_model.predict(...)