tf.contrib.timeseries.CSVReader
init
- filenames : 文件名/一系列文件名
- column_names:每列特征的标示名,TrainEvalFeatures.TIMES和TrainEvalFeatures.VALUES,当有多维特征时VALUES应该重复
- column_dtypes:可以不提供,若提供的话要和column_names对应,默认TrainEvalFeatures.TIMES是tf.int64,TrainEvalFeatures.VALUES是tf.float32.
- skip_header_lines:传递给tf.TextLineReader, 可以忽略文件的前n行。
- read_num_records_hint:不读取完整数据集时,指示要在单个块中解析/传输的记录数(为了提高效率)。 一次转移的实际数量可能更多或更少。
check_dataset_size(minimum_dataset_size)
- minimum_dataset_size:当TimeSeriesInputFn中的窗口大小大于此之,程序会报错
e.g.
csv_file_name = path.join("./data/erp.csv")
reader = tf.contrib.timeseries.CSVReader(
csv_file_name,
column_names=( (tf.contrib.timeseries.TrainEvalFeatures.TIMES,)
+ (tf.contrib.timeseries.TrainEvalFeatures.VALUES,) * 2 ) )
tf.contrib.timeseries.RandomWindowInputFn
输入参数:
- time_series_reader :时间序列读取的对象
- window_size : 保持原始序列的样本数。即同一个窗口内的样本序列排列顺序和原始序列相同。样本数越小意味着序列计算量更小,训练速度也更快。但是产生的梯度是不稳定的
- batch_size:被放置在同一个训练集合中的窗口数,batch_size越大,训练结果越稳定
- queue_capacity_multiplier:用于创建batches的队列容量,是batchsize 和 batch_size * window_size的倍数。控制窗口最大数。要大于shuffle_min_after_dequeue_multiplier
- shuffle_min_after_dequeue_multiplier:出列后的Eandomshufflequeue的最小窗口数,在一个集合内控制熵,是batchsize的倍数。
- discard_out_of_order:若为真,时间序列为倒序的(由大到小)的窗口将被删除。若为假,则相关的特征会被排序,使之为非降序。前者会使速度加快,同时由于在文件起始和结束的位置都欠采样,导致有偏差
- discard_consecutive_batches_limit:限制被删除的集合的数目,如果被删除的集合超过这个限制而没有不被删除的集合,则会报OutOfRangError
- jitter:若为真,在窗口中随机删除一些样例,以预防确定性分块模式。这对于有的模型、诸如AR之类,可以预防过拟合。
- num_thread:队列的线程数。设置为1可以消除不确定性
- shuffle_seed:滑动窗口的大小。默认值为none以保证随机性。若shuffle_seed为真且num_thread=1,则提供了确定性。
tensorflow.contrib.timeseries.python.timeseries.TimeSeriesRegressor
- num_feature:特征数量,即一个历元对应的因变量数。
- num_units:LSTM的节点数。
- AdamOptimizer:学习率。
estimator = ts_estimaters.TimeSeriesRegressor( model = _LSTMModel(num_feature=2, num_units=128), optimizer=tf.train.AdamOptimizer(0.001))
tf.estimator.Estimator
init
- model_fn, 模型函数,包括以下内容
- features, 从input_fn传给train, evaluate, predict的第一个参数. 应该是全为tensor或dict。
- labels,第二个从input_fn传给train, evaluate, predict的参数。应该全为tensor或dict,如果mode=ModeKeys.PREDICT,labels=None会被跳过。如果model_fn的设置不接受mode,model_fn仍能处理labels=None.
- mode, 可选参数,在training/evaluation/prediction中需要说明
- params,可选的dict超参数。会收到传给Estimator的params参数。
- model_dir: 保存模型参数/模型图等内容。这可以从文件夹中加载检查点到estimator,继续训练之前保存的模型。如果pathlike对象存在,path会被改变;若没有,config中的model_dir若是已经被设置好,则将会被使用。若是两个都设置了,两者应该保持一致。如果都没有设置,将会使用临时设置。
- config 结构对象
- params 会被传入model_fn的超参数的dict,关键字是参数名,其值是基本的python类型。
- warm_start_from 可选的字符串文件路径,用于检查点的warm-start。
train
- input_fn: 提供输入的训练数据的函数,该函数执行后返回以下两者之一:
- ‘tf.data.Dataset’对象,输出的对象应该是一个元组
- 一个元组(要素,标签),其中要素是Tensor或Tensor字符串要素的名称字典,标签是Tensor或Tensor字符串标签字典。要素和标签都被model_fn使用。
- hooks:
- steps: 训练模型所用的训练步数。如果steps=none,则会一直训练到input_fn产生OutOfRange error / StopIteration 输出。steps是递增的,如果两次调用train(steps=10),则训练一共进行了20步,如果在训练过程中发生了溢出或者停止迭代的错误,训练会在20步之前就停止。如果不想递增地训练,可以设置max_steps,如果想递增训练,max_steps必须为None。
- max_steps: 总的训练模型的次数。如果为none,一直训练直至产生outofrange或stopiteration。如果设置了,steps必须为none。如果调用两次train(steps=100)则意味者一共执行了200次迭代。而如果调用两次train(max_steps=100),则第二次不进行迭代,因为第一次训练已经达到限值。
- saving_listeners:
evaluate
用给input_fn给出的评估数据来评估模型
- input_fn 和train方法中一样
- steps 评估模型的步数
- hook
- checkpoint_path 特殊检查点的路径。
- name 评估的名字,若是需要用多个评估方法来评估不同的数据集。例如训练集和测试数据集。将会被保存在不同的文件夹中。并在tensorboard中保持独立。
predict
参考文章:
- https://docs.w3cub.com/tensorflow~python/tf/train/adamoptimizer/
- https://devdocs.io/tensorflow~python/tf/