tfboys——tensorflow模塊學習(三)


tf.estimator模塊

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

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

主要模塊

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

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

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

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

class DNNLinearCombinedRegressor:TensorFlow Linear 和 DNN 連接的回歸模型的估計器。

class DNNRegressor:TensorFlow DNN 模型的回歸器。

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

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM