Мне кажется избыточным определять дважды входную функцию для модели и экспортера. Почему бы просто не использовать уникальную функцию ввода как в определении, так и в экспортере
Например, для примера изображений MNIST, где вводом является изображение размером 28x28x1, input_fn
и serving_input_fn
являются следующими.
train_input_fn = tf.estimator.inputs.numpy_input_fn(
x={INPUT_FEATURE: train_data},
y=train_labels,
batch_size=100,
num_epochs=None,
shuffle=True)
.
def serving_input_receiver_fn():
inputs = {
INPUT_FEATURE: tf.placeholder(tf.float32, [None, 28, 28, 1]),
}
return tf.estimator.export.ServingInputReceiver(inputs, inputs)
.
classifier.train(input_fn=train_input_fn, steps=FLAGS.steps)
classifier.export_savedmodel(DIR_MODEL,
serving_input_receiver_fn=serving_input_receiver_fn)
В конце оба определяют диктант {INPUT_FEATURE: изображение}