Ошибка ValueError при прогнозировании из tfved_model
Я сохранил 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 '(?,)'
Ниже приводится мой сохраненный_модель_кли:
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
Очень новый для tenorflow, любая помощь или направление будут полезны. Спасибо!
2 ответа
Привет, вы изменили свою переменную export_path на переменную для своего рабочего стола?
Работа вокруг:
Не удалось устранить вышеуказанную ошибку, но 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