欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入理解Tensorflow中的masking和padding

 更新時間:2020年02月24日 10:40:03   作者:hustqb  
TensorFlow 是一個用于人工智能的開源神器,這篇文章主要介紹了Tensorflow中的masking和padding的相關知識,通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下

TensorFlow是一個采用數(shù)據(jù)流圖(data flow graphs),用于數(shù)值計算的開源軟件庫。節(jié)點(Nodes)在圖中表示數(shù)學操作,圖中的線(edges)則表示在節(jié)點間相互聯(lián)系的多維數(shù)據(jù)數(shù)組,即張量(tensor)。它靈活的架構讓你可以在多種平臺上展開計算,例如臺式計算機中的一個或多個CPU(或GPU),服務器,移動設備等等。TensorFlow 最初由Google大腦小組(隸屬于Google機器智能研究機構)的研究員和工程師們開發(fā)出來,用于機器學習和深度神經(jīng)網(wǎng)絡方面的研究,但這個系統(tǒng)的通用性使其也可廣泛用于其他計算領域。

聲明:

需要讀者對tensorflow和深度學習有一定了解

tf.boolean_mask實現(xiàn)類似numpy數(shù)組的mask操作

Python的numpy array可以使用boolean類型的數(shù)組作為索引,獲得numpy array中對應boolean值為True的項。示例如下:

# numpy array中的boolean mask
import numpy as np
target_arr = np.arange(5)
print "numpy array before being masked:"
print target_arr
mask_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實現(xiàn)同上述numpy array一樣的mask操作,該函數(shù)的參數(shù)也比較簡單,如下所示:

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

下面,我們來嘗試一下tf.boolean_mask函數(shù),示例如下:

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]]

我們發(fā)現(xiàn),結果不是[[1], [5]]。tf.boolean_mask不做元素維度的mask,tersorflow中有tf.ragged.boolean_mask實現(xiàn)元素維度的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執(zhí)行mask操作。

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

上文定義的sparse tensor有1和2兩個值,對應的indices為[[0, 0], [1, 2]],執(zhí)行tf.sparsse.mask(a, [[1, 2]])后,稀疏向量轉化成dense的值為:

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

由于tf.sparse中的大多數(shù)函數(shù)都只在tensorflow2.0版本中有,所以沒有實例演示。

padded_batch

tf.Dataset中的padded_batch函數(shù),根據(jù)輸入序列中的最大長度,自動的pad一個batch的序列。

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

這個函數(shù)與tf.Dataset中的batch函數(shù)對應,都是基于dataset構造batch,但是batch函數(shù)需要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的文章就介紹到這了,更多相關Tensorflow中的masking和padding內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 超級好用的4個Python命令行可視化庫

    超級好用的4個Python命令行可視化庫

    通常大家都是在自己的電腦上跑程序,直接是可以可視化相應的結果.如果是在服務器上的話,使用終端,是不太方便查看結果. 今天,小F就給大家介紹4個可以在命令行中使用的Python庫. 分別是Bashplotlib、tqdm、PrettyTable、Colorama,需要的朋友可以參考下
    2021-06-06
  • django ORM之values和annotate使用詳解

    django ORM之values和annotate使用詳解

    這篇文章主要介紹了django ORM之values和annotate使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python如何實現(xiàn)MySQL實例初始化詳解

    Python如何實現(xiàn)MySQL實例初始化詳解

    這篇文章主要給大家介紹了關于Python如何實現(xiàn)MySQL實例初始化的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-11-11
  • python3學習筆記之多進程分布式小例子

    python3學習筆記之多進程分布式小例子

    本篇文章主要介紹了python3學習筆記之多進程分布式小例子,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • Python異常處理:try、except、else、finally的全面解析

    Python異常處理:try、except、else、finally的全面解析

    在Python中,異常是程序在運行時發(fā)生的錯誤,當Python解釋器遇到一個它不能處理的錯誤時,它會拋出一個異常,異常處理的主要目的是在程序遇到錯誤時,提供一種方法來處理這些錯誤,而不是簡單地讓程序崩潰,本文介紹了Python異常處理:try、except、else、finally的全面解析
    2024-07-07
  • Win8下python3.5.1安裝教程

    Win8下python3.5.1安裝教程

    這篇文章主要為大家詳細介紹了Win8下python3.5.1安裝教程,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • 使用Mixin設計模式進行Python編程的方法講解

    使用Mixin設計模式進行Python編程的方法講解

    Mixin模式也可以看作是一種組合模式,綜合多個類的功能來產(chǎn)生一個類而不通過繼承來實現(xiàn),下面就來整理一下使用Mixin設計模式進行Python編程的方法講解:
    2016-06-06
  • urllib2自定義opener詳解

    urllib2自定義opener詳解

    這篇文章主要介紹了urllib2自定義opener詳解,需要的朋友可以參考下
    2014-02-02
  • Python實現(xiàn)自定義函數(shù)的5種常見形式分析

    Python實現(xiàn)自定義函數(shù)的5種常見形式分析

    這篇文章主要介紹了Python實現(xiàn)自定義函數(shù)的5種常見形式,結合實例形式較為詳細的分析了Python自定義函數(shù)相關的參數(shù)、默認值、隱函數(shù)等相關操作技巧與注意事項,需要的朋友可以參考下
    2018-06-06
  • Python 求向量的余弦值操作

    Python 求向量的余弦值操作

    這篇文章主要介紹了Python 求向量的余弦值操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03

最新評論