tensorflow学习笔记(一)基础函数说明

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: 提供输入的训练数据的函数,该函数执行后返回以下两者之一:
  1. ‘tf.data.Dataset’对象,输出的对象应该是一个元组
  2. 一个元组(要素,标签),其中要素是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/

你可能感兴趣的:(tensorflow,python)