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. ContentProvider ContentResolver ContentObserver 内容:提供、访问、监听

    内容提供 public class PersonContentProvider extends ContentProvider{ private static final String AUTHORI ...

  2. tomcat迁移到weblogic的几个问题

    第1个问题: 异常描述:VALIDATION PROBLEMS WERE FOUND problem: cvc-enumeration-valid: string value '3.0' is not ...

  3. CSS font-family 各字体一览表

    windows常见内置中文字体字体中文名 字体英文名宋体                      SimSun(浏览器默认) 黑体                      SimHei 微软雅黑 ...

  4. 用python3读csv文件出现UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd6 in position 0: invalid continuation byte

    1.python3读取csv文件时报如下图所示的错误 2.分析原因:读取的csv文件不是 UTF8 编码的,而IDE工具默认采用 UTF8 解码.解决方法是修改源文件的解码方式. 3.使用nodepa ...

  5. SpringCloud学习之手把手教你用IDEA搭建入门项目(二)

    本篇博客是承接上一篇<手把手教你用IDEA搭建SpringCloud入门项目(一)>,不清楚的请到我的博客空间查看后再看本篇博客 1)先创建一个Eureka服务注册中心模块,用来作为服务的 ...

  6. winform屏蔽鼠标右键

    /// <summary> /// 屏蔽右键 /// </summary> internal class MenuHandler : IContextMenuHandler { ...

  7. Thread--volatile详细

  8. Transmission添加SSL访问

    0.准备工作 0.1.在App Center中安装Entware-ng 0.2.以admin用户登录SSH到NAS 0.3.申请SSL证书,可以找免费的申请一个 0.4.公网IP和域名,这个要和SSL ...

  9. vscode显示当前文件完整路径信息

    Code->Preferences->Settings 搜索window.title 原本是activeEditorShort,修改 activeEditorShort => act ...

  10. Java Properties基础知识总结

    在Java语言中,使用一种以.properties为扩展名的文本文件作为资源文件,该类型的文件的内容格式为类似: some_key=some_value #注释描述 还有一种是使用xml文件保存项目的 ...