<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="ml_v1beta1.html">Google Cloud Machine Learning Engine</a> . <a href="ml_v1beta1.projects.html">projects</a> . <a href="ml_v1beta1.projects.jobs.html">jobs</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#cancel">cancel(name, body, x__xgafv=None)</a></code></p>
<p class="firstline">Cancels a running job.</p>
<p class="toc_element">
  <code><a href="#create">create(parent, body, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a training or a batch prediction job.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Describes a job.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, filter=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the jobs in the project.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="cancel">cancel(name, body, x__xgafv=None)</code>
  <pre>Cancels a running job.

Args:
  name: string, Required. The name of the job to cancel.

Authorization: requires `Editor` role on the parent project. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # Request message for the CancelJob method.
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated
      # empty messages in your APIs. A typical example is to use it as the request
      # or the response type of an API method. For instance:
      #
      #     service Foo {
      #       rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
      #     }
      #
      # The JSON representation for `Empty` is empty JSON object `{}`.
  }</pre>
</div>

<div class="method">
    <code class="details" id="create">create(parent, body, x__xgafv=None)</code>
  <pre>Creates a training or a batch prediction job.

Args:
  parent: string, Required. The project name.

Authorization: requires `Editor` role on the specified project. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # Represents a training or prediction job.
    "trainingOutput": { # Represents results of a training job. Output only. # The current training job result.
      "completedTrialCount": "A String", # The number of hyperparameter tuning trials that completed successfully.
          # Only set for hyperparameter tuning jobs.
      "isHyperparameterTuningJob": True or False, # Whether this job is a hyperparameter tuning job.
      "trials": [ # Results for individual Hyperparameter trials.
          # Only set for hyperparameter tuning jobs.
        { # Represents the result of a single hyperparameter tuning trial from a
            # training job. The TrainingOutput object that is returned on successful
            # completion of a training job with hyperparameter tuning includes a list
            # of HyperparameterOutput objects, one for each successful trial.
          "hyperparameters": { # The hyperparameters given to this trial.
            "a_key": "A String",
          },
          "trialId": "A String", # The trial id for these results.
          "allMetrics": [ # All recorded object metrics for this trial.
            { # An observed value of a metric.
              "trainingStep": "A String", # The global training step for this metric.
              "objectiveValue": 3.14, # The objective value at this training step.
            },
          ],
          "finalMetric": { # An observed value of a metric. # The final objective metric seen for this trial.
            "trainingStep": "A String", # The global training step for this metric.
            "objectiveValue": 3.14, # The objective value at this training step.
          },
        },
      ],
      "consumedMLUnits": 3.14, # The amount of ML units consumed by the job.
    },
    "trainingInput": { # Represents input parameters for a training job. # Input parameters to create a training job.
      "workerType": "A String", # Optional. Specifies the type of virtual machine to use for your training
          # job's worker nodes.
          #
          # The supported values are the same as those described in the entry for
          # `masterType`.
          #
          # This value must be present when `scaleTier` is set to `CUSTOM` and
          # `workerCount` is greater than zero.
      "runtimeVersion": "A String", # Optional. The Google Cloud ML runtime version to use for training.  If not
          # set, Google Cloud ML will choose the latest stable version.
      "scaleTier": "A String", # Required. Specifies the machine types, the number of replicas for workers
          # and parameter servers.
      "masterType": "A String", # Optional. Specifies the type of virtual machine to use for your training
          # job's master worker.
          #
          # The following types are supported:
          #
          # <dl>
          #   <dt>standard</dt>
          #   <dd>
          #   A basic machine configuration suitable for training simple models with
          #   small to moderate datasets.
          #   </dd>
          #   <dt>large_model</dt>
          #   <dd>
          #   A machine with a lot of memory, specially suited for parameter servers
          #   when your model is large (having many hidden layers or layers with very
          #   large numbers of nodes).
          #   </dd>
          #   <dt>complex_model_s</dt>
          #   <dd>
          #   A machine suitable for the master and workers of the cluster when your
          #   model requires more computation than the standard machine can handle
          #   satisfactorily.
          #   </dd>
          #   <dt>complex_model_m</dt>
          #   <dd>
          #   A machine with roughly twice the number of cores and roughly double the
          #   memory of <code suppresswarning="true">complex_model_s</code>.
          #   </dd>
          #   <dt>complex_model_l</dt>
          #   <dd>
          #   A machine with roughly twice the number of cores and roughly double the
          #   memory of <code suppresswarning="true">complex_model_m</code>.
          #   </dd>
          #   <dt>standard_gpu</dt>
          #   <dd>
          #   A machine equivalent to <code suppresswarning="true">standard</code> that
          #   also includes a
          #   <a href="/ml-engine/docs/how-tos/using-gpus">
          #   GPU that you can use in your trainer</a>.
          #   </dd>
          #   <dt>complex_model_m_gpu</dt>
          #   <dd>
          #   A machine equivalent to
          #   <code suppresswarning="true">complex_model_m</code> that also includes
          #   four GPUs.
          #   </dd>
          # </dl>
          #
          # You must set this value when `scaleTier` is set to `CUSTOM`.
      "hyperparameters": { # Represents a set of hyperparameters to optimize. # Optional. The set of Hyperparameters to tune.
        "maxTrials": 42, # Optional. How many training trials should be attempted to optimize
            # the specified hyperparameters.
            #
            # Defaults to one.
        "hyperparameterMetricTag": "A String", # Optional. The Tensorflow summary tag name to use for optimizing trials. For
            # current versions of Tensorflow, this tag name should exactly match what is
            # shown in Tensorboard, including all scopes.  For versions of Tensorflow
            # prior to 0.12, this should be only the tag passed to tf.Summary.
            # By default, "training/hptuning/metric" will be used.
        "params": [ # Required. The set of parameters to tune.
          { # Represents a single hyperparameter to optimize.
            "maxValue": 3.14, # Required if typeis `DOUBLE` or `INTEGER`. This field
                # should be unset if type is `CATEGORICAL`. This value should be integers if
                # type is `INTEGER`.
            "categoricalValues": [ # Required if type is `CATEGORICAL`. The list of possible categories.
              "A String",
            ],
            "discreteValues": [ # Required if type is `DISCRETE`.
                # A list of feasible points.
                # The list should be in strictly increasing order. For instance, this
                # parameter might have possible settings of 1.5, 2.5, and 4.0. This list
                # should not contain more than 1,000 values.
              3.14,
            ],
            "parameterName": "A String", # Required. The parameter name must be unique amongst all ParameterConfigs in
                # a HyperparameterSpec message. E.g., "learning_rate".
            "minValue": 3.14, # Required if type is `DOUBLE` or `INTEGER`. This field
                # should be unset if type is `CATEGORICAL`. This value should be integers if
                # type is INTEGER.
            "type": "A String", # Required. The type of the parameter.
            "scaleType": "A String", # Optional. How the parameter should be scaled to the hypercube.
                # Leave unset for categorical parameters.
                # Some kind of scaling is strongly recommended for real or integral
                # parameters (e.g., `UNIT_LINEAR_SCALE`).
          },
        ],
        "maxParallelTrials": 42, # Optional. The number of training trials to run concurrently.
            # You can reduce the time it takes to perform hyperparameter tuning by adding
            # trials in parallel. However, each trail only benefits from the information
            # gained in completed trials. That means that a trial does not get access to
            # the results of trials running at the same time, which could reduce the
            # quality of the overall optimization.
            #
            # Each trial will use the same scale tier and machine types.
            #
            # Defaults to one.
        "goal": "A String", # Required. The type of goal to use for tuning. Available types are
            # `MAXIMIZE` and `MINIMIZE`.
            #
            # Defaults to `MAXIMIZE`.
      },
      "region": "A String", # Required. The Google Compute Engine region to run the training job in.
      "args": [ # Optional. Command line arguments to pass to the program.
        "A String",
      ],
      "pythonModule": "A String", # Required. The Python module name to run after installing the packages.
      "jobDir": "A String", # Optional. A Google Cloud Storage path in which to store training outputs
          # and other data needed for training. This path is passed to your TensorFlow
          # program as the 'job_dir' command-line argument. The benefit of specifying
          # this field is that Cloud ML validates the path for use in training.
      "packageUris": [ # Required. The Google Cloud Storage location of the packages with
          # the training program and any additional dependencies.
          # The maximum number of package URIs is 100.
        "A String",
      ],
      "workerCount": "A String", # Optional. The number of worker replicas to use for the training job. Each
          # replica in the cluster will be of the type specified in `worker_type`.
          #
          # This value can only be used when `scale_tier` is set to `CUSTOM`. If you
          # set this value, you must also set `worker_type`.
      "parameterServerType": "A String", # Optional. Specifies the type of virtual machine to use for your training
          # job's parameter server.
          #
          # The supported values are the same as those described in the entry for
          # `master_type`.
          #
          # This value must be present when `scaleTier` is set to `CUSTOM` and
          # `parameter_server_count` is greater than zero.
      "parameterServerCount": "A String", # Optional. The number of parameter server replicas to use for the training
          # job. Each replica in the cluster will be of the type specified in
          # `parameter_server_type`.
          #
          # This value can only be used when `scale_tier` is set to `CUSTOM`.If you
          # set this value, you must also set `parameter_server_type`.
    },
    "startTime": "A String", # Output only. When the job processing was started.
    "errorMessage": "A String", # Output only. The details of a failure or a cancellation.
    "jobId": "A String", # Required. The user-specified id of the job.
    "state": "A String", # Output only. The detailed state of a job.
    "predictionInput": { # Represents input parameters for a prediction job. # Input parameters to create a prediction job.
      "modelName": "A String", # Use this field if you want to use the default version for the specified
          # model. The string must use the following format:
          #
          # `"projects/<var>[YOUR_PROJECT]</var>/models/<var>[YOUR_MODEL]</var>"`
      "runtimeVersion": "A String", # Optional. The Google Cloud ML runtime version to use for this batch
          # prediction. If not set, Google Cloud ML will pick the runtime version used
          # during the CreateVersion request for this model version, or choose the
          # latest stable version when model version information is not available
          # such as when the model is specified by uri.
      "inputPaths": [ # Required. The Google Cloud Storage location of the input data files.
          # May contain wildcards.
        "A String",
      ],
      "maxWorkerCount": "A String", # Optional. The maximum number of workers to be used for parallel processing.
          # Defaults to 10 if not specified.
      "uri": "A String", # Use this field if you want to specify a Google Cloud Storage path for
          # the model to use.
      "outputPath": "A String", # Required. The output Google Cloud Storage location.
      "dataFormat": "A String", # Required. The format of the input data files.
      "versionName": "A String", # Use this field if you want to specify a version of the model to use. The
          # string is formatted the same way as `model_version`, with the addition
          # of the version information:
          #
          # `"projects/<var>[YOUR_PROJECT]</var>/models/<var>YOUR_MODEL/versions/<var>[YOUR_VERSION]</var>"`
      "region": "A String", # Required. The Google Compute Engine region to run the prediction job in.
    },
    "endTime": "A String", # Output only. When the job processing was completed.
    "predictionOutput": { # Represents results of a prediction job. # The current prediction job result.
      "outputPath": "A String", # The output Google Cloud Storage location provided at the job creation time.
      "nodeHours": 3.14, # Node hours used by the batch prediction job.
      "predictionCount": "A String", # The number of generated predictions.
      "errorCount": "A String", # The number of data instances which resulted in errors.
    },
    "createTime": "A String", # Output only. When the job was created.
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents a training or prediction job.
      "trainingOutput": { # Represents results of a training job. Output only. # The current training job result.
        "completedTrialCount": "A String", # The number of hyperparameter tuning trials that completed successfully.
            # Only set for hyperparameter tuning jobs.
        "isHyperparameterTuningJob": True or False, # Whether this job is a hyperparameter tuning job.
        "trials": [ # Results for individual Hyperparameter trials.
            # Only set for hyperparameter tuning jobs.
          { # Represents the result of a single hyperparameter tuning trial from a
              # training job. The TrainingOutput object that is returned on successful
              # completion of a training job with hyperparameter tuning includes a list
              # of HyperparameterOutput objects, one for each successful trial.
            "hyperparameters": { # The hyperparameters given to this trial.
              "a_key": "A String",
            },
            "trialId": "A String", # The trial id for these results.
            "allMetrics": [ # All recorded object metrics for this trial.
              { # An observed value of a metric.
                "trainingStep": "A String", # The global training step for this metric.
                "objectiveValue": 3.14, # The objective value at this training step.
              },
            ],
            "finalMetric": { # An observed value of a metric. # The final objective metric seen for this trial.
              "trainingStep": "A String", # The global training step for this metric.
              "objectiveValue": 3.14, # The objective value at this training step.
            },
          },
        ],
        "consumedMLUnits": 3.14, # The amount of ML units consumed by the job.
      },
      "trainingInput": { # Represents input parameters for a training job. # Input parameters to create a training job.
        "workerType": "A String", # Optional. Specifies the type of virtual machine to use for your training
            # job's worker nodes.
            #
            # The supported values are the same as those described in the entry for
            # `masterType`.
            #
            # This value must be present when `scaleTier` is set to `CUSTOM` and
            # `workerCount` is greater than zero.
        "runtimeVersion": "A String", # Optional. The Google Cloud ML runtime version to use for training.  If not
            # set, Google Cloud ML will choose the latest stable version.
        "scaleTier": "A String", # Required. Specifies the machine types, the number of replicas for workers
            # and parameter servers.
        "masterType": "A String", # Optional. Specifies the type of virtual machine to use for your training
            # job's master worker.
            #
            # The following types are supported:
            #
            # <dl>
            #   <dt>standard</dt>
            #   <dd>
            #   A basic machine configuration suitable for training simple models with
            #   small to moderate datasets.
            #   </dd>
            #   <dt>large_model</dt>
            #   <dd>
            #   A machine with a lot of memory, specially suited for parameter servers
            #   when your model is large (having many hidden layers or layers with very
            #   large numbers of nodes).
            #   </dd>
            #   <dt>complex_model_s</dt>
            #   <dd>
            #   A machine suitable for the master and workers of the cluster when your
            #   model requires more computation than the standard machine can handle
            #   satisfactorily.
            #   </dd>
            #   <dt>complex_model_m</dt>
            #   <dd>
            #   A machine with roughly twice the number of cores and roughly double the
            #   memory of <code suppresswarning="true">complex_model_s</code>.
            #   </dd>
            #   <dt>complex_model_l</dt>
            #   <dd>
            #   A machine with roughly twice the number of cores and roughly double the
            #   memory of <code suppresswarning="true">complex_model_m</code>.
            #   </dd>
            #   <dt>standard_gpu</dt>
            #   <dd>
            #   A machine equivalent to <code suppresswarning="true">standard</code> that
            #   also includes a
            #   <a href="/ml-engine/docs/how-tos/using-gpus">
            #   GPU that you can use in your trainer</a>.
            #   </dd>
            #   <dt>complex_model_m_gpu</dt>
            #   <dd>
            #   A machine equivalent to
            #   <code suppresswarning="true">complex_model_m</code> that also includes
            #   four GPUs.
            #   </dd>
            # </dl>
            #
            # You must set this value when `scaleTier` is set to `CUSTOM`.
        "hyperparameters": { # Represents a set of hyperparameters to optimize. # Optional. The set of Hyperparameters to tune.
          "maxTrials": 42, # Optional. How many training trials should be attempted to optimize
              # the specified hyperparameters.
              #
              # Defaults to one.
          "hyperparameterMetricTag": "A String", # Optional. The Tensorflow summary tag name to use for optimizing trials. For
              # current versions of Tensorflow, this tag name should exactly match what is
              # shown in Tensorboard, including all scopes.  For versions of Tensorflow
              # prior to 0.12, this should be only the tag passed to tf.Summary.
              # By default, "training/hptuning/metric" will be used.
          "params": [ # Required. The set of parameters to tune.
            { # Represents a single hyperparameter to optimize.
              "maxValue": 3.14, # Required if typeis `DOUBLE` or `INTEGER`. This field
                  # should be unset if type is `CATEGORICAL`. This value should be integers if
                  # type is `INTEGER`.
              "categoricalValues": [ # Required if type is `CATEGORICAL`. The list of possible categories.
                "A String",
              ],
              "discreteValues": [ # Required if type is `DISCRETE`.
                  # A list of feasible points.
                  # The list should be in strictly increasing order. For instance, this
                  # parameter might have possible settings of 1.5, 2.5, and 4.0. This list
                  # should not contain more than 1,000 values.
                3.14,
              ],
              "parameterName": "A String", # Required. The parameter name must be unique amongst all ParameterConfigs in
                  # a HyperparameterSpec message. E.g., "learning_rate".
              "minValue": 3.14, # Required if type is `DOUBLE` or `INTEGER`. This field
                  # should be unset if type is `CATEGORICAL`. This value should be integers if
                  # type is INTEGER.
              "type": "A String", # Required. The type of the parameter.
              "scaleType": "A String", # Optional. How the parameter should be scaled to the hypercube.
                  # Leave unset for categorical parameters.
                  # Some kind of scaling is strongly recommended for real or integral
                  # parameters (e.g., `UNIT_LINEAR_SCALE`).
            },
          ],
          "maxParallelTrials": 42, # Optional. The number of training trials to run concurrently.
              # You can reduce the time it takes to perform hyperparameter tuning by adding
              # trials in parallel. However, each trail only benefits from the information
              # gained in completed trials. That means that a trial does not get access to
              # the results of trials running at the same time, which could reduce the
              # quality of the overall optimization.
              #
              # Each trial will use the same scale tier and machine types.
              #
              # Defaults to one.
          "goal": "A String", # Required. The type of goal to use for tuning. Available types are
              # `MAXIMIZE` and `MINIMIZE`.
              #
              # Defaults to `MAXIMIZE`.
        },
        "region": "A String", # Required. The Google Compute Engine region to run the training job in.
        "args": [ # Optional. Command line arguments to pass to the program.
          "A String",
        ],
        "pythonModule": "A String", # Required. The Python module name to run after installing the packages.
        "jobDir": "A String", # Optional. A Google Cloud Storage path in which to store training outputs
            # and other data needed for training. This path is passed to your TensorFlow
            # program as the 'job_dir' command-line argument. The benefit of specifying
            # this field is that Cloud ML validates the path for use in training.
        "packageUris": [ # Required. The Google Cloud Storage location of the packages with
            # the training program and any additional dependencies.
            # The maximum number of package URIs is 100.
          "A String",
        ],
        "workerCount": "A String", # Optional. The number of worker replicas to use for the training job. Each
            # replica in the cluster will be of the type specified in `worker_type`.
            #
            # This value can only be used when `scale_tier` is set to `CUSTOM`. If you
            # set this value, you must also set `worker_type`.
        "parameterServerType": "A String", # Optional. Specifies the type of virtual machine to use for your training
            # job's parameter server.
            #
            # The supported values are the same as those described in the entry for
            # `master_type`.
            #
            # This value must be present when `scaleTier` is set to `CUSTOM` and
            # `parameter_server_count` is greater than zero.
        "parameterServerCount": "A String", # Optional. The number of parameter server replicas to use for the training
            # job. Each replica in the cluster will be of the type specified in
            # `parameter_server_type`.
            #
            # This value can only be used when `scale_tier` is set to `CUSTOM`.If you
            # set this value, you must also set `parameter_server_type`.
      },
      "startTime": "A String", # Output only. When the job processing was started.
      "errorMessage": "A String", # Output only. The details of a failure or a cancellation.
      "jobId": "A String", # Required. The user-specified id of the job.
      "state": "A String", # Output only. The detailed state of a job.
      "predictionInput": { # Represents input parameters for a prediction job. # Input parameters to create a prediction job.
        "modelName": "A String", # Use this field if you want to use the default version for the specified
            # model. The string must use the following format:
            #
            # `"projects/<var>[YOUR_PROJECT]</var>/models/<var>[YOUR_MODEL]</var>"`
        "runtimeVersion": "A String", # Optional. The Google Cloud ML runtime version to use for this batch
            # prediction. If not set, Google Cloud ML will pick the runtime version used
            # during the CreateVersion request for this model version, or choose the
            # latest stable version when model version information is not available
            # such as when the model is specified by uri.
        "inputPaths": [ # Required. The Google Cloud Storage location of the input data files.
            # May contain wildcards.
          "A String",
        ],
        "maxWorkerCount": "A String", # Optional. The maximum number of workers to be used for parallel processing.
            # Defaults to 10 if not specified.
        "uri": "A String", # Use this field if you want to specify a Google Cloud Storage path for
            # the model to use.
        "outputPath": "A String", # Required. The output Google Cloud Storage location.
        "dataFormat": "A String", # Required. The format of the input data files.
        "versionName": "A String", # Use this field if you want to specify a version of the model to use. The
            # string is formatted the same way as `model_version`, with the addition
            # of the version information:
            #
            # `"projects/<var>[YOUR_PROJECT]</var>/models/<var>YOUR_MODEL/versions/<var>[YOUR_VERSION]</var>"`
        "region": "A String", # Required. The Google Compute Engine region to run the prediction job in.
      },
      "endTime": "A String", # Output only. When the job processing was completed.
      "predictionOutput": { # Represents results of a prediction job. # The current prediction job result.
        "outputPath": "A String", # The output Google Cloud Storage location provided at the job creation time.
        "nodeHours": 3.14, # Node hours used by the batch prediction job.
        "predictionCount": "A String", # The number of generated predictions.
        "errorCount": "A String", # The number of data instances which resulted in errors.
      },
      "createTime": "A String", # Output only. When the job was created.
    }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Describes a job.

Args:
  name: string, Required. The name of the job to get the description of.

Authorization: requires `Viewer` role on the parent project. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents a training or prediction job.
      "trainingOutput": { # Represents results of a training job. Output only. # The current training job result.
        "completedTrialCount": "A String", # The number of hyperparameter tuning trials that completed successfully.
            # Only set for hyperparameter tuning jobs.
        "isHyperparameterTuningJob": True or False, # Whether this job is a hyperparameter tuning job.
        "trials": [ # Results for individual Hyperparameter trials.
            # Only set for hyperparameter tuning jobs.
          { # Represents the result of a single hyperparameter tuning trial from a
              # training job. The TrainingOutput object that is returned on successful
              # completion of a training job with hyperparameter tuning includes a list
              # of HyperparameterOutput objects, one for each successful trial.
            "hyperparameters": { # The hyperparameters given to this trial.
              "a_key": "A String",
            },
            "trialId": "A String", # The trial id for these results.
            "allMetrics": [ # All recorded object metrics for this trial.
              { # An observed value of a metric.
                "trainingStep": "A String", # The global training step for this metric.
                "objectiveValue": 3.14, # The objective value at this training step.
              },
            ],
            "finalMetric": { # An observed value of a metric. # The final objective metric seen for this trial.
              "trainingStep": "A String", # The global training step for this metric.
              "objectiveValue": 3.14, # The objective value at this training step.
            },
          },
        ],
        "consumedMLUnits": 3.14, # The amount of ML units consumed by the job.
      },
      "trainingInput": { # Represents input parameters for a training job. # Input parameters to create a training job.
        "workerType": "A String", # Optional. Specifies the type of virtual machine to use for your training
            # job's worker nodes.
            #
            # The supported values are the same as those described in the entry for
            # `masterType`.
            #
            # This value must be present when `scaleTier` is set to `CUSTOM` and
            # `workerCount` is greater than zero.
        "runtimeVersion": "A String", # Optional. The Google Cloud ML runtime version to use for training.  If not
            # set, Google Cloud ML will choose the latest stable version.
        "scaleTier": "A String", # Required. Specifies the machine types, the number of replicas for workers
            # and parameter servers.
        "masterType": "A String", # Optional. Specifies the type of virtual machine to use for your training
            # job's master worker.
            #
            # The following types are supported:
            #
            # <dl>
            #   <dt>standard</dt>
            #   <dd>
            #   A basic machine configuration suitable for training simple models with
            #   small to moderate datasets.
            #   </dd>
            #   <dt>large_model</dt>
            #   <dd>
            #   A machine with a lot of memory, specially suited for parameter servers
            #   when your model is large (having many hidden layers or layers with very
            #   large numbers of nodes).
            #   </dd>
            #   <dt>complex_model_s</dt>
            #   <dd>
            #   A machine suitable for the master and workers of the cluster when your
            #   model requires more computation than the standard machine can handle
            #   satisfactorily.
            #   </dd>
            #   <dt>complex_model_m</dt>
            #   <dd>
            #   A machine with roughly twice the number of cores and roughly double the
            #   memory of <code suppresswarning="true">complex_model_s</code>.
            #   </dd>
            #   <dt>complex_model_l</dt>
            #   <dd>
            #   A machine with roughly twice the number of cores and roughly double the
            #   memory of <code suppresswarning="true">complex_model_m</code>.
            #   </dd>
            #   <dt>standard_gpu</dt>
            #   <dd>
            #   A machine equivalent to <code suppresswarning="true">standard</code> that
            #   also includes a
            #   <a href="/ml-engine/docs/how-tos/using-gpus">
            #   GPU that you can use in your trainer</a>.
            #   </dd>
            #   <dt>complex_model_m_gpu</dt>
            #   <dd>
            #   A machine equivalent to
            #   <code suppresswarning="true">complex_model_m</code> that also includes
            #   four GPUs.
            #   </dd>
            # </dl>
            #
            # You must set this value when `scaleTier` is set to `CUSTOM`.
        "hyperparameters": { # Represents a set of hyperparameters to optimize. # Optional. The set of Hyperparameters to tune.
          "maxTrials": 42, # Optional. How many training trials should be attempted to optimize
              # the specified hyperparameters.
              #
              # Defaults to one.
          "hyperparameterMetricTag": "A String", # Optional. The Tensorflow summary tag name to use for optimizing trials. For
              # current versions of Tensorflow, this tag name should exactly match what is
              # shown in Tensorboard, including all scopes.  For versions of Tensorflow
              # prior to 0.12, this should be only the tag passed to tf.Summary.
              # By default, "training/hptuning/metric" will be used.
          "params": [ # Required. The set of parameters to tune.
            { # Represents a single hyperparameter to optimize.
              "maxValue": 3.14, # Required if typeis `DOUBLE` or `INTEGER`. This field
                  # should be unset if type is `CATEGORICAL`. This value should be integers if
                  # type is `INTEGER`.
              "categoricalValues": [ # Required if type is `CATEGORICAL`. The list of possible categories.
                "A String",
              ],
              "discreteValues": [ # Required if type is `DISCRETE`.
                  # A list of feasible points.
                  # The list should be in strictly increasing order. For instance, this
                  # parameter might have possible settings of 1.5, 2.5, and 4.0. This list
                  # should not contain more than 1,000 values.
                3.14,
              ],
              "parameterName": "A String", # Required. The parameter name must be unique amongst all ParameterConfigs in
                  # a HyperparameterSpec message. E.g., "learning_rate".
              "minValue": 3.14, # Required if type is `DOUBLE` or `INTEGER`. This field
                  # should be unset if type is `CATEGORICAL`. This value should be integers if
                  # type is INTEGER.
              "type": "A String", # Required. The type of the parameter.
              "scaleType": "A String", # Optional. How the parameter should be scaled to the hypercube.
                  # Leave unset for categorical parameters.
                  # Some kind of scaling is strongly recommended for real or integral
                  # parameters (e.g., `UNIT_LINEAR_SCALE`).
            },
          ],
          "maxParallelTrials": 42, # Optional. The number of training trials to run concurrently.
              # You can reduce the time it takes to perform hyperparameter tuning by adding
              # trials in parallel. However, each trail only benefits from the information
              # gained in completed trials. That means that a trial does not get access to
              # the results of trials running at the same time, which could reduce the
              # quality of the overall optimization.
              #
              # Each trial will use the same scale tier and machine types.
              #
              # Defaults to one.
          "goal": "A String", # Required. The type of goal to use for tuning. Available types are
              # `MAXIMIZE` and `MINIMIZE`.
              #
              # Defaults to `MAXIMIZE`.
        },
        "region": "A String", # Required. The Google Compute Engine region to run the training job in.
        "args": [ # Optional. Command line arguments to pass to the program.
          "A String",
        ],
        "pythonModule": "A String", # Required. The Python module name to run after installing the packages.
        "jobDir": "A String", # Optional. A Google Cloud Storage path in which to store training outputs
            # and other data needed for training. This path is passed to your TensorFlow
            # program as the 'job_dir' command-line argument. The benefit of specifying
            # this field is that Cloud ML validates the path for use in training.
        "packageUris": [ # Required. The Google Cloud Storage location of the packages with
            # the training program and any additional dependencies.
            # The maximum number of package URIs is 100.
          "A String",
        ],
        "workerCount": "A String", # Optional. The number of worker replicas to use for the training job. Each
            # replica in the cluster will be of the type specified in `worker_type`.
            #
            # This value can only be used when `scale_tier` is set to `CUSTOM`. If you
            # set this value, you must also set `worker_type`.
        "parameterServerType": "A String", # Optional. Specifies the type of virtual machine to use for your training
            # job's parameter server.
            #
            # The supported values are the same as those described in the entry for
            # `master_type`.
            #
            # This value must be present when `scaleTier` is set to `CUSTOM` and
            # `parameter_server_count` is greater than zero.
        "parameterServerCount": "A String", # Optional. The number of parameter server replicas to use for the training
            # job. Each replica in the cluster will be of the type specified in
            # `parameter_server_type`.
            #
            # This value can only be used when `scale_tier` is set to `CUSTOM`.If you
            # set this value, you must also set `parameter_server_type`.
      },
      "startTime": "A String", # Output only. When the job processing was started.
      "errorMessage": "A String", # Output only. The details of a failure or a cancellation.
      "jobId": "A String", # Required. The user-specified id of the job.
      "state": "A String", # Output only. The detailed state of a job.
      "predictionInput": { # Represents input parameters for a prediction job. # Input parameters to create a prediction job.
        "modelName": "A String", # Use this field if you want to use the default version for the specified
            # model. The string must use the following format:
            #
            # `"projects/<var>[YOUR_PROJECT]</var>/models/<var>[YOUR_MODEL]</var>"`
        "runtimeVersion": "A String", # Optional. The Google Cloud ML runtime version to use for this batch
            # prediction. If not set, Google Cloud ML will pick the runtime version used
            # during the CreateVersion request for this model version, or choose the
            # latest stable version when model version information is not available
            # such as when the model is specified by uri.
        "inputPaths": [ # Required. The Google Cloud Storage location of the input data files.
            # May contain wildcards.
          "A String",
        ],
        "maxWorkerCount": "A String", # Optional. The maximum number of workers to be used for parallel processing.
            # Defaults to 10 if not specified.
        "uri": "A String", # Use this field if you want to specify a Google Cloud Storage path for
            # the model to use.
        "outputPath": "A String", # Required. The output Google Cloud Storage location.
        "dataFormat": "A String", # Required. The format of the input data files.
        "versionName": "A String", # Use this field if you want to specify a version of the model to use. The
            # string is formatted the same way as `model_version`, with the addition
            # of the version information:
            #
            # `"projects/<var>[YOUR_PROJECT]</var>/models/<var>YOUR_MODEL/versions/<var>[YOUR_VERSION]</var>"`
        "region": "A String", # Required. The Google Compute Engine region to run the prediction job in.
      },
      "endTime": "A String", # Output only. When the job processing was completed.
      "predictionOutput": { # Represents results of a prediction job. # The current prediction job result.
        "outputPath": "A String", # The output Google Cloud Storage location provided at the job creation time.
        "nodeHours": 3.14, # Node hours used by the batch prediction job.
        "predictionCount": "A String", # The number of generated predictions.
        "errorCount": "A String", # The number of data instances which resulted in errors.
      },
      "createTime": "A String", # Output only. When the job was created.
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, filter=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists the jobs in the project.

Args:
  parent: string, Required. The name of the project for which to list jobs.

Authorization: requires `Viewer` role on the specified project. (required)
  pageSize: integer, Optional. The number of jobs to retrieve per "page" of results. If there
are more remaining results than this number, the response message will
contain a valid value in the `next_page_token` field.

The default value is 20, and the maximum page size is 100.
  filter: string, Optional. Specifies the subset of jobs to retrieve.
  pageToken: string, Optional. A page token to request the next page of results.

You get the token from the `next_page_token` field of the response from
the previous call.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for the ListJobs method.
    "nextPageToken": "A String", # Optional. Pass this token as the `page_token` field of the request for a
        # subsequent call.
    "jobs": [ # The list of jobs.
      { # Represents a training or prediction job.
          "trainingOutput": { # Represents results of a training job. Output only. # The current training job result.
            "completedTrialCount": "A String", # The number of hyperparameter tuning trials that completed successfully.
                # Only set for hyperparameter tuning jobs.
            "isHyperparameterTuningJob": True or False, # Whether this job is a hyperparameter tuning job.
            "trials": [ # Results for individual Hyperparameter trials.
                # Only set for hyperparameter tuning jobs.
              { # Represents the result of a single hyperparameter tuning trial from a
                  # training job. The TrainingOutput object that is returned on successful
                  # completion of a training job with hyperparameter tuning includes a list
                  # of HyperparameterOutput objects, one for each successful trial.
                "hyperparameters": { # The hyperparameters given to this trial.
                  "a_key": "A String",
                },
                "trialId": "A String", # The trial id for these results.
                "allMetrics": [ # All recorded object metrics for this trial.
                  { # An observed value of a metric.
                    "trainingStep": "A String", # The global training step for this metric.
                    "objectiveValue": 3.14, # The objective value at this training step.
                  },
                ],
                "finalMetric": { # An observed value of a metric. # The final objective metric seen for this trial.
                  "trainingStep": "A String", # The global training step for this metric.
                  "objectiveValue": 3.14, # The objective value at this training step.
                },
              },
            ],
            "consumedMLUnits": 3.14, # The amount of ML units consumed by the job.
          },
          "trainingInput": { # Represents input parameters for a training job. # Input parameters to create a training job.
            "workerType": "A String", # Optional. Specifies the type of virtual machine to use for your training
                # job's worker nodes.
                #
                # The supported values are the same as those described in the entry for
                # `masterType`.
                #
                # This value must be present when `scaleTier` is set to `CUSTOM` and
                # `workerCount` is greater than zero.
            "runtimeVersion": "A String", # Optional. The Google Cloud ML runtime version to use for training.  If not
                # set, Google Cloud ML will choose the latest stable version.
            "scaleTier": "A String", # Required. Specifies the machine types, the number of replicas for workers
                # and parameter servers.
            "masterType": "A String", # Optional. Specifies the type of virtual machine to use for your training
                # job's master worker.
                #
                # The following types are supported:
                #
                # <dl>
                #   <dt>standard</dt>
                #   <dd>
                #   A basic machine configuration suitable for training simple models with
                #   small to moderate datasets.
                #   </dd>
                #   <dt>large_model</dt>
                #   <dd>
                #   A machine with a lot of memory, specially suited for parameter servers
                #   when your model is large (having many hidden layers or layers with very
                #   large numbers of nodes).
                #   </dd>
                #   <dt>complex_model_s</dt>
                #   <dd>
                #   A machine suitable for the master and workers of the cluster when your
                #   model requires more computation than the standard machine can handle
                #   satisfactorily.
                #   </dd>
                #   <dt>complex_model_m</dt>
                #   <dd>
                #   A machine with roughly twice the number of cores and roughly double the
                #   memory of <code suppresswarning="true">complex_model_s</code>.
                #   </dd>
                #   <dt>complex_model_l</dt>
                #   <dd>
                #   A machine with roughly twice the number of cores and roughly double the
                #   memory of <code suppresswarning="true">complex_model_m</code>.
                #   </dd>
                #   <dt>standard_gpu</dt>
                #   <dd>
                #   A machine equivalent to <code suppresswarning="true">standard</code> that
                #   also includes a
                #   <a href="/ml-engine/docs/how-tos/using-gpus">
                #   GPU that you can use in your trainer</a>.
                #   </dd>
                #   <dt>complex_model_m_gpu</dt>
                #   <dd>
                #   A machine equivalent to
                #   <code suppresswarning="true">complex_model_m</code> that also includes
                #   four GPUs.
                #   </dd>
                # </dl>
                #
                # You must set this value when `scaleTier` is set to `CUSTOM`.
            "hyperparameters": { # Represents a set of hyperparameters to optimize. # Optional. The set of Hyperparameters to tune.
              "maxTrials": 42, # Optional. How many training trials should be attempted to optimize
                  # the specified hyperparameters.
                  #
                  # Defaults to one.
              "hyperparameterMetricTag": "A String", # Optional. The Tensorflow summary tag name to use for optimizing trials. For
                  # current versions of Tensorflow, this tag name should exactly match what is
                  # shown in Tensorboard, including all scopes.  For versions of Tensorflow
                  # prior to 0.12, this should be only the tag passed to tf.Summary.
                  # By default, "training/hptuning/metric" will be used.
              "params": [ # Required. The set of parameters to tune.
                { # Represents a single hyperparameter to optimize.
                  "maxValue": 3.14, # Required if typeis `DOUBLE` or `INTEGER`. This field
                      # should be unset if type is `CATEGORICAL`. This value should be integers if
                      # type is `INTEGER`.
                  "categoricalValues": [ # Required if type is `CATEGORICAL`. The list of possible categories.
                    "A String",
                  ],
                  "discreteValues": [ # Required if type is `DISCRETE`.
                      # A list of feasible points.
                      # The list should be in strictly increasing order. For instance, this
                      # parameter might have possible settings of 1.5, 2.5, and 4.0. This list
                      # should not contain more than 1,000 values.
                    3.14,
                  ],
                  "parameterName": "A String", # Required. The parameter name must be unique amongst all ParameterConfigs in
                      # a HyperparameterSpec message. E.g., "learning_rate".
                  "minValue": 3.14, # Required if type is `DOUBLE` or `INTEGER`. This field
                      # should be unset if type is `CATEGORICAL`. This value should be integers if
                      # type is INTEGER.
                  "type": "A String", # Required. The type of the parameter.
                  "scaleType": "A String", # Optional. How the parameter should be scaled to the hypercube.
                      # Leave unset for categorical parameters.
                      # Some kind of scaling is strongly recommended for real or integral
                      # parameters (e.g., `UNIT_LINEAR_SCALE`).
                },
              ],
              "maxParallelTrials": 42, # Optional. The number of training trials to run concurrently.
                  # You can reduce the time it takes to perform hyperparameter tuning by adding
                  # trials in parallel. However, each trail only benefits from the information
                  # gained in completed trials. That means that a trial does not get access to
                  # the results of trials running at the same time, which could reduce the
                  # quality of the overall optimization.
                  #
                  # Each trial will use the same scale tier and machine types.
                  #
                  # Defaults to one.
              "goal": "A String", # Required. The type of goal to use for tuning. Available types are
                  # `MAXIMIZE` and `MINIMIZE`.
                  #
                  # Defaults to `MAXIMIZE`.
            },
            "region": "A String", # Required. The Google Compute Engine region to run the training job in.
            "args": [ # Optional. Command line arguments to pass to the program.
              "A String",
            ],
            "pythonModule": "A String", # Required. The Python module name to run after installing the packages.
            "jobDir": "A String", # Optional. A Google Cloud Storage path in which to store training outputs
                # and other data needed for training. This path is passed to your TensorFlow
                # program as the 'job_dir' command-line argument. The benefit of specifying
                # this field is that Cloud ML validates the path for use in training.
            "packageUris": [ # Required. The Google Cloud Storage location of the packages with
                # the training program and any additional dependencies.
                # The maximum number of package URIs is 100.
              "A String",
            ],
            "workerCount": "A String", # Optional. The number of worker replicas to use for the training job. Each
                # replica in the cluster will be of the type specified in `worker_type`.
                #
                # This value can only be used when `scale_tier` is set to `CUSTOM`. If you
                # set this value, you must also set `worker_type`.
            "parameterServerType": "A String", # Optional. Specifies the type of virtual machine to use for your training
                # job's parameter server.
                #
                # The supported values are the same as those described in the entry for
                # `master_type`.
                #
                # This value must be present when `scaleTier` is set to `CUSTOM` and
                # `parameter_server_count` is greater than zero.
            "parameterServerCount": "A String", # Optional. The number of parameter server replicas to use for the training
                # job. Each replica in the cluster will be of the type specified in
                # `parameter_server_type`.
                #
                # This value can only be used when `scale_tier` is set to `CUSTOM`.If you
                # set this value, you must also set `parameter_server_type`.
          },
          "startTime": "A String", # Output only. When the job processing was started.
          "errorMessage": "A String", # Output only. The details of a failure or a cancellation.
          "jobId": "A String", # Required. The user-specified id of the job.
          "state": "A String", # Output only. The detailed state of a job.
          "predictionInput": { # Represents input parameters for a prediction job. # Input parameters to create a prediction job.
            "modelName": "A String", # Use this field if you want to use the default version for the specified
                # model. The string must use the following format:
                #
                # `"projects/<var>[YOUR_PROJECT]</var>/models/<var>[YOUR_MODEL]</var>"`
            "runtimeVersion": "A String", # Optional. The Google Cloud ML runtime version to use for this batch
                # prediction. If not set, Google Cloud ML will pick the runtime version used
                # during the CreateVersion request for this model version, or choose the
                # latest stable version when model version information is not available
                # such as when the model is specified by uri.
            "inputPaths": [ # Required. The Google Cloud Storage location of the input data files.
                # May contain wildcards.
              "A String",
            ],
            "maxWorkerCount": "A String", # Optional. The maximum number of workers to be used for parallel processing.
                # Defaults to 10 if not specified.
            "uri": "A String", # Use this field if you want to specify a Google Cloud Storage path for
                # the model to use.
            "outputPath": "A String", # Required. The output Google Cloud Storage location.
            "dataFormat": "A String", # Required. The format of the input data files.
            "versionName": "A String", # Use this field if you want to specify a version of the model to use. The
                # string is formatted the same way as `model_version`, with the addition
                # of the version information:
                #
                # `"projects/<var>[YOUR_PROJECT]</var>/models/<var>YOUR_MODEL/versions/<var>[YOUR_VERSION]</var>"`
            "region": "A String", # Required. The Google Compute Engine region to run the prediction job in.
          },
          "endTime": "A String", # Output only. When the job processing was completed.
          "predictionOutput": { # Represents results of a prediction job. # The current prediction job result.
            "outputPath": "A String", # The output Google Cloud Storage location provided at the job creation time.
            "nodeHours": 3.14, # Node hours used by the batch prediction job.
            "predictionCount": "A String", # The number of generated predictions.
            "errorCount": "A String", # The number of data instances which resulted in errors.
          },
          "createTime": "A String", # Output only. When the job was created.
        },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>