tfboys——tensorflow模塊學習(三)

tf.estimator模塊

定義在:tensorflow/python/estimator/estimator_lib.pyhtml

估算器(Estimator): 用於處理模型的高級工具。python

主要模塊

export 模塊:用於導出估算器的實用方法。git

inputs 模塊:用於建立簡單的 input_fns 的實用方法。app

class DNNClassifier:TensorFlow DNN 模型的分類器。ide

class DNNLinearCombinedClassifier:TensorFlow Linear 和 DNN 鏈接的分類模型的估計器。函數

class DNNLinearCombinedRegressor:TensorFlow Linear 和 DNN 鏈接的迴歸模型的估計器。工具

class DNNRegressor:TensorFlow DNN 模型的迴歸器。測試

class Estimator:用於訓練和評估 TensorFlow 模型的估計器類。優化

class EstimatorSpec:從 model_fn 返回的操做和對象,並傳遞給 Estimator。ui

class LinearClassifier:線性分類器模型。

class LinearRegressor:TensorFlow 線性迴歸問題的估計器。

class ModeKeys:模型模式的標準名稱。

class RunConfig:此類指定 Estimator 運行的配置。

函數

classifier_parse_example_spec(...):爲 tf.parse_example 生成用於分類器的解析規範。

regressor_parse_example_spec(...):爲 tf.parse_example 生成用於迴歸的解析規範。


tf.estimator.classifier_parse_example_spec    生成解析規範

classifier_parse_example_spec(
    feature_columns,
    label_key,
    label_dtype=tf.int64,
    label_default=None,
    weight_column=None
)

定義在:tensorflow/python/estimator/canned/parsing_utils.py

生成用於分類器的 tf.parse_example 的解析規範。

若是用戶將數據保存在 tf.Example 格式中,則須要使用適當的函數參數調用 tf. parse_example。此實用程序有兩個主要的幫助:

  • 用戶須要將函數的解析規範與標籤和權重(若是有的話)相結合,由於它們都是從相同的 tf.Example 實例中解析出來的。該實用程序組合了這些規範。
  • 經過分類器(如 DNNClassifie)將預期標籤映射到相應的 tf.parse_example 規範是很困難的。該實用程序經過用戶(key,dtype)獲取相關信息對其進行編碼。

解析規範示例輸出:

# Define features and transformations
feature_b = tf.feature_column.numeric_column(...)
feature_c_bucketized = tf.feature_column.bucketized_column(
  tf.feature_column.numeric_column("feature_c"), ...)
feature_a_x_feature_c = tf.feature_column.crossed_column(
    columns=["feature_a", feature_c_bucketized], ...)

feature_columns = [feature_b, feature_c_bucketized, feature_a_x_feature_c]
parsing_spec = tf.estimator.classifier_parse_example_spec(
    feature_columns, label_key='my-label', label_dtype=tf.string)

# For the above example, classifier_parse_example_spec would return the dict:
assert parsing_spec == {
  "feature_a": parsing_ops.VarLenFeature(tf.string),
  "feature_b": parsing_ops.FixedLenFeature([1], dtype=tf.float32),
  "feature_c": parsing_ops.FixedLenFeature([1], dtype=tf.float32)
  "my-label" : parsing_ops.FixedLenFeature([1], dtype=tf.string)
}

分類器使用示例:

feature_columns = # define features via tf.feature_column
estimator = DNNClassifier(
    n_classes=1000,
    feature_columns=feature_columns,
    weight_column='example-weight',
    label_vocabulary=['photos', 'keep', ...],
    hidden_units=[256, 64, 16])
# This label configuration tells the classifier the following:
# * weights are retrieved with key 'example-weight'
# * label is string and can be one of the following ['photos', 'keep', ...]
# * integer id for label 'photos' is 0, 'keep' is 1, ...

# Input builders
def input_fn_train():  # Returns a tuple of features and labels.
  features = tf.contrib.learn.read_keyed_batch_features(
      file_pattern=train_files,
      batch_size=batch_size,
      # creates parsing configuration for tf.parse_example
      features=tf.estimator.classifier_parse_example_spec(
          feature_columns,
          label_key='my-label',
          label_dtype=tf.string,
          weight_column='example-weight'),
      reader=tf.RecordIOReader)
   labels = features.pop('my-label')
   return features, labels

estimator.train(input_fn=input_fn_train)
ARGS:
  • feature_columns:一個包含全部特徵列的 iterable。全部項目都應該是從 _FeatureColumn 派生的類的實例。
  • label_key:標識標籤的字符串。這意味着 tf.Example 使用這個鍵存儲標籤。
  • label_dtype:一個 tf.dtype 標識標籤的類型。默認狀況下是 tf.int64。若是用戶定義了一個 label_vocabulary,則應將其設置爲 tf.string。tf.float32 標籤僅支持二進制分類。
  • label_default:若是在給定的 tf.Example 中不存在 label_key,則用做標籤。一個示例用法:假設 label_key 是 「clicked」,而且 tf.Example 僅包含如下 key 格式的正示例的點擊數據:clicked, value:1。這意味着若是沒有鍵 「clicked」 的數據,應該經過設置 label_deafault=0 來計算爲負的示例。該值的類型應與 label_dtype 兼容。 
  • weight_column:經過 tf.feature_column.numeric_column 建立的一個字符串或者 _NumericColumn,用來定義表示權重的特徵列。在訓練過程當中,它用於下降權重或增長實例。它將乘以示例的損失。若是它是一個字符串,它被用做 key 並從特徵中獲取權重張量。若是是 _NumericColumn,則經過鍵weight_column.key 獲取原始張量,而後在其上應用 weight_column.normalizer_fn 以得到權重張量。
返回:

返回一個字典將每一個特徵鍵映射到 FixedLenFeature 或 VarLenFeature 值。

注意:
  • ValueError:若是標籤中使用 feature_columns。
  • ValueError:若是在 feature_columns 中使用 weight_column 。
  • ValueError:若是給定的 feature_columns 不是一個 _FeatureColumn 實例。
  • ValueError:若是 weight_column 不是一個 _NumericColumn 實例。
  • ValueError:若是 label_key 爲 None。

tf.estimator.DNNClassifier    使用DNN模型分類器

DNNClassifier 類

繼承自: Estimator

定義在:tensorflow/python/estimator/canned/dnn.py

TensorFlow DNN 模型的分類器。

例:

sparse_feature_a = sparse_column_with_hash_bucket(...)
sparse_feature_b = sparse_column_with_hash_bucket(...)

sparse_feature_a_emb = embedding_column(sparse_id_column=sparse_feature_a,
                                        ...)
sparse_feature_b_emb = embedding_column(sparse_id_column=sparse_feature_b,
                                        ...)

estimator = DNNClassifier(
    feature_columns=[sparse_feature_a_emb, sparse_feature_b_emb],
    hidden_units=[1024, 512, 256])

# Or estimator using the ProximalAdagradOptimizer optimizer with
# regularization.
estimator = DNNClassifier(
    feature_columns=[sparse_feature_a_emb, sparse_feature_b_emb],
    hidden_units=[1024, 512, 256],
    optimizer=tf.train.ProximalAdagradOptimizer(
      learning_rate=0.1,
      l1_regularization_strength=0.001
    ))

# Input builders
def input_fn_train: # returns x, y
  pass
estimator.train(input_fn=input_fn_train, steps=100)

def input_fn_eval: # returns x, y
  pass
metrics = estimator.evaluate(input_fn=input_fn_eval, steps=10)
def input_fn_predict: # returns x, None
  pass
predictions = estimator.predict(input_fn=input_fn_predict)

輸入的 train 和 evaluate 應具備如下特色,不然將會產生 KeyError:

  • 若是 weight_column 不是 None,則有特性:key=weight_column,其值爲張量。
  • 對於 feature_columns 中的每一列:
  • 若是列是 _CategoricalColumn,則有特性:key=column.name,其值是一個 SparseTensor。
  • 若是列是一個 _WeightedCategoricalColumn,則有兩個特性:第一個是帶有 key 的 id 列名稱,第二個是帶有 key 的權重列名稱。這兩個特性的值必須是SparseTensor。
  • 若是列是 _DenseColumn,則有一個特性:key=column.name,其值是一個 Tensor。

損失是經過使用 softmax 交叉熵計算的。

屬性

  • config
  • model_dir
  • params

方法

__init__
__init__(
    hidden_units,
    feature_columns,
    model_dir=None,
    n_classes=2,
    weight_column=None,
    label_vocabulary=None,
    optimizer='Adagrad',
    activation_fn=tf.nn.relu,
    dropout=None,
    input_layer_partitioner=None,
    config=None
)

初始化一個 DNNClassifier 實例。

ARGS:
  • hidden_units:每層隱藏單元的 Iterable 數。全部層都徹底鏈接。注意:[64, 32]意味着第一層有64個節點,第二層有32個節點。
  • feature_columns:包含模型使用的全部特徵列的  iterable。集合中的全部項目都應該是從 _FeatureColumn 派生的類的實例。
  • model_dir:用來保存模型參數,圖形等的目錄。這也可用於將檢查點從目錄加載到 estimator 中,以繼續訓練之前保存的模型。
  • n_classes:標籤類的數量。默認爲 2,即二進制分類,必須大於1。
  • weight_column:經過 tf.feature_column.numeric_column 建立的一個字符串或者 _NumericColumn,用來定義表示權重的特徵列。在訓練過程當中,它用於下降權重或增長實例。它將乘以示例的損失。若是它是一個字符串,則被用做從特徵中中獲取權重張量的 key;若是是 _NumericColumn,則經過鍵 weight_column.key 獲取原始張量,而後在其上應用 weight_column.normalizer_fn 以得到權重張量。
  • label_vocabulary:字符串列表,表示可能的標籤值。若是給定,標籤必須是字符串類型,而且 label_vocabulary 具備任何值。若是沒有給出,這意味着標籤已經被編碼爲整數或者在[0,1]內浮動, n_classes=2 ;而且被編碼爲{0,1,...,n_classes-1}中的整數值,n_classes> 2。若是沒有提供詞彙表而且標籤是字符串,也會出現錯誤。
  • optimizer:tf.Optimizer 用於訓練模型的實例。默認爲 Adagrad 優化器。
  • activation_fn:激活函數應用於每一個層。若是爲 None,將使用 tf.nn.relu。
  • dropout:當不是 None 時,咱們將放棄給定座標的機率。
  • input_layer_partitioner: (可選)輸入層分區。默認爲 min_max_variable_partitioner 與 min_slice_size64 << 20。
  • config:RunConfig 對象配置運行時設置。
evaluate
evaluate(
    input_fn,
    steps=None,
    hooks=None,
    checkpoint_path=None,
    name=None
)

評估給定的評估數據 input_fn 的模型。
對於每一個步驟,調用 input_fn,它返回一組數據。評估結束條件:達到 - steps 批處理,或 - input_fn 引起 end-of-input 異常(OutOfRangeError 或 StopIteration)。

ARGS:
  • input_fn:輸入函數返回一個元組:features - Dictionary 的字符串特徵名到 Tensor 或 SparseTensor。labels - Tensor或帶標籤的張量字典。
  • steps:評估模型的步驟數。若是爲 None,直到 input_fn 引起 end-of-input 異常時,評估結束。
  • hooks:SessionRunHook 子類實例的列表,用於評估調用中的回調。
  • checkpoint_path:要評估的特定檢查點的路徑。若是爲 None,則使用 model_dir 中的最新檢查點。
  • name:若是用戶須要在不一樣數據集上運行多個評估,例如培訓數據與測試數據,則設置評估的名稱。不一樣評估的度量值保存在單獨的文件夾中,並在 tensorboard 中單獨顯示。
返回:

包含 model_fn 按名稱鍵入指定的評估度量的 dict ,以及一個條目 global_step,它包含執行此評估的全局步驟值。

注意:
  • ValueError:若是 steps <= 0。
  • ValueError:若是沒有訓練模型,即 model_dir,或者給定的 checkpoint_path 是空的。
export_savedmodel
export_savedmodel(
    export_dir_base,
    serving_input_receiver_fn,
    assets_extra=None,
    as_text=False,
    checkpoint_path=None
)

將推理圖做爲 SavedModel 導出到給定的目錄中。

此方法首先調用 serve_input_receiver_fn 來獲取特徵 Tensors,而後調用此 Estimator 的 model_fn 以生成基於這些特徵的模型圖,從而構建新的圖。它在新的會話中將給定的檢查點(或缺乏最新的檢查點)還原到此圖中。最後,它在給定的 export_dir_base 下面建立一個時間戳的導出目錄,並將 SavedModel 寫入其中,其中包含今後會話保存的單個 MetaGraphDef。

導出的 MetaGraphDef 將爲從 model_fn 返回的 export_outputs 字典的每一個元素提供一個 SignatureDef,使用相同的鍵命名。這些密鑰之一始終是signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY,指示當一個服務請求沒有指定時將提供哪一個簽名。對於每一個簽名,輸出由相應的ExportOutputs 提供,而且輸入始終是由 serve_input_receiver_fn 提供的輸入接收器。

額外的資產能夠經過 extra_assets 參數寫入 SavedModel。這應該是一個 dict,其中每一個鍵都給出了相對於 assets.extra 目錄的目標路徑(包括文件名)。相應的值給出要複製的源文件的完整路徑。例如,複製單個文件而不重命名的簡單狀況被指定爲:{'my_asset_file.txt': '/path/to/my_asset_file.txt'}。

ARGS:
  • export_dir_base:一個包含一個目錄的字符串,用於建立包含導出的 SavedModels 的時間戳子目錄。
  • serving_input_receiver_fn:一個不帶參數並返回 ServingInputReceiver 的函數。
  • assets_extra:指定如何在導出的 SavedModel 中填充 asset.extra 目錄的 dict,若是爲 None,則不須要額外的資源。
  • as_text:是否以文本格式寫入 SavedModel 原型。
  • checkpoint_path:要導出的檢查點路徑。若是爲 None(默認值),則選擇在模型目錄中找到的最新檢查點。
返回:

導出目錄的字符串路徑。

注意:
  • ValueError:若是沒有提供 serve_input_receiver_fn,則不提供 export_outputs,或者沒有找到任何檢查點。
predict
predict(
    input_fn,
    predict_keys=None,
    hooks=None,
    checkpoint_path=None
)

返回給定功能的預測。

ARGS:
  • input_fn:輸入函數返回的特徵,是字符串特徵名稱字典的 Tensor 或 SparseTensor。若是它返回一個元組,則第一個項目被提取爲特徵。預測繼續,直到input_fn 引起 end-of-input 異常(OutOfRangeError 或 StopIteration)。
  • predict_keys:str 列表,要預測的鍵的名稱。若是 EstimatorSpec.predictions 是 dict,則使用它。若是使用 predict_keys,那麼其他的預測將從字典中過濾掉。若是爲 None,則返回全部。
  • hooks:SessionRunHook 子類實例列表。用於預測調用內的回調。
  • checkpoint_path:對具體檢查點的路徑進行預測。若是爲 None,則使用 model_dir 中的最新檢查點。
獲取:

計算預測張量的值。

注意:
  • ValueError:在 model_dir 中找不到訓練有素的模型。
  • ValueError:若是批量長度的預測不一致。
  • ValueError:若是 predict_keys 和 predictions 之間存在衝突。例如,若是 predict_keys 不是 None,但 EstimatorSpec.predictions 不是 dict。
train
train(
    input_fn,
    hooks=None,
    steps=None,
    max_steps=None
)

訓練一個給定訓練數據 input_fn 的模型。

ARGS:
  • input_fn:輸入函數返回一個元組:features - Dictionary 的字符串特徵名到 Tensor 或 SparseTensor。labels - Tensor 或帶標籤的張量字典。
  • hooks:SessionRunHook 子類實例列表。用於訓練循環內的回調。
  • steps:用於訓練模型的步驟數。若是爲 None,永遠訓練或訓練直到 input_fn 生成 OutOfRange 或 StopIteration 錯誤。「steps」是逐步進行的。若是你調用兩次 train(steps = 10),那麼 train 總共有20步。若是 OutOfRange 或 StopIteration 在中間出現差錯,train將在前20步以前中止。若是您不想增長行爲,請設置 max_steps 代替。若是設置,max_steps 必須爲 None。
  • max_steps:用於 train 模型的總步驟數。若是爲 None,永遠訓練或訓練,直到 input_fn 生成 OutOfRange 或 StopIteration 錯誤。若是設置,steps 必須爲None。若是 OutOfRange 或者 StopIteration 在中間出現差錯,訓練以前應中止 max_steps 步驟。兩次調用 train (steps=100) 意味着 200次 train 迭代。另外一方面,兩個調用 train(max_steps=100)意味着第二次調用將不會執行任何迭代,由於第一次調用完成了全部的100個步驟。
返回:

返回 self,用於連接。

注意:
  • ValueError:若是兩個 steps 和 max_steps 都不是 None。
  • ValueError:若是任一 steps 或是 max_steps <= 0。

tf.estimator.DNNLinearCombinedClassifier

DNNLinearCombinedClassifier 類

繼承自: Estimator

定義在:tensorflow/python/estimator/canned/dnn_linear_combined.py

TensorFlow Linear 和 DNN 的估算器(estimator)加入了分類模型。

注意:此估算器(estimator)也稱爲 wide-n-deep。

例:

numeric_feature = numeric_column(...)
sparse_column_a = categorical_column_with_hash_bucket(...)
sparse_column_b = categorical_column_with_hash_bucket(...)

sparse_feature_a_x_sparse_feature_b = crossed_column(...)
sparse_feature_a_emb = embedding_column(sparse_id_column=sparse_feature_a,
                                        ...)
sparse_feature_b_emb = embedding_column(sparse_id_column=sparse_feature_b,
                                        ...)

estimator = DNNLinearCombinedClassifier(
    # wide settings
    linear_feature_columns=[sparse_feature_a_x_sparse_feature_b],
    linear_optimizer=tf.train.FtrlOptimizer(...),
    # deep settings
    dnn_feature_columns=[
        sparse_feature_a_emb, sparse_feature_b_emb, numeric_feature],
    dnn_hidden_units=[1000, 500, 100],
    dnn_optimizer=tf.train.ProximalAdagradOptimizer(...))

# To apply L1 and L2 regularization, you can set optimizers as follows:
tf.train.ProximalAdagradOptimizer(
    learning_rate=0.1,
    l1_regularization_strength=0.001,
    l2_regularization_strength=0.001)
# It is same for FtrlOptimizer.

# Input builders
def input_fn_train: # returns x, y
  pass
estimator.train(input_fn=input_fn_train, steps=100)

def input_fn_eval: # returns x, y
  pass
metrics = estimator.evaluate(input_fn=input_fn_eval, steps=10)
def input_fn_predict: # returns x, None
  pass
predictions = estimator.predict(input_fn=input_fn_predict)

輸入的 train 和 evaluate 應具備如下特色,不然將會產生 KeyError:

  • 對於 dnn_feature_columns+ linear_feature_columns 中的每一列:
  • 若是列是 _CategoricalColumn,則具備 key=column.name 而且其值是一個 SparseTensor 的特色。
  • 若是列是一個 _WeightedCategoricalColumn,則具備兩個特色:第一個是帶有鍵的 ID 列名稱,第二個是具備鍵權重列名稱。這兩個特色的值必須是SparseTensor。 
  • 若是列是 _DenseColumn,則有特色:key = column.name 而且其值是一個 Tensor。

利用 softmax 交叉熵計算損失。

屬性

  • config
  • model_dir
  • params

方法

__init__
__init__(
    model_dir=None,
    linear_feature_columns=None,
    linear_optimizer='Ftrl',
    dnn_feature_columns=None,
    dnn_optimizer='Adagrad',
    dnn_hidden_units=None,
    dnn_activation_fn=tf.nn.relu,
    dnn_dropout=None,
    n_classes=2,
    weight_column=None,
    label_vocabulary=None,
    input_layer_partitioner=None,
    config=None
)

初始化 DNNLinearCombinedClassifier 實例。

ARGS:
  • model_dir:保存模型參數、圖形等的目錄。這也可用於將檢查點從目錄加載到估算器中,以繼續訓練之前保存的模型。
  • linear_feature_columns:包含模型線性部分使用的全部特徵列的 iterable(迭代)。集合中的全部項目都必須是從 FeatureColumn 派生的類的實例。
  • linear_optimizer:tf.Optimizer 用於將漸變應用於模型的線性部分的實例。默認爲 FTRL 優化器。
  • dnn_feature_columns:包含模型深層部分所使用的全部特徵列的 iterable。集合中的全部項目都必須是從 FeatureColumn 派生的類的實例。
  • dnn_optimizer:tf.Optimizer 用於將漸變應用於模型的深層部分的實例。默認爲 Adagrad 優化器。
  • dnn_hidden_units:每層隱藏單位的列表。全部層都徹底鏈接。
  • dnn_activation_fn:激活函數應用於每一個層。若是無,將使用 tf.nn.relu。
  • dnn_dropout:當不是 None 時,咱們將放棄一個給定的座標的機率。
  • n_classes:標籤類的數量。默認爲 2,即二進制分類,必須大於1。
  • weight_column:經過 tf.feature_column.numeric_column 建立的一個字符串或者 _NumericColumn 用來定義表示權重的特徵列。在 train 過程當中,它用於下降權重或增長實例。它將乘以例子的損失。若是它是一個字符串,它是用來做爲一個鍵從特徵提取權重張量;若是是 _NumericColumn,則經過鍵獲取原始張量weight_column.key,而後在其上應用 weight_column.normalizer_fn 以得到權重張量。
  • label_vocabulary:字符串列表表示可能的標籤值。若是給定,標籤必須是字符串類型,而且在 label_vocabulary 中具備任何值。若是沒有給出,這意味着標籤已經被編碼爲整數或者在[0,1]內浮動, n_classes=2 ;而且被編碼爲{0,1,...,n_classes-1}中的整數值,n_classes> 2。若是沒有提供詞彙表而且標籤是字符串,也會出現錯誤。
  • input_layer_partitioner:輸入層分區。默認爲 min_max_variable_partitioner 與 min_slice_size64 << 20。
  • config:RunConfig 對象配置運行時設置。
注意:
  • ValueError:若是 linear_feature_columns 和 dnn_features_columns 都同時爲空。
evaluate
evaluate(
    input_fn,
    steps=None,
    hooks=None,
    checkpoint_path=None,
    name=None
)

評估給定的評估數據 input_fn 的模型。

對於每一個步驟,調用 input_fn,它返回一組數據。評估結束條件:達到 - steps 批處理,或 - input_fn 引起 end-of-input 異常(OutOfRangeError 或 StopIteration)。

ARGS:
  • input_fn:輸入函數返回一個元組:features - Dictionary 的字符串特徵名到 Tensor 或 SparseTensor。labels - Tensor或帶標籤的張量字典(dict)。
  • steps:評估模型的步驟數。若是爲 None,直到 input_fn 引起 end-of-input 異常時,評估結束。
  • hooks:SessionRunHook 子類實例的列表,用於評估調用中的回調。
  • checkpoint_path:要評估的特定檢查點的路徑。若是爲 None,則使用 model_dir 中的最新檢查點。
  • name:若是用戶須要在不一樣數據集上運行多個評估,例如培訓數據與測試數據,則設置評估的名稱。不一樣評估的度量值保存在單獨的文件夾中,並在 tensorboard 中單獨顯示。
返回:

包含 model_fn 按名稱鍵入指定的評估度量的 dict ,以及一個條目 global_step,它包含執行此評估的全局步驟值。

注意:
  • ValueError:若是 steps <= 0。
  • ValueError:若是沒有 train 模型,即 model_dir,或者給定的 checkpoint_path 是空的。
export_savedmodel
export_savedmodel(
    export_dir_base,
    serving_input_receiver_fn,
    assets_extra=None,
    as_text=False,
    checkpoint_path=None
)

將推理圖做爲 SavedModel 導出到給定的目錄中。

此方法首先調用 serve_input_receiver_fn 來獲取特徵 Tensors,而後調用此 Estimator 的 model_fn 以生成基於這些特徵的模型圖,從而構建新的圖。它在新的會話中將給定的檢查點(或缺乏最新的檢查點)還原到此圖中。最後,它在給定的 export_dir_base 下面建立一個時間戳的導出目錄,並將 SavedModel 寫入其中,其中包含今後會話保存的單個 MetaGraphDef。

導出的 MetaGraphDef 將爲從 model_fn 返回的 export_outputs 字典的每一個元素提供一個 SignatureDef,使用相同的鍵命名。這些密鑰之一始終是signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY,指示當一個服務請求沒有指定時將提供哪一個簽名。對於每一個簽名,輸出由相應的ExportOutputs 提供,而且輸入始終是由 serve_input_receiver_fn 提供的輸入接收器。

額外的資產能夠經過 extra_assets 參數寫入 SavedModel。這應該是一個 dict,其中每一個鍵都給出了相對於 assets.extra 目錄的目標路徑(包括文件名)。相應的值給出要複製的源文件的完整路徑。例如,複製單個文件而不重命名的簡單狀況被指定爲:{'my_asset_file.txt': '/path/to/my_asset_file.txt'}。

ARGS:
  • export_dir_base:一個包含一個目錄的字符串,用於建立包含導出的 SavedModels 的時間戳子目錄。
  • serving_input_receiver_fn:一個不帶參數並返回 ServingInputReceiver 的函數。
  • assets_extra:指定如何在導出的 SavedModel 中填充 asset.extra 目錄的 dict,若是爲 None,則不須要額外的資源。
  • as_text:是否以文本格式寫入 SavedModel 原型。
  • checkpoint_path:要導出的檢查點路徑。若是爲 None(默認值),則選擇在模型目錄中找到的最新檢查點。
返回:

導出目錄的字符串路徑。

注意:
  • ValueError:若是沒有提供 serve_input_receiver_fn,則不提供 export_outputs,或者沒有找到任何檢查點。
predict
predict(
    input_fn,
    predict_keys=None,
    hooks=None,
    checkpoint_path=None
)

返回給定功能的預測。

ARGS:
  • input_fn:輸入函數返回的特徵,是字符串特徵名稱字典的 Tensor 或 SparseTensor。若是它返回一個元組,則第一個項目被提取爲特徵。預測繼續,直到input_fn 引起 end-of-input 異常(OutOfRangeError 或 StopIteration)。
  • predict_keys:str 列表,要預測的鍵的名稱。若是 EstimatorSpec.predictions 是 dict,則使用它。若是使用 predict_keys,那麼其他的預測將從字典中過濾掉。若是爲 None,則返回全部。
  • hooks:SessionRunHook 子類實例列表。用於預測調用內的回調。
  • checkpoint_path:對具體檢查點的路徑進行預測。若是爲 None,則使用 model_dir 中的最新檢查點。
獲得:

計算預測張量的值。

注意:
  • ValueError:在 model_dir 中找不到訓練有素的模型。
  • ValueError:若是批量長度的預測不一致。
  • ValueError:若是 predict_keys 和 predictions 之間存在衝突。例如,若是 predict_keys 不是 None,但 EstimatorSpec.predictions 不是 dict。
train
train(
    input_fn,
    hooks=None,
    steps=None,
    max_steps=None
)

訓練一個給定訓練數據 input_fn 的模型。

ARGS:
  • input_fn:輸入函數返回一個元組:features - Dictionary 的字符串特徵名到 Tensor 或 SparseTensor。labels - Tensor 或帶標籤的張量字典。
  • hooks:SessionRunHook 子類實例列表。用於訓練循環內的回調。
  • steps:用於訓練模型的步驟數。若是爲 None,永遠訓練或訓練直到 input_fn 生成 OutOfRange 或 StopIteration 錯誤。「steps」是逐步進行的。若是你調用兩次 train(steps = 10),那麼 train 總共有20步。若是 OutOfRange 或 StopIteration 在中間出現差錯,train將在前20步以前中止。若是您不想增長行爲,請設置 max_steps 代替。若是設置,max_steps 必須爲 None。
  • max_steps:用於 train 模型的總步驟數。若是爲 None,永遠訓練或訓練,直到 input_fn 生成 OutOfRange 或 StopIteration 錯誤。若是設置,steps 必須爲None。若是 OutOfRange 或者 StopIteration 在中間出現差錯,訓練以前應中止 max_steps 步驟。兩次調用 train (steps=100) 意味着 200次 train 迭代。另外一方面,兩個調用 train(max_steps=100)意味着第二次調用將不會執行任何迭代,由於第一次調用完成了全部的100個步驟。
返回:

返回 self,用於連接。

注意:
  • ValueError:若是兩個 steps 和 max_steps 都不是 None。
  • ValueError:若是任一 steps 或是 max_steps <= 0。

 

tf.estimator.DNNLinearCombinedRegressor               DNN迴歸模型

DNNLinearCombinedRegressor 類

繼承自: Estimator

定義在:tensorflow/python/estimator/canned/dnn_linear_combined.py

TensorFlow Linear 和 DNN 的估計器加入了迴歸模型。

注意:此估計器(estimator)也稱爲 wide-n-deep。

例如:

numeric_feature = numeric_column(...)
sparse_column_a = categorical_column_with_hash_bucket(...)
sparse_column_b = categorical_column_with_hash_bucket(...)

sparse_feature_a_x_sparse_feature_b = crossed_column(...)
sparse_feature_a_emb = embedding_column(sparse_id_column=sparse_feature_a,
                                        ...)
sparse_feature_b_emb = embedding_column(sparse_id_column=sparse_feature_b,
                                        ...)

estimator = DNNLinearCombinedRegressor(
    # wide settings
    linear_feature_columns=[sparse_feature_a_x_sparse_feature_b],
    linear_optimizer=tf.train.FtrlOptimizer(...),
    # deep settings
    dnn_feature_columns=[
        sparse_feature_a_emb, sparse_feature_b_emb, numeric_feature],
    dnn_hidden_units=[1000, 500, 100],
    dnn_optimizer=tf.train.ProximalAdagradOptimizer(...))

# To apply L1 and L2 regularization, you can set optimizers as follows:
tf.train.ProximalAdagradOptimizer(
    learning_rate=0.1,
    l1_regularization_strength=0.001,
    l2_regularization_strength=0.001)
# It is same for FtrlOptimizer.

# Input builders
def input_fn_train: # returns x, y
  pass
estimator.train(input_fn=input_fn_train, steps=100)

def input_fn_eval: # returns x, y
  pass
metrics = estimator.evaluate(input_fn=input_fn_eval, steps=10)
def input_fn_predict: # returns x, None
  pass
predictions = estimator.predict(input_fn=input_fn_predict)

輸入的 train 和 evaluate 應具備如下特色,不然將會產生 KeyError:

  • 對於 dnn_feature_columns+ linear_feature_columns 中的每一列:
  • 若是列是 _CategoricalColumn,則具備 key=column.name 而且其值是一個 SparseTensor 的特色。
  • 若是列是一個 _WeightedCategoricalColumn,則具備兩個特色:第一個是帶有鍵的 ID 列名稱,第二個是具備鍵權重列名稱。這兩個特色的值必須是SparseTensor。 
  • 若是列是 _DenseColumn,則有特色:key = column.name 而且其值是一個 Tensor。

損失經過使用均方偏差計算。

屬性

 
 
 
  • config
  • model_dir
  • params

方法

__init__
__init__(
    model_dir=None,
    linear_feature_columns=None,
    linear_optimizer='Ftrl',
    dnn_feature_columns=None,
    dnn_optimizer='Adagrad',
    dnn_hidden_units=None,
    dnn_activation_fn=tf.nn.relu,
    dnn_dropout=None,
    label_dimension=1,
    weight_column=None,
    input_layer_partitioner=None,
    config=None
)

初始化 DNNLinearCombinedRegressor 實例。

ARGS:
  • model_dir:保存模型參數、圖形等的目錄。這也可用於將檢查點從目錄加載到估算器中,以繼續訓練之前保存的模型。
  • linear_feature_columns:包含模型線性部分使用的全部特徵列的 iterable(迭代)。集合中的全部項目都必須是從 FeatureColumn 派生的類的實例。
  • linear_optimizer:tf.Optimizer 用於將漸變應用於模型的線性部分的實例。默認爲 FTRL 優化器。
  • dnn_feature_columns:包含模型深層部分所使用的全部特徵列的 iterable。集合中的全部項目都必須是從 FeatureColumn 派生的類的實例。
  • dnn_optimizer:tf.Optimizer 用於將漸變應用於模型的深層部分的實例。默認爲 Adagrad 優化器。
  • dnn_hidden_units:每層隱藏單位的列表。全部層都徹底鏈接。
  • dnn_activation_fn:激活函數應用於每一個層。若是無,將使用 tf.nn.relu。
  • dnn_dropout:當不是 None 時,咱們將放棄一個給定的座標的機率。
  • label_dimension:每一個例子的迴歸目標數。這是標籤和 logits Tensor 對象的最後一個維度的大小(一般它們具備形狀 [batch_size, label_dimension])。
  • weight_column:經過 tf.feature_column.numeric_column 建立的一個字符串或者 _NumericColumn 用來定義表示權重的特徵列。在 train 過程當中,它用於下降權重或增長實例。它將乘以例子的損失。若是它是一個字符串,它是用來做爲一個鍵從特徵提取權重張量;若是是 _NumericColumn,則經過鍵獲取原始張量weight_column.key,而後在其上應用 weight_column.normalizer_fn 以得到權重張量。
  • input_layer_partitioner:輸入層分區。默認爲 min_max_variable_partitioner 與 min_slice_size64 << 20。
  • config:RunConfig 對象配置運行時設置。
注意:
  • ValueError:若是 linear_feature_columns 和 dnn_features_columns 都同時爲空。
evaluate
evaluate(
    input_fn,
    steps=None,
    hooks=None,
    checkpoint_path=None,
    name=None

)

評估給定的評估數據 input_fn 的模型。

對於每一個步驟,調用 input_fn,它返回一組數據。評估結束條件:達到 - steps 批處理,或 - input_fn 引起 end-of-input 異常(OutOfRangeError 或 StopIteration)。

ARGS:
  • input_fn:輸入函數返回一個元組:features - Dictionary 的字符串特徵名到 Tensor 或 SparseTensor。labels - Tensor或帶標籤的張量字典(dict)。
  • steps:評估模型的步驟數。若是爲 None,直到 input_fn 引起 end-of-input 異常時,評估結束。
  • hooks:SessionRunHook 子類實例的列表,用於評估調用中的回調。
  • checkpoint_path:要評估的特定檢查點的路徑。若是爲 None,則使用 model_dir 中的最新檢查點。
  • name:若是用戶須要在不一樣數據集上運行多個評估,例如培訓數據與測試數據,則設置評估的名稱。不一樣評估的度量值保存在單獨的文件夾中,並在 tensorboard 中單獨顯示。
返回:

包含 model_fn 按名稱鍵入指定的評估度量的 dict ,以及一個條目 global_step,它包含執行此評估的全局步驟值。

注意:
  • ValueError:若是 steps <= 0。
  • ValueError:若是沒有 train 模型,即 model_dir,或者給定的 checkpoint_path 是空的。
export_savedmodel
export_savedmodel(
    export_dir_base,
    serving_input_receiver_fn,
    assets_extra=None,
    as_text=False,
    checkpoint_path=None
)

將推理圖做爲 SavedModel 導出到給定的目錄中。

此方法首先調用 serve_input_receiver_fn 來獲取特徵 Tensors,而後調用此 Estimator 的 model_fn 以生成基於這些特徵的模型圖,從而構建新的圖。它在新的會話中將給定的檢查點(或缺乏最新的檢查點)還原到此圖中。最後,它在給定的 export_dir_base 下面建立一個時間戳的導出目錄,並將 SavedModel 寫入其中,其中包含今後會話保存的單個 MetaGraphDef。

導出的 MetaGraphDef 將爲從 model_fn 返回的 export_outputs 字典的每一個元素提供一個 SignatureDef,使用相同的鍵命名。這些密鑰之一始終是signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY,指示當一個服務請求沒有指定時將提供哪一個簽名。對於每一個簽名,輸出由相應的ExportOutputs 提供,而且輸入始終是由 serve_input_receiver_fn 提供的輸入接收器。

額外的資產能夠經過 extra_assets 參數寫入 SavedModel。這應該是一個 dict,其中每一個鍵都給出了相對於 assets.extra 目錄的目標路徑(包括文件名)。相應的值給出要複製的源文件的完整路徑。例如,複製單個文件而不重命名的簡單狀況被指定爲:{'my_asset_file.txt': '/path/to/my_asset_file.txt'}。

ARGS:
  • export_dir_base:一個包含一個目錄的字符串,用於建立包含導出的 SavedModels 的時間戳子目錄。
  • serving_input_receiver_fn:一個不帶參數並返回 ServingInputReceiver 的函數。
  • assets_extra:指定如何在導出的 SavedModel 中填充 asset.extra 目錄的 dict,若是爲 None,則不須要額外的資源。
  • as_text:是否以文本格式寫入 SavedModel 原型。
  • checkpoint_path:要導出的檢查點路徑。若是爲 None(默認值),則選擇在模型目錄中找到的最新檢查點。

返回:

導出目錄的字符串路徑。

注意:
  • ValueError:若是沒有提供 serve_input_receiver_fn,則不提供 export_outputs,或者沒有找到任何檢查點。
predict
predict(
    input_fn,
    predict_keys=None,
    hooks=None,
    checkpoint_path=None
)

返回給定功能的預測。

ARGS:
  • input_fn:輸入函數返回的特徵,是字符串特徵名稱字典的 Tensor 或 SparseTensor。若是它返回一個元組,則第一個項目被提取爲特徵。預測繼續,直到input_fn 引起 end-of-input 異常(OutOfRangeError 或 StopIteration)。
  • predict_keys:str 列表,要預測的鍵的名稱。若是 EstimatorSpec.predictions 是 dict,則使用它。若是使用 predict_keys,那麼其他的預測將從字典中過濾掉。若是爲 None,則返回全部。
  • hooks:SessionRunHook 子類實例列表。用於預測調用內的回調。
  • checkpoint_path:對具體檢查點的路徑進行預測。若是爲 None,則使用 model_dir 中的最新檢查點。
獲得:

計算預測張量的值。

注意:
  • ValueError:在 model_dir 中找不到訓練有素的模型。
  • ValueError:若是批量長度的預測不一致。
  • ValueError:若是 predict_keys 和 predictions 之間存在衝突。例如,若是 predict_keys 不是 None,但 EstimatorSpec.predictions 不是 dict。
train
train(
    input_fn,
    hooks=None,
    steps=None,
    max_steps=None
)

訓練一個給定訓練數據 input_fn 的模型。

ARGS:
  • input_fn:輸入函數返回一個元組:features - Dictionary 的字符串特徵名到 Tensor 或 SparseTensor。labels - Tensor 或帶標籤的張量字典。
  • hooks:SessionRunHook 子類實例列表。用於訓練循環內的回調。
  • steps:用於訓練模型的步驟數。若是爲 None,永遠訓練或訓練直到 input_fn 生成 OutOfRange 或 StopIteration 錯誤。「steps」是逐步進行的。若是你調用兩次 train(steps = 10),那麼 train 總共有20步。若是 OutOfRange 或 StopIteration 在中間出現差錯,train將在前20步以前中止。若是您不想增長行爲,請設置 max_steps 代替。若是設置,max_steps 必須爲 None。
  • max_steps:用於 train 模型的總步驟數。若是爲 None,永遠訓練或訓練,直到 input_fn 生成 OutOfRange 或 StopIteration 錯誤。若是設置,steps 必須爲None。若是 OutOfRange 或者 StopIteration 在中間出現差錯,訓練以前應中止 max_steps 步驟。兩次調用 train (steps=100) 意味着 200次 train 迭代。另外一方面,兩個調用 train(max_steps=100)意味着第二次調用將不會執行任何迭代,由於第一次調用完成了全部的100個步驟。
返回:

返回 self,用於連接。

注意:
  • ValueError:若是兩個 steps 和 max_steps 都不是 None。
  • ValueError:若是任一 steps 或是 max_steps <= 0。

tf.estimator.DNNRegressor              DNN模型的迴歸器

DNNRegressor 類

繼承自: Estimator

定義在:tensorflow/python/estimator/canned/dnn.py

TensorFlow DNN 模型的迴歸器。

例:

sparse_feature_a = sparse_column_with_hash_bucket(...)
sparse_feature_b = sparse_column_with_hash_bucket(...)

sparse_feature_a_emb = embedding_column(sparse_id_column=sparse_feature_a,
                                        ...)
sparse_feature_b_emb = embedding_column(sparse_id_column=sparse_feature_b,
                                        ...)

estimator = DNNRegressor(
    feature_columns=[sparse_feature_a_emb, sparse_feature_b_emb],
    hidden_units=[1024, 512, 256])

# Or estimator using the ProximalAdagradOptimizer optimizer with
# regularization.
estimator = DNNRegressor(
    feature_columns=[sparse_feature_a_emb, sparse_feature_b_emb],
    hidden_units=[1024, 512, 256],
    optimizer=tf.train.ProximalAdagradOptimizer(
      learning_rate=0.1,
      l1_regularization_strength=0.001
    ))

# Input builders
def input_fn_train: # returns x, y
  pass
estimator.train(input_fn=input_fn_train, steps=100)

def input_fn_eval: # returns x, y
  pass
metrics = estimator.evaluate(input_fn=input_fn_eval, steps=10)
def input_fn_predict: # returns x, None
  pass
predictions = estimator.predict(input_fn=input_fn_predict)

輸入的 train 和 evaluate 應具備如下特色,不然將會產生 KeyError:

  • 若是 weight_column 不是 None,則具備 key = weight_column 的特徵,其值爲張量。
  • 對於 feature_columns 中的每列:
  • 若是列是 _CategoricalColumn,則具備 key=column.name 而且其值是一個 SparseTensor 的特色。
  • 若是列是一個 _WeightedCategoricalColumn,則具備兩個特色:第一個是帶有鍵的 ID 列名稱,第二個是具備鍵權重列名稱。這兩個特色的值必須是SparseTensor。 
  • 若是列是 _DenseColumn,則有特色:key = column.name 而且其值是一個 Tensor。

損失經過使用均方偏差計算。

屬性

  • config
  • model_dir
  • params

方法

__init__
__init__(
    hidden_units,
    feature_columns,
    model_dir=None,
    label_dimension=1,
    weight_column=None,
    optimizer='Adagrad',
    activation_fn=tf.nn.relu,
    dropout=None,
    input_layer_partitioner=None,
    config=None
)

初始化一個 DNNRegressor 實例。

ARGS:
  • hidden_units:每層數隱藏單位的 Iterable。全部層都已徹底鏈接。前 [64, 32] 意味第一層數有 64 個節點和第二個層數有 32 個節點。
  • feature_columns:包含模型所使用的全部特徵列的 iterable(迭代)。集合中的全部項目都必須是從 FeatureColumn 派生的類的實例。
  • model_dir:保存模型參數、圖形等的目錄。這也可用於將檢查點從目錄加載到估算器中,以繼續訓練之前保存的模型。
  • label_dimension:每一個示例的迴歸目標數。這是標籤和 logits 張量對象的最後一個維度的大小 (一般, 它們具備形狀 [batch_size, label_dimension])。
  • weight_column:經過 tf.feature_column.numeric_column 建立的一個字符串或者 _NumericColumn 用來定義表示權重的特徵列。在 train 過程當中,它用於下降權重或增長實例。它將乘以例子的損失。若是它是一個字符串,它是用來做爲一個鍵從特徵提取權重張量;若是是 _NumericColumn,則經過鍵獲取原始張量weight_column.key,而後在其上應用 weight_column.normalizer_fn 以得到權重張量。
  • optimizer:tf.Optimizer 用於訓練模型的實例。默認爲 Adagrad 優化器。
  • activation_fn:激活函數應用於每一個層。若是爲 None,將使用 tf.nn.relu。
  • dropout:當不是 None 時,咱們將放棄一個給定的座標的機率。
  • input_layer_partitioner: 輸入層分區。默認爲 min_max_variable_partitioner 與 min_slice_size64 << 20。
  • config:RunConfig 對象配置運行時設置。
evaluate
evaluate(
    input_fn,
    steps=None,
    hooks=None,
    checkpoint_path=None,
    name=None
)

評估給定的評估數據 input_fn 的模型。

對於每一個步驟,調用 input_fn,它返回一組數據。評估結束條件:達到 - steps 批處理,或 - input_fn 引起 end-of-input 異常(OutOfRangeError 或 StopIteration)。

ARGS:
  • input_fn:輸入函數返回一個元組:features - Dictionary 的字符串特徵名到 Tensor 或 SparseTensor。labels - Tensor或帶標籤的張量字典(dict)。
  • steps:評估模型的步驟數。若是爲 None,直到 input_fn 引起 end-of-input 異常時,評估結束。
  • hooks:SessionRunHook 子類實例的列表,用於評估調用中的回調。
  • checkpoint_path:要評估的特定檢查點的路徑。若是爲 None,則使用 model_dir 中的最新檢查點。
  • name:若是用戶須要在不一樣數據集上運行多個評估,例如培訓數據與測試數據,則設置評估的名稱。不一樣評估的度量值保存在單獨的文件夾中,並在 tensorboard 中單獨顯示。
返回:

包含 model_fn 按名稱鍵入指定的評估度量的 dict ,以及一個條目 global_step,它包含執行此評估的全局步驟值。

注意:
  • ValueError:若是 steps <= 0。
  • ValueError:若是沒有 train 模型,即 model_dir,或者給定的 checkpoint_path 是空的。
export_savedmodel
export_savedmodel(
    export_dir_base,
    serving_input_receiver_fn,
    assets_extra=None,
    as_text=False,
    checkpoint_path=None
)

將推理圖做爲 SavedModel 導出到給定的目錄中。

此方法首先調用 serve_input_receiver_fn 來獲取特徵 Tensors,而後調用此 Estimator 的 model_fn 以生成基於這些特徵的模型圖,從而構建新的圖。它在新的會話中將給定的檢查點(或缺乏最新的檢查點)還原到此圖中。最後,它在給定的 export_dir_base 下面建立一個時間戳的導出目錄,並將 SavedModel 寫入其中,其中包含今後會話保存的單個 MetaGraphDef。

導出的 MetaGraphDef 將爲從 model_fn 返回的 export_outputs 字典的每一個元素提供一個 SignatureDef,使用相同的鍵命名。這些密鑰之一始終是signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY,指示當一個服務請求沒有指定時將提供哪一個簽名。對於每一個簽名,輸出由相應的ExportOutputs 提供,而且輸入始終是由 serve_input_receiver_fn 提供的輸入接收器。

額外的資產能夠經過 extra_assets 參數寫入 SavedModel。這應該是一個 dict,其中每一個鍵都給出了相對於 assets.extra 目錄的目標路徑(包括文件名)。相應的值給出要複製的源文件的完整路徑。例如,複製單個文件而不重命名的簡單狀況被指定爲:{'my_asset_file.txt': '/path/to/my_asset_file.txt'}。

ARGS:
  • export_dir_base:一個包含一個目錄的字符串,用於建立包含導出的 SavedModels 的時間戳子目錄。
  • serving_input_receiver_fn:一個不帶參數並返回 ServingInputReceiver 的函數。
  • assets_extra:指定如何在導出的 SavedModel 中填充 asset.extra 目錄的 dict,若是爲 None,則不須要額外的資源。
  • as_text:是否以文本格式寫入 SavedModel 原型。
  • checkpoint_path:要導出的檢查點路徑。若是爲 None(默認值),則選擇在模型目錄中找到的最新檢查點。
返回:

導出目錄的字符串路徑。

注意:
  • ValueError:若是沒有提供 serve_input_receiver_fn,則不提供 export_outputs,或者沒有找到任何檢查點。
predict
predict(
    input_fn,
    predict_keys=None,
    hooks=None,
    checkpoint_path=None
)

返回給定功能的預測。

ARGS:
  • input_fn:輸入函數返回的特徵,是字符串特徵名稱字典的 Tensor 或 SparseTensor。若是它返回一個元組,則第一個項目被提取爲特徵。預測繼續,直到input_fn 引起 end-of-input 異常(OutOfRangeError 或 StopIteration)。
  • predict_keys:str 列表,要預測的鍵的名稱。若是 EstimatorSpec.predictions 是 dict,則使用它。若是使用 predict_keys,那麼其他的預測將從字典中過濾掉。若是爲 None,則返回全部。
  • hooks:SessionRunHook 子類實例列表。用於預測調用內的回調。
  • checkpoint_path:對具體檢查點的路徑進行預測。若是爲 None,則使用 model_dir 中的最新檢查點。
獲得:

計算預測張量的值。

注意:
  • ValueError:在 model_dir 中找不到訓練有素的模型。
  • ValueError:若是批量長度的預測不一致。
  • ValueError:若是 predict_keys 和 predictions 之間存在衝突。例如,若是 predict_keys 不是 None,但 EstimatorSpec.predictions 不是 dict。
train
train(
    input_fn,
    hooks=None,
    steps=None,
    max_steps=None
)

訓練一個給定訓練數據 input_fn 的模型。

ARGS:
  • input_fn:輸入函數返回一個元組:features - Dictionary 的字符串特徵名到 Tensor 或 SparseTensor。labels - Tensor 或帶標籤的張量字典。
  • hooks:SessionRunHook 子類實例列表。用於訓練循環內的回調。
  • steps:用於訓練模型的步驟數。若是爲 None,永遠訓練或訓練直到 input_fn 生成 OutOfRange 或 StopIteration 錯誤。「steps」是逐步進行的。若是你調用兩次 train(steps = 10),那麼 train 總共有20步。若是 OutOfRange 或 StopIteration 在中間出現差錯,train將在前20步以前中止。若是您不想增長行爲,請設置 max_steps 代替。若是設置,max_steps 必須爲 None。
  • max_steps:用於 train 模型的總步驟數。若是爲 None,永遠訓練或訓練,直到 input_fn 生成 OutOfRange 或 StopIteration 錯誤。若是設置,steps 必須爲None。若是 OutOfRange 或者 StopIteration 在中間出現差錯,訓練以前應中止 max_steps 步驟。兩次調用 train (steps=100) 意味着 200次 train 迭代。另外一方面,兩個調用 train(max_steps=100)意味着第二次調用將不會執行任何迭代,由於第一次調用完成了全部的100個步驟。
返回:

返回 self,用於連接。

注意:
  • ValueError:若是兩個 steps 和 max_steps 都不是 None。
  • ValueError:若是任一 steps 或是 max_steps <= 0。

參考:

https://www.w3cschool.cn/tensorflow_python/tensorflow_python-61mk2e0b.html

相關文章
相關標籤/搜索