阅读(1276) (11)

TensorFlow Training函数(contrib)

2017-08-26 17:27:04 更新

培训和输入实用程序。

将序列输入分解成具有状态保存的小批量

如果您的输入数据具有动态主时间/帧计数轴,您希望在 minibatching 期间将其转换为固定大小段,并希望在示例的各段之间存储状态,那么,使用tf.contrib.training.SequenceQueueingStateSaver 或其包装 tf.contrib.training.batch_sequences_with_states 

  • tf.contrib.training.batch_sequences_with_states
  • tf.contrib.training.NextQueuedSequenceBatch
  • tf.contrib.training.SequenceQueueingStateSaver

在线数据重新取样

若要以每个示例为基础对数据进行重采样,请使用 tf.contrib.training.rejection_sample 或 tf.contrib.training.resample_at_rate。对于 rejection_sample,提供一个布尔张量来描述是否接受或拒绝.生成的批处理大小始终相同。对于 resample_at_rate,为每个示例提供所需的速率.生成的批处理大小可能会有所不同。如果您希望指定相对比率,而不是绝对值,请使用 tf.contrib.training.weighted_resample (这也会返回每个输出示例使用的实际重新取样率)。
使用 tf.contrib.training.stratified_sample 重新取样,而无需从数据中进行替换,以达到 Tensorflow 图所看到的所需的类比例组合。例如,如果您有一个二进制分类数据集 (99.9% 类 1),通常的方法是从数据中重新取样以使数据更加平衡。

  • tf.contrib.training.rejection_sample
  • tf.contrib.training.resample_at_rate
  • tf.contrib.training.stratified_sample
  • tf.contrib.training.weighted_resample

Bucketing

使用 tf.contrib.training.bucket 或 tf.contrib.training.bucket_by_sequence_length 将分层 minibatches 成组 ("buckets")。使用已经证明 dynamic_pad = True 的 bucket_by_sequence_length 来接受有相同大小的序列 minibatches,这样是为了能通过 dynamic_rnn 来高效培训。

  • tf.contrib.training.bucket
  • tf.contrib.training.bucket_by_sequence_length