Я уже некоторое время использую Keras и Tensorflow 1.x, но я пытаюсь выучить и обновить до tenorflow 2.1 (особенно tf.data.Dataset
s). Я могу успешно создать файл tfrecords и загрузить его, используя tf.data.TFRecordDataset
. После анализа элементов и некоторой другой предварительной обработки (например, нормализации) набор данных возвращает кортеж, первым элементом которого является словарь, содержащий различные типы входных (x
) тензоров, а вторым элементом является единственное значение / тензор для цели (y
) значения.
Я могу обучить модель, вручную перебирая набор данных в пакетах, используя tf.GradientTape()
. Однако, когда я пытаюсь обучить модель, используя model.fit
, в методе call
моей модели возникает первое исключение при первом использовании входных данных.
ValueError: Attempt to convert a value (TensorSpec(shape=(16, 278, 136), dtype=tf.float32, name=None)) with an unsupported type (<class 'tensorflow.python.framework.tensor_spec.TensorSpec'>) to a Tensor.
Если я распечатываю входные данные внутри метода call
перед попыткой их использования он показывает тип как TensorSpe c, а не как Tensor (у меня есть несколько заполнителей в моем входном словаре на данный момент):
{
'contextual': {'one_hot': {}, 'multi_hot': {}, 'dense': {}},
'sequential': {
'one_hot': {},
'multi_hot': {},
'dense': TensorSpec(shape=(16, 278, 136), dtype=tf.float32, name=None)
}
}
Хотя Я не знаю достаточно о внутренностях Tensorflow, чтобы понять, ожидается ли это или нет.
Буду очень признателен за любые идеи о том, почему это может происходить или как это исправить.