tf.contrib.predictor и tf.estimator.Estimator дают различный прогнозируемый результат - PullRequest
0 голосов
/ 19 марта 2020

Я использую Оценщик из 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. Почему я получаю другой результат при использовании тензорного потока предиктора по сравнению с моделью керас и оценщиком.

...