web-dev-qa-db-fra.com

TF 2.0 valeurs du tenseur d'impression

J'apprends la dernière version de Tensorflow (2.0) et j'ai essayé d'exécuter un code simple pour découper une matrice. En utilisant le décorateur @ tf.function, j'ai créé la classe suivante:

class Data:
def __init__(self):
    pass

def back_to_zero(self, input):
    time = tf.slice(input, [0,0], [-1,1])
    new_time = time - time[0][0]
    return new_time

@tf.function
def load_data(self, inputs):
    new_x = self.back_to_zero(inputs)
    print(new_x)

Ainsi, lorsque j'exécute le code à l'aide d'une matrice numpy, je ne peux pas récupérer les chiffres.

time = np.linspace(0,10,20)
magntiudes = np.random.normal(0,1,size=20)
x = np.vstack([time, magntiudes]).T


d = Data()
d.load_data(x)

Production:

Tensor("sub:0", shape=(20, 1), dtype=float64)

J'ai besoin d'obtenir ce tenseur dans un format numpy, mais TF 2.0 n'a pas la classe tf.Session pour utiliser les méthodes run () ou eval ().

Merci pour toute aide que vous pouvez m'offrir!

Le problème est que vous ne pouvez pas obtenir les valeurs du tenseur directement dans le graphique. Donc, soit vous faites comme @edkeveked suggéré en utilisant tf.print ou modifiez votre code comme suit:

class Data:
    def __init__(self):
        pass

    def back_to_zero(self, input):
        time = tf.slice(input, [0,0], [-1,1])
        new_time = time - time[0][0]

        return new_time

    @tf.function
    def load_data(self, inputs):
        new_x = self.back_to_zero(inputs)

        return new_x

time = np.linspace(0,10,20)
magntiudes = np.random.normal(0,1,size=20)
x = np.vstack([time, magntiudes]).T

d = Data()
data = d.load_data(x)
print(data.numpy())
0
gorjan