Python 张量流-分裂和挤压
我是TensorFlow的新手,我正在格式化一些数据,以便输入一个递归神经网络。我的数据由输入占位符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轻松解决这个问
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)