为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕仙森 2021-09-02 20:18:31
单个矩阵的 numpy 版本的 hstackc=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不能帮助我满意。
查看完整描述

3 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

我们可以交换/置换轴并重塑-

tf.reshape(tf.transpose(c_t,(1,0,2)),(c_t.shape[1],-1))


查看完整回答
反对 回复 2021-09-02
?
侃侃尔雅

TA贡献1801条经验 获得超15个赞

如果您想在原子级别以手动方式进行操作,那么下面的方法也可以。


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) 


In [134]: slices = [tf.squeeze(tfc[:1, ...]), tf.squeeze(tfc[1:, ...])]  

In [135]: stacked = tf.concat(slices, axis=1) 

In [136]: stacked.eval()           

Out[136]: 

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

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


查看完整回答
反对 回复 2021-09-02
  • 3 回答
  • 0 关注
  • 248 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信