gpt4 book ai didi

python - Tensorflow:如何平铺按特定顺序重复的张量?

转载 作者:行者123 更新时间:2023-12-03 01:02:45 25 4
gpt4 key购买 nike

例如,我有一个张量 A = tf.Variable([a, b, c, d, e])并通过 tf.tile() ,它可以给出像 [a, b, c, d, e, a, b, c, d, e] 这样的张量

但我想改革A类似:[a, a, b, b, c, c, d, d, e] ,其中元素在原始位置重复。

实现这一目标的最有效方法(更少的操作)是什么(通过不同的操作)?

最佳答案

您可以通过添加维度、沿该维度平铺并删除它来实现:

import tensorflow as tf

A = tf.constant([1, 2, 3, 4, 5])

B = tf.expand_dims(A, axis=-1)
C = tf.tile(B, multiples=[1,2])
D = tf.reshape(C, shape=[-1])

with tf.Session() as sess:
print('A:\n{}'.format(A.eval()))
print('B:\n{}'.format(B.eval()))
print('C:\n{}'.format(C.eval()))
print('D:\n{}'.format(D.eval()))

给出

A:
[1 2 3 4 5]
B: # Add inner dimension
[[1]
[2]
[3]
[4]
[5]]
C: # Tile along inner dimension
[[1 1]
[2 2]
[3 3]
[4 4]
[5 5]]
D: # Remove innermost dimension
[1 1 2 2 3 3 4 4 5 5]

编辑:正如评论中所指出的,使用tf.stack允许动态指定附加维度:

F = tf.stack([A, A], axis=1)
F = tf.reshape(F, shape=[-1])

with tf.Session() as sess:
print(F.eval())

[1 1 2 2 3 3 4 4 5 5]

关于python - Tensorflow:如何平铺按特定顺序重复的张量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51822211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com