我是tensorflow的新手:我有0.8版本和cuda 7.5这是我的代码: 我的numpy版本是1.11我认为(不确定) 我该怎么解决?它说没有模块名称堆栈? 我正在尝试实现变量Autoencoder
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]))
,日志是:
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 :(得分:0)
查看tf
文档。
np.stack
是一个相对较新的功能。 hstack
和vstack
一直存在,并且只是np.concatenate
的包装。添加了np.stack
,以方便新轴上的concatenate
更灵活。使用np.source(np.stack)
查看其代码。
鉴于历史,如果tf
没有类似的功能,或者它是一个新功能,我不会感到惊讶。或者它可以独立于np.stack
模型实现。
答案 1 :(得分:0)
tf.stack
,其中github将最早的标记显示为版本0.12.0。您可以将tensorflow
升级到该版本吗?
如果不是 - 看起来tensorflow
用于调用此函数tf.pack
,那么使用该名称可能会有效。