Ошибка ValueError при прогнозировании из tfved_model - PullRequest
0 голосов
/ 15 сентября 2018

Я сохранил DNNestimator, и теперь я пытаюсь использовать эту модель для прогнозирования по некоторым данным.

Обучение модели:

feature_columns = [tf.contrib.layers.real_valued_column("x", dimension=500)]

classifier = tf.estimator.DNNClassifier(
feature_columns=feature_columns,
hidden_units=[500],
optimizer=tf.train.AdamOptimizer(1e-4),
n_classes=18,
dropout=0,
model_dir=None)

train_input_fn = tf.estimator.inputs.numpy_input_fn(
x={'x': train_vec.values},
y=train.code.astype(np.int32),
num_epochs=None,
batch_size=50,
shuffle=True)

classifier.train(input_fn=train_input_fn, steps=1000)

feature_spec = {'x':tf.FixedLenFeature(shape= [500],dtype=np.float32)}
serving_fn = tf.estimator.export.build_parsing_serving_input_receiver_fn( feature_spec)
export_path = "path/to/export"
classifier.export_savedmodel(export_path,serving_fn)

Я пытаюсь предсказать здесь:

a=np.expand_dims(test_vec.iloc[0].values,axis=0)
predict_fn = tf.contrib.predictor.from_saved_model(export_path_folder)
predictions = predict_fn({"inputs":a})

Train_vec и test_vec - это фреймы данных с 500 столбцами (функциями).При прогнозировании я получаю следующую ошибку:

ValueError: Cannot feed value of shape (1, 500) for Tensor u'input_example_tensor:0', which has shape '(?,)'

Ниже приведен мой сохраненный_модель_cli:

The given SavedModel SignatureDef contains the following input(s):
inputs['inputs'] tensor_info:
  dtype: DT_STRING
  shape: (-1)
  name: input_example_tensor:0
The given SavedModel SignatureDef contains the following output(s):
outputs['classes'] tensor_info:
  dtype: DT_STRING
  shape: (-1, 18)
  name: dnn/head/Tile:0
 outputs['scores'] tensor_info:
  dtype: DT_FLOAT
  shape: (-1, 18)
  name: dnn/head/predictions/probabilities:0
Method name is: tensorflow/serving/classify

Очень плохо знаком с тензорным потоком, любая помощь или направление будут полезны.Спасибо!

1 Ответ

0 голосов
/ 15 сентября 2018

Обход:

Не удалось устранить вышеуказанную ошибку, но DNNClassifier «теплый старт» сработал.

classifier = tf.estimator.DNNClassifier(
feature_columns=feature_columns,
hidden_units=[500],
optimizer=tf.train.AdamOptimizer(1e-4),
n_classes=18,
dropout=0,
warm_start_from=export_path_folder)

А затем используйте classifier.predict

...