gpt4 book ai didi

python - Tensorflow 中的 tf.expand_dims 和 tf.newaxis 有什么区别?

转载 作者:太空狗 更新时间:2023-10-30 01:11:19 25 4
gpt4 key购买 nike

大家好,我是 Tensorflow 的新手。
我想改变张量的维度,我找到了3种方法来实现这个,如下所示:

a = tf.constant([[1,2,3],[4,5,6]]) # shape (2,3)

# change dimention of a to (2,3,1)
b = tf.expand_dims(a,2) # shape(2,3,1)
c = a[:,:,tf.newaxis] # shape(2,3,1)
d = tf.reshape(a,(2,3,1)) # shape(2,3,1)

这 3 种方法之间有什么区别吗?在性能方面?
我应该使用哪种方法?

最佳答案

三者之间没有真正的区别,但有时一个或另一个可能更方便:

  • tf.expand_dims(a, 2):当你想添加一个维度并且它的索引是可变的(例如另一个 TensorFlow 操作的结果,或者一些函数参数)时很方便。根据您的风格,您可能会发现它更具可读性,因为它清楚地表达了添加维度的意图。
  • a[:,:,tf.newaxis]:我个人经常使用它,因为我发现它可读性强(可能是因为我在 NumPy 中习惯了它),尽管并非在所有情况下.如果您想添加多个维度(而不是多次调用 tf.expand_dims),则特别方便。另外(显然)如果您想切片并同时添加新维度。但是,它不适用于可变轴索引,如果您有多个维度,tf.expand_dims 可能不会那么困惑。
  • tf.reshape(a,(2,3,1)):我个人很少或从不使用它来添加维度,因为它需要我知道并指定所有(或所有但是一个)剩余的尺寸大小,并且在阅读代码时也可能会产生误导。但是,如果我需要 reshape 和添加维度,我通常会在同一个操作中进行。

关于python - Tensorflow 中的 tf.expand_dims 和 tf.newaxis 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51757587/

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