- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
大家好,我是 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/
我想成对比较(与 <= )两个 NumPy ndarray 的所有元素s A和 B ,其中两个数组都可以具有任意维度 m 和 n,这样结果就是一个维度为 m + n 的数组。 我知道如何针对 B 的给
我想对一个数组进行切片,以便我可以使用它来对另一个任意维度的数组执行操作。换句话说,我正在执行以下操作: A = np.random.rand(5) B = np.random.rand(5,2,3,
关闭。这个问题需要 details or clarity 。目前不接受答案。 想要改进这个问题?通过 editing this post 添加详细信息并澄清问题。 已关闭 5 年前。 奥 git _a
我正在努力使我的程序更快。我有一个矩阵和一个向量: GDES = N.array([[1,2,3,4,5], [6,7,8,9,10], [11,12,13,14,15], [16,17,18,19,
什么是numpy.newaxis我什么时候应该使用它? 在一维数组 x 上使用它会产生: >>> x array([0, 1, 2, 3]) >>> x[np.newaxis, :] array([[
什么是numpy.newaxis我应该什么时候使用它? 在一维数组 x 上使用它会产生: >>> x array([0, 1, 2, 3]) >>> x[np.newaxis, :] array([[
using Distance euclidean ([1:10;1:10], [1:10]) ERROR: DimensionMismatch("The lengths of a and b mus
我想将一个数组中的每个向量与另一个数组中的所有向量进行比较,并计算每个向量匹配的符号数量。让我举个例子。我有两个数组,a 和 b。对于a中的每个向量,我想将其与b中的每个向量进行比较。然后我想返回一个
我需要计算沿定义的线 (3D) 具有相等间距的 n 个点 (3D)。我知道这条线的起点和终点。首先,我使用了 for k in range(nbin): step = k/float(nbin-1
您好,我是 tensorflow 的新手。我想在 tensorflow 中实现以下 python 代码。 import numpy as np a = np.array([1,2,3,4,5,6,7,
在 numpy 中,可以使用切片语法中的 'newaxis' 对象来创建长度为 1 的轴,例如: import numpy as np print np.zeros((3,5))[:,np.newax
我开始使用 Python 和 TensorFlow 机器学习。 我正在研究一个示例,在该示例中,我创建了一个简单的张量,表示具有两行三列 float 的矩阵: t = tf.constant([[1.
这个问题在这里已经有了答案: Numpy: Should I use newaxis or None? (1 个回答) 关闭 9 年前。 为什么None有np.newaxis的保存效果?例如,使用:
ndarray.reshape 或 numpy.newaxis 均可用于向数组添加新维度。它们似乎都创建了一个 View ,使用一个而不是另一个有什么理由或优势吗? >>> b array([ 1.,
我有一个名为预测的数组 array([0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0,
我正在尝试使用 Tensorflow 后端在 Keras 中训练深度学习算法。我正在尝试执行以下操作: x = tf.reshape(theta, [-1])[K.argmax(image)] 哪里i
例如: #Creating a new empty dataframe test=pd.DataFrame() test_list=[1,3,5,6,3,1] #Now I am converting
大家好,我是 Tensorflow 的新手。 我想改变张量的维度,我找到了3种方法来实现这个,如下所示: a = tf.constant([[1,2,3],[4,5,6]]) # shape (2,3
在操作矩阵的时候,不同的接口对于矩阵的输入维度要求不同,输入可能为1-D,2-D,3-D等等。下面介绍一下使用Numpy进行矩阵维度变更的相关方法。主要包括以下几种: 1、np.newaxis扩充
我最近在阅读一个开源项目的源代码。当程序员想要将像 array([0, 1, 2]) 这样的行向量转换为像 array([[0], [1], [2]] 这样的列向量时),使用了 np.reshape(
我是一名优秀的程序员,十分优秀!