1、按照階段劃分python
大的階段分爲trainning 和 deployment兩個階段。api
一、數據與特徵
使用tf.data加載數據,輸入管道讀取訓練數據。
利用tf.feature_column描述特徵。數組
二、使用tf.keras或者Premade Estimators構建、訓練並驗證模型。網絡
三、使用分佈式策略進行分佈式訓練。分佈式
四、導出到Saved Modelide
2、按照層級劃分函數
階數:
張量的階數有時候也稱爲維度,或者軸..net
例子:
譬如一個矩陣[[1,2],[3,4]],是一個2階張量,有兩個維度或軸,
沿着第0個軸(爲了與python的計數方式一致,本文檔維度和軸從0算起)你看到的是[1,2],[3,4]兩個向量,
沿着第1個軸你看到的是[1,3],[2,4]兩個向量。blog
def slice(input_, begin, size, name=None):
一個張量,begin 和 size都是一個數組,長度是input_的維度。
begin中每一個元素表示,若是是第一個元素表示第一個維度的截取開始下標。
size中的每一個元素表示,若是是第一個元素表示第一個維度的截取個數。排序
做用:
特徵列(Feature column)是原始數據和 Estimator 之間的接口,它告訴Estimator如何使用數據。
函數路徑:tf.feature_column.*
每一個函數對應一個類來表示該FeatureColumn。
如下函數返回的類均是 CategoricalColumn的子類。
一、 categorical_column_with_identity
輸入是integers類型時使用
二、 categorical_column_with_vocabulary_list or categorical_column_with_vocabulary_file
num_oov_buckets能夠設置比初始化時指定詞彙表長度多出的類別個數。
能夠支持string and integer types。
類別比較多的時候用file。
三、 categorical_column_with_hash_bucket
hash分桶,能夠指定桶的個數,使用取餘法分桶。
多個輸入值可能會映射到同一個桶。
四、 crossed_column
返回一個類別特徵交叉的列。
先笛卡爾積運算,而後再hash(%hash_bucket_size)。
用於交叉的類別特徵能夠用字符串表示也能夠用CategoricalCoumn表示。
一、 numeric_column
能夠指定形狀。
能夠指定標準化函數。
能夠指定默認值。
二、indicator_column
輸入是categorical_column。
是categorical_column的multi-hot表示。
對於DNN模型,indicator_column能夠用來包裝任何categorical_column_*。
當桶或惟一值的數量很是大的時候,考慮embedding_column。
對於Wide模型(又稱Linear),當直接向linear_model傳入類別特徵時,indicator_column是類別特徵的內部表示。
少許的值使用該特徵。
三、embedding_column
從稀疏類別輸入轉換獲得的DenseColumn。
何時使用:當你的輸入是稀疏的時候可是須要把他們轉換成一個稠密表示的時候。
輸入是CategoricalColumn。
不少特徵值時使用該特徵下降模型的大小。
經過邊界值表示離散化稠密輸入。
對應的輸入列必須是數字列,而且是一維的。
返回的類BucketizedColumn繼承自DenseColumn和CategoricalColumn。
摘自api官方推薦
一、 Deep neural network models:
好比DNNClassifier 和 DNNRegressor。
連續特徵能夠直接喂入深度神經網絡模型。
喂入稀疏特徵時,須要用embedding_column或者 indicator_column封裝。
二、Wide模型
又稱爲線性模型,好比LinearClassifier 和 LinearRegresso。
稀疏特徵能夠直接喂入線性模型。他們表現像一個indicator column可是有一個更高效的實現。
連續值喂入線性模型以前建議先被分桶。
爲了造成非線性,稀疏特徵能夠被交叉以後再喂入線性模型。
'''#eager模式
'''#example
參考
【Keras】張量的階數
TensorFlow入門13 -- 特徵列(Feature column)
張量如何切分