阅读(17k) 书签 (0)

TensorFlow函数:tf.estimator.EstimatorSpec

2018-04-27 14:06 更新

tf.estimator.EstimatorSpec函数

EstimatorSpec类

定义在:tensorflow/python/estimator/model_fn.py.

从model_fn返回的操作和对象并传递给Estimator.

EstimatorSpec完全定义了由Estimator运行的模型.

属性

  • eval_metric_ops
    字段号4的别名
  • evaluation_hooks
    字段号9的别名
  • export_outputs
    字段号5的别名
  • loss
    字段号2的别名
  • mode
    字段号0的别名
  • prediction_hooks
    字段号10的别名
  • predictions
    字段号1的别名
  • scaffold
    字段号8的别名
  • train_op
    字段号3的别名
  • training_chief_hooks
    字段号6的别名
  • training_hooks
    字段号7的别名

方法

__new__

@ staticmethod 
__new__ ( 
    cls , 
    mode , 
    predictions = None , 
    loss = None , 
    train_op = None , 
    eval_metric_ops = None , 
    export_outputs = None , 
    training_chief_hooks = None , 
    training_hooks = None , 
    scaffold = None , 
    evaluation_hooks = None , 
    prediction_hooks= 无
)

创建一个已经验证的EstimatorSpec实例.

根据mode的值的不同,需要不同的参数,即:

  • 对于mode == ModeKeys.TRAIN:必填字段是loss和train_op.
  • 对于mode == ModeKeys.EVAL:必填字段是loss.
  • 为mode == ModeKeys.PREDICT:必填字段是predictions.

model_fn可以填充独立于模式的所有参数.在这种情况下,Estimator将忽略某些参数.在eval和infer模式中,train_op将被忽略.例子如下:

def my_model_fn(mode, features, labels):
  predictions = ...
  loss = ...
  train_op = ...
  return tf.estimator.EstimatorSpec(
      mode=mode,
      predictions=predictions,
      loss=loss,
      train_op=train_op)

或者,model_fn可以填充适合给定模式的参数.例:

def my_model_fn(mode, features, labels):
  if (mode == tf.estimator.ModeKeys.TRAIN or
      mode == tf.estimator.ModeKeys.EVAL):
    loss = ...
  else:
    loss = None
  if mode == tf.estimator.ModeKeys.TRAIN:
    train_op = ...
  else:
    train_op = None
  if mode == tf.estimator.ModeKeys.PREDICT:
    predictions = ...
  else:
    predictions = None

  return tf.estimator.EstimatorSpec(
      mode=mode,
      predictions=predictions,
      loss=loss,
      train_op=train_op)

函数参数:

  • mode:一个ModeKeys,指定是training(训练)、evaluation(计算)还是prediction(预测).
  • predictions:预测Tensor或字典Tensor.
  • loss:训练损失Tensor,必须是标量或形状[1].
  • train_op:适用于训练的步骤.
  • eval_metric_ops:按名称键入的度量结果字典.字典的值是调用度量函数的结果,即(metric_tensor, update_op)元组.应该在没有任何状态影响的情况下进行metric_tensor计算(通常是基于变量的纯计算结果).例如,它不应该触发update_op或需要任何输入提取.
  • export_outputs:描述要在服务期间导出到SavedModel并使用的输出签名.在字典{name: output}中:name:此输出的任意名称.output:一个ExportOutput对象,如ClassificationOutput,RegressionOutput或PredictOutput.Single-headed模型只需要在本字典中指定一个条目.Multi-headed模型应为每个头指定一个条目,其中之一必须使用signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY进行命名.
  • training_chief_hooks:在训练期间可以在主要工作人员中运行的tf.train.SessionRunHook对象的迭代.
  • training_hooks:在训练过程中可以对所有工作人员运行的tf.train.SessionRunHook对象.
  • scaffold:可用于设置初始化,保护程序等用于训练的tf.train.Scaffold对象.
  • evaluation_hooks:评估期间要运行的tf.train.SessionRunHook对象的可迭代性.
  • prediction_hooks:在预测期间可以运行的tf.train.SessionRunHook对象的可迭代性.

返回值:

一个经过验证的EstimatorSpec对象.

可能引发的异常:

  • ValueError:如果验证失败,则会引发此异常.
  • TypeError:如果任何参数不是预期的类型.