#python #tensorflow #optimization
Вопрос:
Я написал некоторый код, который повторяет форму моего тензора и добавляет значение тензору на каждом шаге. Проблема в том, что он медленный для большого количества итераций (а мне их нужно много).:
for i in range(0, num_samples):
for j in range(0, int(numTimeSteps.numpy())):
random_num = tf.squeeze(tf.random.normal([1], mean, std_dev, dtype=dtype))
tensor[i,j].assign(tf.math.add(random_num, estr[i,j]).numpy())
На каждой итерации я добавляю случайное число (полученное из нормального распределения) в тензор
- num_samples задается пользователем и может находиться в диапазоне 1000-100 000
- numTimeSpes равно 80
Есть ли способ оптимизировать это?
Ответ №1:
TF редко следует полагаться на циклы или numpy. Если вы видите что-либо из этого, попробуйте векторизовать его и работать с собственными операциями tf.
Возможно, что-то вроде
estr = estr tf.random.normal(shape=estr.shape)
Обратите внимание, что tf.random скоро устареет из — за недостаточной случайности-см. Примечание в документах. Предпочтительным подходом является генератор случайных чисел tf.random..