张量流:reduce_max 函数
tensorflow: reduce_max function
考虑以下代码-
a=tf.convert_to_tensor(np.array([[1001,1002],[3,4]]), dtype=tf.float32)
b=tf.reduce_max(a,reduction_indices=[1], keep_dims=True)
with tf.Session():
print b.eval()
这里keep_dims的目的到底是什么?我测试了很多,发现上面相当于-
b=tf.reduce_max(a,reduction_indices=[1], keep_dims=False)
b=tf.expand_dims(b,1)
我可能错了,但我的猜测是,如果 keep_dims 为 False,我们将得到一个 2D 列向量。如果 keep_dims=True,我们有一个 2x1 矩阵。但是它们有什么不同呢?
如果你减少一个或多个指标(即张量的维度),你有效地减少了张量的秩(即它的维度数,换句话说,你需要的指标数,以便访问张量的一个元素)。通过设置 keep_dims=True
,您告诉 tensorflow 保留您减少的维度。然后它们的尺寸为 1,但它们仍然 在那里 。虽然列向量和 nx1 矩阵在概念上是相同的,但在张量流中,它们分别是秩为 1(您需要一个索引来访问元素)和秩 2(您需要两个索引来访问元素)的张量。
考虑以下代码-
a=tf.convert_to_tensor(np.array([[1001,1002],[3,4]]), dtype=tf.float32)
b=tf.reduce_max(a,reduction_indices=[1], keep_dims=True)
with tf.Session():
print b.eval()
这里keep_dims的目的到底是什么?我测试了很多,发现上面相当于-
b=tf.reduce_max(a,reduction_indices=[1], keep_dims=False)
b=tf.expand_dims(b,1)
我可能错了,但我的猜测是,如果 keep_dims 为 False,我们将得到一个 2D 列向量。如果 keep_dims=True,我们有一个 2x1 矩阵。但是它们有什么不同呢?
如果你减少一个或多个指标(即张量的维度),你有效地减少了张量的秩(即它的维度数,换句话说,你需要的指标数,以便访问张量的一个元素)。通过设置 keep_dims=True
,您告诉 tensorflow 保留您减少的维度。然后它们的尺寸为 1,但它们仍然 在那里 。虽然列向量和 nx1 矩阵在概念上是相同的,但在张量流中,它们分别是秩为 1(您需要一个索引来访问元素)和秩 2(您需要两个索引来访问元素)的张量。