Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 张量流-分裂和挤压_Python_Numpy_Tensorflow - Fatal编程技术网

Python 张量流-分裂和挤压

Python 张量流-分裂和挤压,python,numpy,tensorflow,Python,Numpy,Tensorflow,我是TensorFlow的新手,我正在格式化一些数据,以便输入一个递归神经网络。我的数据由输入占位符x的三维张量给出。我想沿着第三维分割x,为此我已经(注意n_timesteps对应于沿着第三维的x的长度): 虽然,正如我用numpy尝试的那样: x = np.split (x, n_timesteps, axis = 2) 如果x是一个三维ndarray,则np.split将返回一个维度为3的n_timesteps数组列表,这样第三维是单态的。使用numpy我知道我可以使用np轻松解决这个问

我是TensorFlow的新手,我正在格式化一些数据,以便输入一个递归神经网络。我的数据由输入占位符
x
的三维张量给出。我想沿着第三维分割
x
,为此我已经(注意
n_timesteps
对应于沿着第三维的
x
的长度):

虽然,正如我用
numpy
尝试的那样:

x = np.split (x, n_timesteps, axis = 2)
如果
x
是一个三维
ndarray
,则
np.split
将返回一个维度为3的
n_timesteps
数组列表,这样第三维是单态的。使用
numpy
我知道我可以使用
np轻松解决这个问题。挤压
和列表理解一起删除单例维度:

# Split the previous 3d tensor to get a list of 'n_timesteps' 2d tensors of
# shape (batch_size, features_dimension)
x = tf.split (x, n_timesteps, axis = 2)
x = [np.squeeze(a, axis=2) for a in np.split(x, n_timesteps, axis=2)]

但是我如何在TF上做同样的事情呢?

尝试使用Tensorflow的压缩函数(TF.squence)和Tensorflow的扫描函数(TF.scan),而不是列表理解

tf.scan(lambda a, x_i: tf.squeeze(x_i, [2]), x, initializer=tf.constant(0, shape=[n_dim0, n_dim1]))

您可能正在寻找op:

x = tf.unstack(x, axis=2)