单个矩阵/张量在张量流上的 numpy hstack

单个矩阵的 numpy 版本的 hstack


c=np.array([[[2,3,4],[4,5,6]],[[20,30,40],[40,50,60]]])


np.hstack(c)

输出:


array([[ 2,  3,  4, 20, 30, 40],

       [ 4,  5,  6, 40, 50, 60]])

我希望在 TF 中实现相同的行为。


c_t=tf.constant(c)

tf.stack(c_t,axis=1).eval()

我收到错误


TypeError: Expected list for 'values' argument to 'pack' Op, not <tf.Tensor 'Const_14:0' shape=(2, 2, 3) dtype=int64>.

所以我试过了


tf.stack([c_t],axis=1).eval()

输出


array([[[[ 2,  3,  4],

         [ 4,  5,  6]]],



       [[[20, 30, 40],

         [40, 50, 60]]]])

我不是在寻找行为。tf.reshape并tf.concat不能帮助我满意。


慕仙森
浏览 249回答 3
3回答

呼如林

我们可以交换/置换轴并重塑-tf.reshape(tf.transpose(c_t,(1,0,2)),(c_t.shape[1],-1))

侃侃尔雅

如果您想在原子级别以手动方式进行操作,那么下面的方法也可以。In [132]: c=np.array([[[2,3,4],[4,5,6]],[[20,30,40],[40,50,60]]])In [133]: tfc = tf.convert_to_tensor(c)&nbsp;In [134]: slices = [tf.squeeze(tfc[:1, ...]), tf.squeeze(tfc[1:, ...])]&nbsp;&nbsp;In [135]: stacked = tf.concat(slices, axis=1)&nbsp;In [136]: stacked.eval()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Out[136]:&nbsp;array([[ 2,&nbsp; 3,&nbsp; 4, 20, 30, 40],&nbsp; &nbsp; &nbsp; &nbsp;[ 4,&nbsp; 5,&nbsp; 6, 40, 50, 60]])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python