【问题标题】:How to randomly choose and apply an op from a list of ops in tensorflow?如何从张量流中的操作列表中随机选择和应用操作?
【发布时间】:2016-02-19 01:24:10
【问题描述】:

出于数据扩充的目的,我希望对数据进行 n 种不同的转换,并希望为一批中的每个图像随机选择并应用其中一个。比如:

image = tf.apply_random_op(image, [op1, op2, op3])
images, label_batch = tf.train.shuffle_batch([image, label])

这可能吗?

Obs:我希望在执行会话时随机选择操作。

【问题讨论】:

  • 您是否考虑过生成随机整数并使用 if-else 语句?
  • 这不能满足我最后的观察,因为它不会以象征性的方式进行。
  • 您能否详细说明您的最后观察结果?对不起,我没听懂。
  • Tensorflow 构建了一个符号图。普通的 if-else 语句不是象征性的。但我发现 tf.cond 是 if-else 的符号版本。我发布了一个基于 tf.cond 的解决方案。
  • 也许tf.case 可能是更好的解决方案?

标签: tensorflow


【解决方案1】:

我想我想出了一个解决方案:

def apply_random_op(tensor, ops):
  n = len(ops)
  rand_idx = tf.floor(tf.random_uniform([], 0, n, dtype=tf.float32))
  op_idx = tf.constant(0.0, dtype=tf.float32)
  chain = tf.cond(tf.equal(op_idx, rand_idx), lambda: ops[0](tensor), lambda: ops[1](tensor))
  for i in xrange(2, n):
    op_idx = tf.constant(float(i), dtype=tf.float32)
    chain = tf.cond(tf.equal(op_idx, rand_idx), lambda: ops[i](tensor), lambda: chain)
  return chain

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-11
    • 2019-08-19
    • 1970-01-01
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    相关资源
    最近更新 更多