как получить разные сэмплы из одной и той же случайной операции за один сеанс - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь получить несколько сэмплов из xr , складывая xr op. Теперь кажется, что это просто дает вам те же значения. Есть ли способ получить разные значения или xr в одном сеансе?

import tensorflow as tf
import tensorflow.random as tdr 
import numpy as np

x = 5. # fixe_input 
xr = tdr.uniform(shape=[1],minval=0., maxval=x)
x_list = tf.stack([xr for _ in range(10)]
with tf.Session() as sess:
    print('xlist', sess.run(x_list))

Выход:

xlist [[2.2005057]
 [2.2005057]
 [2.2005057]
 [2.2005057]
 [2.2005057]
 [2.2005057]
 [2.2005057]
 [2.2005057]
 [2.2005057]
 [2.2005057]]

Ответы [ 2 ]

1 голос
/ 21 марта 2020

Есть ли способ получить разные значения или xr в одном сеансе?

Нет, каждый узел оценивается один раз. Вместо этого, почему бы не изменить shape=[1] на shape=[10]? Это даст вам массив из 10 сэмплов из вашего дистрибутива с помощью одного sess.run вызова.

import tensorflow as tf
import tensorflow.random as tdr 
import numpy as np

x = 5. # fixe_input 
xr = tdr.uniform(shape=[10],minval=0., maxval=x)
with tf.Session() as sess:
    print('xlist', sess.run(xr))

xlist [2.6705563 1.477465 2.2741747 0.44075608 0.41182756 3.652794 2.3826408 4.6979356 2.0650215 1.4842021]

1013 *
0 голосов
/ 21 марта 2020

Вы по сути генерируете случайное число один раз, ловите его в переменной, а затем копируете, как в первой части ниже. Вы хотите вызвать случайную функцию для каждого элемента в вашем списке, как показано во второй части ниже.

In [2]: from random import randint                                              

In [3]: x = randint(1,1000)                                                     

In [4]: random_nums = [x for _ in range(10)]                                    

In [5]: random_nums                                                             
Out[5]: [728, 728, 728, 728, 728, 728, 728, 728, 728, 728]

In [6]: random_nums2 = [randint(1, 1000) for _ in range(10)]                    

In [7]: random_nums2                                                            
Out[7]: [92, 928, 72, 875, 719, 725, 957, 930, 729, 299]

In [8]: 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...