Я пытаюсь обучить и развернуть упрощенный Quick, Draw! классификатор из здесь в Google Cloud. Мне удалось обучить модель в GC, теперь я застрял при ее развертывании, точнее, на , создавая обслуживающие функции ввода .
Я следую инструкциям здесь и испытываю затруднения, пытаясь понять, какой тип входного тензора должен быть.
Ошибка:
TypeError: Не удалось преобразовать объект типа в Tensor. Содержание: SparseTensor (indices = Tensor ("ParseExample / ParseExample: 0", shape = (?, 2), dtype = int64), значения = Tensor ("ParseExample / ParseExample: 1", shape = (?,), dtype = float32), dens_shape = Tensor ("ParseExample / ParseExample: 2", shape = (2,), dtype = int64)). Рассмотрим приведение элементов к поддерживаемому типу.
Функция обслуживания:
def serving_input_receiver_fn():
serialized_tf_example = tf.placeholder(dtype=tf.string, shape=[None], name='input_tensors')
receiver_tensors = {'infer_inputs': serialized_tf_example}
features = tf.parse_example(serialized_tf_example, feature_spec)
return tf.estimator.export.ServingInputReceiver(features, receiver_tensors)
Характеристика характеристики:
feature_spec = {
"ink": tf.VarLenFeature(dtype=tf.float32),
"shape": tf.FixedLenFeature([2], dtype=tf.int64)
}
Входной слой:
def _get_input_tensors(features, labels):
shapes = features["shape"]
lengths = tf.squeeze(
tf.slice(shapes, begin=[0, 0], size=[params.batch_size, 1]))
inks = tf.reshape(features["ink"], [params.batch_size, -1, 3])
if labels is not None:
labels = tf.squeeze(labels)
return inks, lengths, labels
Код модели и данные обучения были взяты здесь .