Отличный вопрос! Мне кажется, что эта ошибка возникает из-за правильного TensorFlow - это указывает на то, что у вас, вероятно, правильная вложенная структура, но листья могут быть выключены. Ваше входное значение c выглядит так, как будто «должно работать» с точки зрения TFF, поэтому, вероятно, оно немного не соответствует имеющимся у вас данным
Первое, что я бы попробовал - если у вас есть пример tf.data.Dataset
, который будет передан вашему клиентскому вычислению, вы можете просто прочитать input_spec
непосредственно из этого набора данных как атрибут element_spec
. Это будет выглядеть примерно так:
# ds = example dataset
input_spec = ds.element_spec
Это самый простой путь. Если у вас есть что-то вроде «списков списков numpy массивов», у вас все еще есть способ извлечь эту информацию из самих данных - вам поможет следующий фрагмент кода:
# data = list of list of numpy arrays
input_spec = tf.nest.map_structure(lambda x: tf.TensorSpec(x.shape, x.dtype), data)
Наконец, если у вас есть список списков tf.Tensors
, TensorFlow предоставляет аналогичную функцию:
# tensor_structure = list of lists of tensors
tf.nest.map_structure(tf.TensorSpec.from_tensor, tensor_structure)
Короче, я бы рекомендовал не , указав input_spec
вручную, а вместо того, чтобы позволить данным сказать вам, какой должна быть их входная величина c