声明:

  1. 需要读者对tensorflow和深度学习有一定了解

tf.boolean_mask实现类似numpy数组的mask操作

Python的numpy array可以使用boolean类型的数组作为索引,获得numpy array中对应boolean值为True的项。示例如下:

# numpy array中的boolean mask
import numpy as nptarget_arr = np.arange(5)
print "numpy array before being masked:"
print target_arrmask_arr = [True, False, True, False, False]
masked_arr = target_arr[mask_arr]
print "numpy array after being masked:"
print masked_arr

运行结果如下:

numpy array before being masked:
[0 1 2 3 4]
numpy array after being masked:
[0 2]

tf.boolean_maks对目标tensor实现同上述numpy array一样的mask操作,该函数的参数也比较简单,如下所示:

tf.boolean_mask(tensor,  # target tensormask,  # mask tensoraxis=None,name='boolean_mask'
)

下面,我们来尝试一下tf.boolean_mask函数,示例如下:

import tensorflow as tf# tensorflow中的boolean mask
target_tensor = tf.constant([[1, 2], [3, 4], [5, 6]])
mask_tensor = tf.constant([True, False, True])
masked_tensor = tf.boolean_mask(target_tensor, mask_tensor, axis=0)sess = tf.InteractiveSession()print masked_tensor.eval()

mask tensor中的第0和第2个元素是True,mask axis是第0维,也就是我们只选择了target tensor的第0行和第1行。

[[1 2][5 6]]

如果把mask tensor也换成2维的tensor会怎样呢?

mask_tensor2 = tf.constant([[True, False], [False, False], [True, False]])
masked_tensor2 = tf.boolean_mask(target_tensor, mask_tensor, axis=0)print masked_tensor2.eval()
[[1 2][5 6]]

我们发现,结果不是[[1], [5]]。tf.boolean_mask不做元素维度的mask,tersorflow中有tf.ragged.boolean_mask实现元素维度的mask。

tf.ragged.boolean_mask

tf.ragged.boolean_mask(data,mask,name=None
)

tensorflow中的sparse向量和sparse mask

tensorflow中的sparse tensor由三部分组成,分别是indices、values、dense_shape。对于稀疏张量SparseTensor(indices=[[0, 0], [1, 2]], values=[1, 2], dense_shape=[3, 4]),转化成dense tensor的值为:

[[1, 0, 0, 0][0, 0, 2, 0][0, 0, 0, 0]]

使用tf.sparse.mask可以对sparse tensor执行mask操作。

tf.sparse.mask(a,mask_indices,name=None
)

上文定义的sparse tensor有1和2两个值,对应的indices为[[0, 0], [1, 2]],执行tf.sparsse.mask(a, [[1, 2]])后,稀疏向量转化成dense的值为:

[[1, 0, 0, 0][0, 0, 0, 0][0, 0, 0, 0]]

由于tf.sparse中的大多数函数都只在tensorflow2.0版本中有,所以没有实例演示。

padded_batch

tf.Dataset中的padded_batch函数,根据输入序列中的最大长度,自动的pad一个batch的序列。

padded_batch(batch_size,padded_shapes,padding_values=None,drop_remainder=False
)

这个函数与tf.Dataset中的batch函数对应,都是基于dataset构造batch,但是batch函数需要dataset中的所有样本形状相同,而padded_batch可以将不同形状的样本在构造batch时padding成一样的形状。

elements = [[1, 2], [3, 4, 5], [6, 7], [8]] A = tf.data.Dataset.from_generator(lambda: iter(elements), tf.int32)
B = A.padded_batch(2, padded_shapes=[None])
B_iter = B.make_one_shot_iterator()print B_iter.get_next().eval()
[[1 2 0][3 4 5]]

Tensorflow中的masking和padding相关推荐

  1. Tensorflow Keras中的masking与padding的学习笔记

    Tensorflow Keras中的masking与padding 1. 背景 2. padding填充序列数据例子 3. 遮盖(masking ) 3.1 添加一个 keras.layers.Mas ...

  2. TensorFlow中padding卷积的两种方式“SAME”和“VALID”

    最近在用tensorflow搭建卷积神经网络,遇到了一个比较棘手的问题,我一直理解的padding有两个值,一个是SAME,一个是VALID,如果padding设置为SAME,则说明输入图片大小和输出 ...

  3. Tensorflow中卷积的padding操作

    上海站 | 高性能计算之GPU CUDA培训 4月13-15日 三天密集式学习  快速带你晋级 阅读全文 > 正文共975字,2张图,预计阅读时间3分钟. 之前一直对tensorflow的pad ...

  4. TensorFlow 中文文档 介绍

    介绍 本章的目的是让你了解和运行 TensorFlow 在开始之前, 先看一段使用 Python API 撰写的 TensorFlow 示例代码, 对将要学习的内容有初步的印象. 这段很短的 Pyth ...

  5. Tensorflow中2D卷积API使用

    TF中用于2D卷积操作的api是tf.nn.conv_2d,源码位置位于tensorflow/python/ops/gen_nn_ops.py 接口定义为: conv2d(input, filter, ...

  6. tensorflow中batch normalization的用法

    转载网址:如果侵权,联系我删除 https://www.cnblogs.com/hrlnw/p/7227447.html https://www.cnblogs.com/eilearn/p/97806 ...

  7. 【Tensorflow】Tensorflow中的卷积函数(conv2d、slim.conv2d、depthwise_conv2d、conv2d_transpose)

    [fishing-pan:https://blog.csdn.net/u013921430 转载请注明出处] 前言   卷积是卷积神经网络中最主要.最重要的运算.想必大家最早接触卷积的概念就是在初高中 ...

  8. CNN中的卷积核及TensorFlow中卷积的各种实现

    声明: 1. 我和每一个应该看这篇博文的人一样,都是初学者,都是小菜鸟,我发布博文只是希望加深学习印象并与大家讨论. 2. 我不确定的地方用了"应该"二字 首先,通俗说一下,CNN ...

  9. TensorFlow 中的 LRNOp

    TensorFlow 中的 LRNOp 与 Caffe 的差异: 直接使用平方和而不是像论文中一样使用平方和的均值,因此算子的推荐参数有所不同: 仅支持 NHWC 格式的输入: CPU 后端除框架源码 ...

最新文章

  1. BZOJ 3626: [LNOI2014]LCA
  2. win10下TensorFlow-GPU安装(GTX1660+CUDA10+CUDNN7.4)
  3. Log4j2进阶使用(按大小时间备份日志)
  4. 机器学习算法总结之支持向量机(五)
  5. Nginx: error while loading shared libraries: libpcre.so.1解决
  6. 安装Windows10 64位提示“只能安装到GPT分区”,怎么办?
  7. IT界的悲哀--做互联网,就要跳出互联网
  8. android开机自动启动app
  9. Bit Miracle Jpegv2.1.1117
  10. 前端开发: 微信小程序 (文字,链接)生成二维码
  11. 7-19 统计人数(2008慈溪) (100分)
  12. Gameplay常用编写方法(持续更新)
  13. OSI体系结构——数据链路层详解
  14. 专业的在线考试系统,快考题,全面聚集多场景考试业务
  15. ENVI App Store
  16. 详细代码注释1148: 组合三位数之一
  17. Using 1.7 requires compiling with Android 4.4 (KitKat); currently using API 15
  18. latex(2):公式插入
  19. Unity3D 内存 释放
  20. 基于百度地图sdk的地图app开发(七)——导航和模拟导航

热门文章

  1. 在制品和成本故障排除常用脚本
  2. My Visual DataBase(数据库编程软件)v5.3免费版
  3. 虚拟滚动实现(Vue)
  4. 中国医科大学22春《病理学(本科)》在线作业【标准答案】
  5. vmalloc 虚拟实现
  6. Android_聊天_表情
  7. 软件需求分析学习日记(一)需求工程概述
  8. 人脸识别-----Olivetti Faces人脸数据集合处理
  9. Student增删改查
  10. python爬取百度贴吧图片库_python爬取百度贴吧的图片2