2017-04-23 1 views
0

J'essaie d'obtenir la valeur du tenseur.Comment évaluer une variable?

# First Layer 
encoder_layer1 = tflearn.fully_connected(x,41,activation='relu',bias=True) 
layer1_weights = encoder_layer1.W 
layer1_bias = encoder_layer1.b 

résultat de l'imprimer est:

The layer 1 weights are: <tf.Variable 'FullyConnected/W:0' shape=(41, 41) dtype=float32_ref> 

même eval() ne semble pas fonctionner. il jette une erreur

tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value FullyConnected/W 
    [[Node: _send_FullyConnected/W_0 = _Send[T=DT_FLOAT, client_terminated=true, recv_device="/job:localhost/replica:0/task:0/cpu:0", send_device="/job:localhost/replica:0/task:0/cpu:0", send_device_incarnation=-6055748491062458677, tensor_name="FullyConnected/W:0", _device="/job:localhost/replica:0/task:0/cpu:0"](FullyConnected/W)]] 

J'ai essayé toutes les méthodes metiond mais cela ne semble pas fonctionner.

Merci à l'avance

+0

Copie possible de [Comment imprimer la valeur d'un objet Tensor dans TensorFlow?] (Http://stackoverflow.com/questions/33633370/how-to-print-the-value-of- a-tensor-object-in-tensorflow) –

+0

Le problème a été résolu! Merci d'avoir signalé –

Répondre

0

Peu de temps:

Vous ne pouvez pas évaluer une variable tenseur en dehors de la session, vous devez le faire dans un session,

Pourquoi ne peut pas:

Afin de comprendre pourquoi nous ne pouvons pas faire cela, nous devrions d'abord savoir ce qui se passe derrière le tensorflow, puisque tout ce qui est dans tensorflow est un noeud de graphe, quand nous définissons des variables et leur assignons des valeurs, le graphique et les valeurs ne sont pas assignés tant que nous n'avons pas exécuté le graphique.

Comment exécuter graphique:

session exécute le graphique, tenez compte des blocs de code lorsque nous concevons un réseau tensorflow, tout ce qui précède la session comme modèle et après cette ligne tf.session as sess, comme site de construction, de sorte que vous ne pouvez évaluer (eval()) tenseurs à l'intérieur de la session. En d'autres termes, le graphe définit les opérations et les opérations s'exécutent uniquement à l'intérieur d'une session.

Espérons que cela a été utile. Pour plus d'informations, lire this

+0

J'ai une session dans ma fonction d'entraîneur et j'exécute eval() dans 'avec trainer.session.as_default()', c'est alors que je reçois la deuxième erreur –

+1

@WiLL_K l'erreur indique clairement: vous d'abord dois initialiser la variable – dv3

+0

J'avais initialisé les variables avant main, j'ai résolu le problème, c'était juste que tflean et tensorflow étaient incapables de reconnaître le 'trainer.session.as_default()', je devais déclarer la session à l'intérieur de la 'eval (session = trainer.session)'. Problème résolu. Je pense que j'ai raté quand je le construisais avec un peu plus d'instructions. –