在除循环之外的批处理数据中查找数字首次出现的索引的有效方法

时间:2019-02-13 12:18:00

标签: numpy for-loop tensorflow time-complexity batch-processing

我正在执行一项任务,其中我以批处理形式存储帧形式的数据。批次的尺寸类似于(batch_size,400),我想在每个400长度的框架中查找数字1首次出现的索引。

目前,我正在批量处理中使用for循环,但由于数据非常大,因此非常耗时

在tensorflow或numpy中使用矩阵运算的任何其他有效方法都会

1 个答案:

答案 0 :(得分:0)

在TensorFlow中:

max_age = 0

在NumPy中:

>>> App\Models\CarPremium::query()->age(18)->get()
=> Illuminate\Database\Eloquent\Collection {#3064
     all: [
       App\Models\CarPremium {#3063
         id: 2,
         min_age: 25,
         max_age: 100,
         status: 1,
         created_at: "2018-12-10 05:34:39",
         updated_at: "2018-12-10 05:34:39",
       },
       App\Models\CarPremium {#3064
         id: 8,
         min_age: 18,
         max_age: 30,
         status: 1,
         created_at: "2018-12-10 05:34:39",
         updated_at: "2019-01-15 09:14:53",
       },
     ],
   }

测试:

import tensorflow as tf

def index_of_first_tf(batch, value):
    eq = tf.equal(batch, value)
    has_value = tf.reduce_any(eq, axis=-1)
    _, idx = tf.math.top_k(tf.cast(eq, tf.int8))
    idx = tf.squeeze(idx, -1)
    return tf.where(has_value, idx, -tf.ones_like(idx))