tensorflow张量维度转换(Swap tensor axes in tensorflow)

最近碰到要解决tensorflow维度转换的问题,搜索了好久在stackoverflow上找到了解决办法,不过无奈刚刚stackoverflow网站不知道为啥进不去,这里就不贴原地址了,不过在CSDN看到了一个:[work]Swap tensor axes in tensorflow

然后自己实践了一下,确实有效,代码如下:

import tensorflow as tf
a = tf.constant([[4.0, 4.0, 4.0], [3.0, 3.0, 3.0]])
b = tf.constant([[1.0, 1.0, 1.0], [1.0, 1.0, 1.0], [2.0, 2.0, 2.0]])
aa = tf.transpose(a, [1, 0])
bb = tf.transpose(b, [1, 0])
with tf.Session() as sess:
    print(a)
    print(sess.run(a))
    print(b)
    print(sess.run(b))
    print(aa)
    print(sess.run(aa))
    print(bb)
    print(sess.run(bb))

运行结果如下:

Tensor("Const_2:0", shape=(2, 3), dtype=float32)
[[4. 4. 4.]
 [3. 3. 3.]]
Tensor("Const_3:0", shape=(3, 3), dtype=float32)
[[1. 1. 1.]
 [1. 1. 1.]
 [2. 2. 2.]]
Tensor("transpose_2:0", shape=(3, 2), dtype=float32)
[[4. 3.]
 [4. 3.]
 [4. 3.]]
Tensor("transpose_3:0", shape=(3, 3), dtype=float32)
[[1. 1. 2.]
 [1. 1. 2.]
 [1. 1. 2.]]

可以看到,tf.transpose(a, [1, 0]) 其实就相当于在numpy数组中的维度转换函数np.swapaxes(a, 0, 1),下面再来看看这个函数的用法:

import numpy as np
a = np.array([[4.0, 4.0, 4.0], [3.0, 3.0, 3.0]])
aa = np.swapaxes(a, 0, 1)
aaa = np.swapaxes(a, 1, 0)
print('a = ')
print(a)
print('aa = ')
print(aa)
print('aaa = ')
print(aaa)

运行结果:

a = 
[[4. 4. 4.]
 [3. 3. 3.]]
aa = 
[[4. 3.]
 [4. 3.]
 [4. 3.]]
aaa = 
[[4. 3.]
 [4. 3.]
 [4. 3.]]

可以看出来aa = np.swapaxes(a, 0, 1) 与 aaa = np.swapaxes(a, 1, 0) 这两种方法都可以将第一维与第二维进行维度转换,结果相同。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值