我正試圖在Google Cloud的ML引擎上託管一個TensorForestEstimator模型。一切工作的權利,但在最後的模型不能與堆棧跟蹤出口:TensorFlow:導出TensorForestEstimator模型時出錯
Traceback (most recent call last):
[...]
File "/root/.local/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/experiment.py", line 502, in train_and_evaluate
export_results = self._maybe_export(eval_result)
File "/root/.local/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/experiment.py", line 597, in _maybe_export
eval_result=eval_result))
File "/root/.local/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/export_strategy.py", line 87, in export
return self.export_fn(estimator, export_path, **kwargs)
File "/root/.local/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/utils/saved_model_export_utils.py", line 412, in export_fn
checkpoint_path=checkpoint_path)
File "/root/.local/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/estimators/estimator.py", line 1280, in export_savedmodel
actual_default_output_alternative_key)
File "/root/.local/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/utils/saved_model_export_utils.py", line 252, in build_all_signature_defs
for input_key, inputs in input_alternatives.items()
File "/root/.local/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/utils/saved_model_export_utils.py", line 254, in <dictcomp>
in output_alternatives.items()}
File "/root/.local/lib/python2.7/site-packages/tensorflow/contrib/learn/python/learn/utils/saved_model_export_utils.py", line 119, in build_standardized_signature_def
input_tensors, output_tensors)
File "/root/.local/lib/python2.7/site-packages/tensorflow/python/saved_model/signature_def_utils_impl.py", line 146, in predict_signature_def
signature_constants.PREDICT_METHOD_NAME)
File "/root/.local/lib/python2.7/site-packages/tensorflow/python/saved_model/signature_def_utils_impl.py", line 45, in build_signature_def
signature_def.outputs[item].CopyFrom(outputs[item])
TypeError: None has type NoneType, but expected one of: bytes, unicode
基礎上痕跡,我想誤差與default_output_alternative_key=None
的make_export_strategy
功能。因此,我所做設置default_output_alternative_key='default'
但隨後得到了錯誤:
ValueError: Requested default_output_alternative: default, but available output_alternatives are: [None]
因此,這表明,有沒有輸出選擇和我的模式是單頭。下面是代碼:
def serving_input_fn():
feature_placeholders = {
column['name']: tf.placeholder(dtype=column['dtype'], shape=[None])
for column in columns_list if column['derived'] == 'N' and column['column_role'] != 'label'
}
features = {
key: tf.expand_dims(tensor, -1)
for key, tensor in feature_placeholders.items()
}
return InputFnOps(
features=features,
labels=None,
default_inputs=feature_placeholders
)
def get_experiment_fn(args):
def _experiment(run_config, hparams):
return Experiment(
estimator=TensorForestEstimator(
params=ForestHParams(
num_trees=args.num_trees,
max_nodes=10000,
min_split_samples=2,
num_features=7,
num_classes=args.num_projections,
regression=True
),
model_dir=args.job_dir,
graph_builder_class=RandomForestGraphs,
config=run_config,
report_feature_importances=True,
),
train_input_fn=get_input_fn(
project_name=args.project,
data_location=args.train_data,
dataset_size=args.train_size,
batch_size=args.train_batch_size
),
train_steps=args.train_steps,
eval_input_fn=get_input_fn(
project_name=args.project,
data_location=args.eval_data,
dataset_size=args.eval_size,
batch_size=args.eval_batch_size
),
eval_steps=args.eval_steps,
eval_metrics=get_eval_metrics(),
export_strategies=[
make_export_strategy(
serving_input_fn,
default_output_alternative_key=None,
exports_to_keep=1
)
]
)
return _experiment
def main():
args = get_arg_parser().parse_args()
learn_runner.run(
experiment_fn=get_experiment_fn(args),
run_config=RunConfig(model_dir=args.job_dir),
hparams=HParams(**args.__dict__)
)
if __name__ == '__main__':
main()
什麼是錯誤None has type NoneType, but expected one of: bytes, unicode
的原因以及如何解決它,所以我可以爲我的模型?