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)
张量如何切分