定義在: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 生成用於迴歸的解析規範。
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。
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。
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。
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