tf.boolean_mask 的作用是 通过布尔值 过滤元素

def boolean_mask(tensor, mask, name="boolean_mask", axis=None):
"""Apply boolean mask to tensor.

tensor:被过滤的元素

mask:一堆 bool 值,它的维度不一定等于 tensor

return: mask 为 true 对应的 tensor 的元素

当 tensor 与 mask 维度一致时,return 一维

先看个 一维 例子

# 1-D example
tensor = [0, 1, 2, 3]
mask = np.array([True, False, True, False])
out = tf.boolean_mask(tensor, mask)
print(sess.run(out)) # [0, 2]
print(out.shape) # (?,)

再看看 mask 与 tensor 维度不同的例子

tensor = [[1, 2], [3, 4], [5, 6]]
mask = np.array([True, False, True]) # mask 与 tensor 维度不同
out2 = tf.boolean_mask(tensor, mask)
print(sess.run(out2)) # [[1, 2], [5, 6]]
print(out2.shape) # (?, 2)

mask 可以用一个函数代替

# 3-D
tensor = tf.constant([
[[2,4],[4,1]],
[[6,8],[2,1]]],tf.float32)
mask = tensor > 2 # 滤波器 mask 与 tensor 相同维度
out3 = tf.boolean_mask(tensor, mask)
print(sess.run(tensor))
print(sess.run(mask)) # [[[False True] [ True False]]
# [[ True True] [False False]]]
print(sess.run(out3)) # [4. 4. 6. 8.] 输出一维
print(out3.shape) # (?,)

shape

上面的 shape 是怎么回事呢?有如下规则

假设 tensor.rank=4(m,n,p,q),则

(1)当mask.shape=(m,n,p,q),结果返回(?,)

(2)当mask.shape=(m,n,p),结果返回(?,q),表示 q 维度没有过滤

(3)当mask.shape=(m,n),结果返回(?,p,q)

(4)当mask.shape=(m),结果返回(?,n,p,q)

参考资料:

https://blog.csdn.net/qq_29444571/article/details/84574526

https://www.w3cschool.cn/doc_tensorflow_python/tensorflow_python-tf-boolean_mask.html

tf.boolean_mask的更多相关文章

  1. tensorflow 基本函数(1.tf.split, 2.tf.concat,3.tf.squeeze, 4.tf.less_equal, 5.tf.where, 6.tf.gather, 7.tf.cast, 8.tf.expand_dims, 9.tf.argmax, 10.tf.reshape, 11.tf.stack, 12tf.less, 13.tf.boolean_mask

    1.  tf.split(3, group, input)  # 拆分函数    3 表示的是在第三个维度上, group表示拆分的次数, input 表示输入的值 import tensorflow ...

  2. tensorflow中的boolean_mask

    将mask中所有为true的抽取出来,放到一起,这里从n维降到1维度 tensor = [[1, 2], [3, 4], [5, 6]] import numpy as np mask=np.arra ...

  3. TF随笔-10

    #!/usr/bin/env python# -*- coding: utf-8 -*-import tensorflow as tf x = tf.constant(2)y = tf.constan ...

  4. 解释张量及TF的一些API

    张量的定义 张量(Tensor)理论是数学的一个分支学科,在力学中有重要应用.张量这一术语起源于力学,它最初是用来表示弹性介质中各点应力状态的,后来张量理论发展成为力学和物理学的一个有力的数学工具.张 ...

  5. 第七节,TensorFlow编程基础案例-TensorBoard以及常用函数、共享变量、图操作(下)

    这一节主要来介绍TesorFlow的可视化工具TensorBoard,以及TensorFlow基础类型定义.函数操作,后面又介绍到了共享变量和图操作. 一 TesnorBoard可视化操作 Tenso ...

  6. DeepLearning.ai-Week3-Autonomous driving-Car detection

    1 - Import Packages import argparse import os import matplotlib.pyplot as plt from matplotlib.pyplot ...

  7. 课程四(Convolutional Neural Networks),第三 周(Object detection) —— 2.Programming assignments:Car detection with YOLOv2

    Autonomous driving - Car detection Welcome to your week 3 programming assignment. You will learn abo ...

  8. Autonomous driving - Car detection YOLO

    Andrew Ng deeplearning courese-4:Convolutional Neural Network Convolutional Neural Networks: Step by ...

  9. 『TensorFlow』SSD源码学习_其五:TFR数据读取&数据预处理

    Fork版本项目地址:SSD 一.TFR数据读取 创建slim.dataset.Dataset对象 在train_ssd_network.py获取数据操作如下,首先需要slim.dataset.Dat ...

随机推荐

  1. AD走圆弧走线

    美式键盘: “shift  +  空格”

  2. 下页小希学MVC5+EF6.2 学习记录二

    目的:1 学习mvc+ef 2  写下日记也是对自己的督促 从前端的UI开始 MVC分离的比较好,开发顺序没有特别要求,先开发哪一部分都可以,这次我们主要讲解前端UI的部分. ASP.NET MVC抛 ...

  3. java课程课后作业190616之个人学期总结

    在团队开始的那一周,我们做了作品的功能畅想,在讲台上谈论了自己的产品可能会有的功能,比如说课程查找功能,空教室查找功能,霸屏功能,课程留言功能等,当然,随着开发的推进,我也发现了有些功能上实现的困难, ...

  4. 通过SQL语句操作Sqlite数据库

    一.数据库的创建 数据库版本为1 //Ctrl+Shift+U:大写 public static final String DATABASE_NAME ="zzw.db"; pub ...

  5. Java语言学习总结 扩展篇 DateFormat类

    DateFormat类 java.text .DateFormat 是 日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换:也就是可以在Date对象与String对象之间进 ...

  6. DevOps专题|玩转Kubernetes网络

    Kubernetes无疑是当前最火热的容器编排工具,网络是kubernetes中非常重要的一环, 本文主要介绍一些相应的网络原理及术语,以及kubernetes中的网络方案和对比. Kubernete ...

  7. NET CLR via C#(第4版)第4章 类型基础

    本章内容: 1 所有类型都从System.Object派生 2 类型转换 3 命名空间和程序集 4 运行时的相互关系   本章讲述使用类型和CLR时需掌握的基础知识.具体地说,要讨论所有类型都具有的一 ...

  8. Mybatis 持久化,持久层

    持久化 持久化是将程序数据在持久状态和瞬时状态间转换的机制. 即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘).持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中.X ...

  9. django 过滤器-查询集-比较运算符-FQ对象-mysql的命令窗口

    """ 返回查询集的方法称为过滤器 all() 返回查询集中所有数据 filter() 返回符合条件的数据 一.filter(键=值) 二.filter(键=值,键=值) ...

  10. 吴裕雄--天生自然MySQL学习笔记:MySQL 删除数据表

    MySQL中删除数据表是非常容易操作的, 但是在进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失. 语法 以下为删除MySQL数据表的通用语法: DROP TABLE table_nam ...