Come posso eseguire un ciclo con un tensore di come la sua gamma? (in tensorflow)

Voglio avere un ciclo for che il numero di iterazioni è dipendono da un tensore di valore. Per esempio:

for i in tf.range(input_placeholder[1,1]):
  # do something

Tuttavia ottengo il seguente errore:

“TypeError: ‘Tensore’ oggetto non è iterable”

Cosa devo fare?

InformationsquelleAutor Poorya Pzm | 2016-02-11

 

2 Replies
  1. 23

    Per fare questo è necessario utilizzare il tensorflow ciclo while (tf.while_loop) come segue:

    i = tf.constant(0)
    while_condition = lambda i: tf.less(i, input_placeholder[1, 1])
    def body(i):
        # do something here which you want to do in your loop
        # increment i
        return [tf.add(i, 1)]
    
    # do the loop:
    r = tf.while_loop(while_condition, body, [i])
    • Per me funziona. Tnx!
    • che cosa circa quando ho una variabile del ciclo ? Ottengo un errore di riferimento stackoverflow.com/questions/47760429/…
    • Questo sembra funzionare, ma sembra che contraddicono direttamente la Tensorflow consiglio: “Per un corretto programmi, while_loop deve restituire lo stesso risultato per un parallel_iterations > 0.” Sembra che questo potrebbe impostare una race condition che conduce al loop di essere valutato in un punto tra “n” e “n*parallel_iterations” volte
  2. 0

    Il tipo del valore di ritorno di TensorFlow API Python funzioni, tra cui tf.range è un Tensore. Un Tensor è un simbolico gestire al nodo in un grafo che rappresenta il calcolo. Si esegue il calcolo reale chiamando il eval metodo su un Tensor, o passando l’oggetto run metodo di Session. Nel tuo caso, forse quello che intendeva fare era semplicemente scorrere numpy‘s range.

    for in in np.range(...):
      # do something
    • No, non è questo che sto cercando. Voglio un ciclo di operare k volte, mentre k è determinato sulla base di input. L’Input è un tensore di segnaposto.
    • Infatti, ho due ingressi. Prima è una matrice, e la seconda di quante volte una determinata operazione dovrebbe essere fatto su di esso.
    • Quando stai scrivendo un tensorflow op, dopo aver numpy chiamate, impedisce l’op esecuzione su GPU, quindi è importante per le op di avere solo GPU compatibile tensorflow ops in esso.

Lascia un commento