Я использую Оценщик из tenorflow, чтобы делать прогнозы, но он дает отличные результаты от использования предиктора из tenorflow. Я использую следующий код:
def serving_input_fn():
conv2d_input = tf.placeholder(dtype=tf.float32, shape = target.reshape(1,28,28,1).shape, name='conv2d_input')
inputs = {'conv2d_input': conv2d_input }
return tf.estimator.export.ServingInputReceiver(inputs, inputs)
estimator_predictor = tf.contrib.predictor.from_estimator(est_model, serving_input_fn)
def input_fn(x_in):
return tf.estimator.inputs.numpy_input_fn( x = {'conv2d_input':x_in}, y=None, shuffle=False)
p = estimator_predictor(
{"conv2d_input": target.reshape(1,28,28,1) })
p2 = model.predict(target.reshape(1,28,28,1))
p3 = est_model.predict( input_fn(target.reshape(1,28,28,1)) )
print("predictor : ",p.get('dense_1'))
print("keras : ",p2)
for prediction in p3:
print("estimator : " ,prediction.get('dense_1'))
и выдает в качестве вывода:
predictor : [[0.10058891 0.10000722 0.0999575 0.09886423 0.09934128 0.09977716
0.10072801 0.10063367 0.09942301 0.100679 ]]
keras : [[6.7937315e-15 7.9626661e-12 1.7242272e-11 5.0438776e-12 2.8177825e-14
1.6326855e-16 8.9607349e-22 1.0000000e+00 1.4909793e-15 2.7489899e-09]]
estimator : [6.7937315e-15 7.9626661e-12 1.7242272e-11 5.0438776e-12 2.8177825e-14
1.6326855e-16 8.9607349e-22 1.0000000e+00 1.4909793e-15 2.7489899e-09]
Я преобразую из модели keras в оценщик в предиктор. Входные данные (target
) - это изображение MNIST, которое должно быть спрогнозировано как 7. Почему я получаю другой результат при использовании тензорного потока предиктора по сравнению с моделью керас и оценщиком.