tf.gather拼接

mu = np.random.rand(5,5)
sigma = np.random.rand(5,5)

index = [[0, 1],[1,2]]
smu = sess.run(tf.gather(mu,index))
ssigma = sess.run(tf.gather(sigma,index))
print(smu)
print(ssigma)
print(ssigma.shape)

[[[0.67022627 0.25120792 0.02617609 0.51403094 0.15839324]
  [0.98799653 0.98736352 0.30693956 0.35410828 0.72678107]]

 [[0.98799653 0.98736352 0.30693956 0.35410828 0.72678107]
  [0.51550099 0.10428722 0.0297628  0.77017502 0.53493682]]]
[[[0.57900274 0.01917046 0.00688705 0.74225908 0.346025  ]
  [0.63816741 0.64569699 0.0029196  0.78463413 0.01966627]]

 [[0.63816741 0.64569699 0.0029196  0.78463413 0.01966627]
  [0.11854726 0.65260806 0.1544332  0.59858186 0.38596031]]]
(2, 2, 5)
print(smu[:,0],"\n\n",smu[:,1])
print("\n\n",ssigma[:,0],"\n\n",ssigma[:,1])
print(ssigma[:,1])
[[0.67022627 0.25120792 0.02617609 0.51403094 0.15839324]
 [0.98799653 0.98736352 0.30693956 0.35410828 0.72678107]] 

 [[0.98799653 0.98736352 0.30693956 0.35410828 0.72678107]
 [0.51550099 0.10428722 0.0297628  0.77017502 0.53493682]]


 [[0.57900274 0.01917046 0.00688705 0.74225908 0.346025  ]
 [0.63816741 0.64569699 0.0029196  0.78463413 0.01966627]] 

 [[0.63816741 0.64569699 0.0029196  0.78463413 0.01966627]
 [0.11854726 0.65260806 0.1544332  0.59858186 0.38596031]]
(2, 5)
x = sess.run(tf.concat((smu[:,0],ssigma[:,0]),axis=1))
y = sess.run(tf.concat((smu[:,1],ssigma[:,1]),axis=1))
print(x,"\n\n",y)
[[0.67022627 0.25120792 0.02617609 0.51403094 0.15839324 0.57900274
  0.01917046 0.00688705 0.74225908 0.346025  ]
 [0.98799653 0.98736352 0.30693956 0.35410828 0.72678107 0.63816741
  0.64569699 0.0029196  0.78463413 0.01966627]] 

 [[0.98799653 0.98736352 0.30693956 0.35410828 0.72678107 0.63816741
  0.64569699 0.0029196  0.78463413 0.01966627]
 [0.51550099 0.10428722 0.0297628  0.77017502 0.53493682 0.11854726
  0.65260806 0.1544332  0.59858186 0.38596031]]
np.row_stack((x,y))

array([[0.67022627, 0.25120792, 0.02617609, 0.51403094, 0.15839324,
        0.57900274, 0.01917046, 0.00688705, 0.74225908, 0.346025  ],
       [0.98799653, 0.98736352, 0.30693956, 0.35410828, 0.72678107,
        0.63816741, 0.64569699, 0.0029196 , 0.78463413, 0.01966627],
       [0.98799653, 0.98736352, 0.30693956, 0.35410828, 0.72678107,
        0.63816741, 0.64569699, 0.0029196 , 0.78463413, 0.01966627],
       [0.51550099, 0.10428722, 0.0297628 , 0.77017502, 0.53493682,
        0.11854726, 0.65260806, 0.1544332 , 0.59858186, 0.38596031]])
当然可以!`tf.gather` 是 TensorFlow 中的一个函数,它用于根据指定的索引从一个张量中收集(或提取)元素。这个函数在处理稀疏数据、从查找表中获取值或者重新排列张量的维度时非常有用。 `tf.gather` 的基本定义如下: ``` python tf.gather( params, indices, validate_indices=None, axis=None, batch_dims=0, name=None ) ``` 参数解释: - `params`:一个张量,从中收集元素。 - `indices`:一个整数张量,表示要收集的元素的索引。 - `validate_indices`(可选):布尔值,用于检查索引是否越界。默认为 `None`,表示不进行检查。 - `axis`(可选):指定沿哪个轴收集元素。默认为 0。 - `batch_dims`(可选):整数,表示在收集操作之前,`params` 和 `indices` 张量的批处理维度。默认为 0。 - `name`(可选):操作的名称。 `tf.gather` 的返回值是一个新的张量,其中包含从 `params` 中收集的元素。 下面是一个简单的例子: ``` python import tensorflow as tf # 创建一个张量 params = tf.constant([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 指定要收集的元素的索引 indices = tf.constant([0, 2]) # 使用 tf.gather 收集元素 result = tf.gather(params, indices, axis=1) # 输出结果 print(result) ``` 输出: ``` tf.Tensor( [[1 3] [4 6] [7 9]], shape=(3, 2), dtype=int32) ``` 在这个例子中,我们沿着第 1 轴(列方向)从 `params` 张量中收集了索引为 0 和 2 的元素。
最新发布
04-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值