2017-04-12 4 views
-1

Ich bin neu bei Tensorflow: Ich habe tf Version 0.8 und cuda 7.5 das ist mein Code: meine Version von numpy ist 1.11 ich denke (nicht sicher) wie kann ich es beheben? es heißt kein Modul Name Stack ?? Ich versuche variationAutoEncoderTensorflow-Modul hat keine Stack-Methode

import tensorflow as tf 
import numpy as np 
from libs.utils import weight_variable, bias_variable, montage_batch 

def VAE(input_shape=[None, 784], 
     n_components_encoder=2048, 
     n_components_decoder=2048, 
     n_hidden=2, 
     debug=False): 
    # %% 
    # Input placeholder 
    if debug: 
     input_shape = [50, 784] 
     x = tf.Variable(np.zeros((input_shape), dtype=np.float32)) 
    else: 
     x = tf.placeholder(tf.float32, input_shape) 

    activation = tf.nn.softplus 

    dims = x.get_shape().as_list() 
    n_features = dims[1] 

    W_enc1 = weight_variable([n_features, n_components_encoder]) 
    b_enc1 = bias_variable([n_components_encoder]) 
    h_enc1 = activation(tf.matmul(x, W_enc1) + b_enc1) 

    W_enc2 = weight_variable([n_components_encoder, n_components_encoder]) 
    b_enc2 = bias_variable([n_components_encoder]) 
    h_enc2 = activation(tf.matmul(h_enc1, W_enc2) + b_enc2) 

    W_log_sigma = weight_variable([n_components_encoder, n_hidden]) 
    b_log_sigma = bias_variable([n_hidden]) 

    z_mu = tf.matmul(h_enc3, W_mu) + b_mu 
    z_log_sigma = 0.5 * (tf.matmul(h_enc3, W_log_sigma) + b_log_sigma) 

    # %% 
    # Sample from noise distribution p(eps) ~ N(0, 1) 
    if debug: 
     epsilon = tf.random_normal(
      [dims[0], n_hidden]) 
    else: 
     epsilon = tf.random_normal(
      tf.stack([tf.shape(x)[0], n_hidden])) 

und das Protokoll zu implementieren:

File "/home/hoda/Downloads/tensorflow_tutorials-master/python/11_variational_autoencoder.py", line 58, in VAE 
    tf.stack([tf.shape(x)[0], n_hidden])) 
AttributeError: 'module' object has no attribute 'stack' 
+0

_ "es heißt kein Modul Name Stack" _ - nein, tut es nicht! Der Fehler sagt Ihnen, dass Ihr 'Tensorflow' Modul keine' Stack' Methode hat. Die Dokumente sagen, dass ['tf.stack'] (https://www.tensorflow.org/api_docs/python/tf/stack) existiert jedoch - so müssen Sie zu alt eine Version – Eric

+0

Ich verwende Tensorflow 0.8. 0 bcz Ich habe cuda7! In welcher Version sollte ich die neueste Version mit cuda8 installieren? –

Antwort

0

tf.stack wurde in this commit hinzugefügt. Github zeigt das früheste Tag als Version 0.12.0. Können Sie tensorflow auf diese Version aktualisieren?

Wenn nicht - es sieht aus wie tensorflow verwendet, um diese Funktion tf.pack aufrufen, so dass vielleicht mit diesem Namen stattdessen funktioniert.

0

Überprüfen Sie die tf docs.

np.stack ist eine relativ neue Funktion. hstack und vstack sind schon lange dabei und sind nur Wrapper für np.concatenate. np.stack wurde als Annehmlichkeit hinzugefügt, um concatenate auf einer neuen Achse flexibler zu machen. Sehen Sie sich den Code mit np.source(np.stack) an.

Angesichts dieser Geschichte würde ich nicht überrascht sein, wenn tf hat keine ähnliche Funktion, oder es ist eine neue. Oder es könnte unabhängig von dem np.stack Modell implementiert werden.