Я создал модель подкласса keras следующим образом:
class SubModel(tf.Keras.Model):
def __init__(self, features, **kwargs):
"""Init function of Model.
Args:
features: A list of SparseFeature and DenseFeature.
"""
assert len(features) > 0
super(SubModel, self).__init__(name='SubModel', **kwargs)
self.features = features
Обратите внимание, что в функции __init__
есть функция arrtibute, которая будет использоваться в методе call
этой модели. Все работает хорошо, когда я тренируюсь и оцениваю модель в стиле керас.
Но теперь я хочу преобразовать эту модель в оценщик, используя функцию tf.keras.model_to_estimator
. Это вызывает ошибку: AttributeError: '_ListWrapper' object has no attribute 'get_config'
.
Согласно моей отладке, это атрибут features
, который добавляется в модель и вызывает эту ошибку. При преобразовании в оценщик он рассматривает объекты как layer
модели и пытается вызвать функцию get_config
при клонировании модели. Кажется, что все атрибуты, добавленные в модель, будут обрабатываться как layer
при клонировании модели.
Но я действительно хочу использовать features
как часть модели, чтобы к ней можно было получить доступ черездругая функция этой модели, как call
. Есть ли другие способы решить эту проблему?