tensorflow 选定张量特定维度的值_小结

本文介绍如何使用TensorFlow中的tf.boolean_mask方法进行数据筛选。通过具体的一维和二维示例展示了如何根据条件创建掩码,并利用该掩码从原始数据中选择符合特定条件的数据元素。

1. 用tf.boolean_mask方法

if is_training:
    # if all is difficult, then keep the first one
    isdifficult_mask = tf.cond(tf.count_nonzero(isdifficult, dtype=tf.int32) < tf.shape(isdifficult)[0],
                               lambda: isdifficult < tf.ones_like(isdifficult),
                               lambda: tf.one_hot(0, tf.shape(isdifficult)[0], on_value=True, off_value=False,
                                                  dtype=tf.bool))

    glabels_raw = tf.boolean_mask(glabels_raw, isdifficult_mask)
    gbboxes_raw = tf.boolean_mask(gbboxes_raw, isdifficult_mask)

注:

tf.boolean_mask(tensor,mask,name='boolean_mask',axis=None)
# 1-D example
tensor = [0, 1, 2, 3]
mask = np.array([True, False, True, False])
boolean_mask(tensor, mask)  # [0, 2]
# 2-D example
tensor = [[1, 2], [3, 4], [5, 6]]
mask = np.array([True, False, True])
boolean_mask(tensor, mask)  # [[1, 2], [5, 6]]

2.

TensorFlow中,将张量在某一维度上相加通常使用`tf.reduce_sum`函数或者`tf.add_n`函数。这两种方法都可以实现沿指定维度张量元素求和的功能。下面会介绍这两种方法的具体使用方式。 1. `tf.reduce_sum`函数可以对输入的张量在指定维度上进行元素求和操作。参数`axis`用于指定需要进行求和的维度。如果`axis`是一个列表,那么会在列表中的所有维度上进行求和操作。`tf.reduce_sum`还会自动去除求和轴的维度,如果不想去除可以使用`keep_dims=True`参数。 示例代码: ```python import tensorflow as tf # 创建一个3维张量 tensor = tf.constant([[[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]]]) # 在第一个维度上进行求和 result = tf.reduce_sum(tensor, axis=0) print(result.eval()) # 输出 [[15, 18], [21, 24]] # 保持求和轴的维度 result = tf.reduce_sum(tensor, axis=0, keepdims=True) print(result.eval()) # 输出 [[[15, 18], [21, 24]]] ``` 2. `tf.add_n`函数可以将多个张量进行元素级的相加。这个函数接收一个张量列表作为输入,并返回一个新张量,该张量包含输入列表中所有张量在相同位置上元素的和。 示例代码: ```python import tensorflow as tf # 创建三个3维张量 tensor1 = tf.constant([[[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]]]) tensor2 = tf.constant([[[1, 1], [1, 1]], [[1, 1], [1, 1]], [[1, 1], [1, 1]]]) tensor3 = tf.constant([[[1, 1], [1, 1]], [[1, 1], [1, 1]], [[1, 1], [1, 1]]]) # 将三个张量相加 result = tf.add_n([tensor1, tensor2, tensor3]) print(result.eval()) # 输出 [[3, 4], [5, 6], [7, 8]] ``` 需要注意的是,`tf.add_n`函数会返回一个新的张量,其尺寸与输入张量的尺寸一致,因此如果要在某个维度上相加,通常会将需要相加的张量尺寸调整到一致。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值