У меня есть функция обработки для логики некоторых функций, которая включает в себя разбиение строки.
Рабочие Тензорные из наборов данных: <tf.Tensor 'arg0:0' shape=(1,) dtype=string>
Недопустимый Тензорный из функции обслуживания: <tf.Tensor 'DecodeCSV:1' shape=(?, 1) dtype=string>
Функция обслуживания:
def csv_serving_input_fn():
csv_row = tf.placeholder(shape=[None], dtype=tf.string)
features = parse_csv(csv_row, is_serving=True)
...
return tf.estimator.export.ServingInputReceiver(
features=process_features(features),
receiver_tensors={'csv_row': csv_row}
)
Функция разбора
def parse_csv(csv_row, is_serving=False):
columns = tf.decode_csv(tf.expand_dims(csv_row, -1), record_defaults=HEADER_DEFAULTS)
return dict(zip(HEADER, columns))
Ошибка формы (?,)
def process_features(features):
x = tf.string_split(features['text'])
....
Ошибка:
ValueError: Shape must be rank 1 but is rank 2 for 'StringSplit' (op: 'StringSplit') with input shapes: [?,1], [].
Какая будет правильная функция подачи?
Аналогичная проблема: Разбить строки в тензорном потоке