<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【小白學(xué)PyTorch】擴(kuò)展之Tensorflow2.0 | 21 Keras的API詳解(下)池化、Normalization

          共 4436字,需瀏覽 9分鐘

           ·

          2020-10-16 21:25

          <<小白學(xué)PyTorch>>

          擴(kuò)展之Tensorflow2.0 | 21 Keras的API詳解(上)卷積、激活、初始化、正則

          擴(kuò)展之Tensorflow2.0 | 20 TF2的eager模式與求導(dǎo)

          擴(kuò)展之Tensorflow2.0 | 19 TF2模型的存儲(chǔ)與載入

          擴(kuò)展之Tensorflow2.0?| 18 TF2構(gòu)建自定義模型

          擴(kuò)展之Tensorflow2.0?| 17 TFrec文件的創(chuàng)建與讀取

          擴(kuò)展之Tensorflow2.0?| 16 TF2讀取圖片的方法

          擴(kuò)展之Tensorflow2.0?| 15 TF2實(shí)現(xiàn)一個(gè)簡(jiǎn)單的服裝分類(lèi)任務(wù)

          小白學(xué)PyTorch | 14 tensorboardX可視化教程

          小白學(xué)PyTorch | 13 EfficientNet詳解及PyTorch實(shí)現(xiàn)

          小白學(xué)PyTorch | 12 SENet詳解及PyTorch實(shí)現(xiàn)

          小白學(xué)PyTorch | 11 MobileNet詳解及PyTorch實(shí)現(xiàn)

          小白學(xué)PyTorch | 10 pytorch常見(jiàn)運(yùn)算詳解

          小白學(xué)PyTorch | 9 tensor數(shù)據(jù)結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu)

          小白學(xué)PyTorch | 8 實(shí)戰(zhàn)之MNIST小試牛刀

          小白學(xué)PyTorch | 7 最新版本torchvision.transforms常用API翻譯與講解

          小白學(xué)PyTorch | 6 模型的構(gòu)建訪問(wèn)遍歷存儲(chǔ)(附代碼)

          小白學(xué)PyTorch | 5 torchvision預(yù)訓(xùn)練模型與數(shù)據(jù)集全覽

          小白學(xué)PyTorch | 4 構(gòu)建模型三要素與權(quán)重初始化

          小白學(xué)PyTorch | 3 淺談Dataset和Dataloader

          小白學(xué)PyTorch | 2 淺談?dòng)?xùn)練集驗(yàn)證集和測(cè)試集

          小白學(xué)PyTorch | 1 搭建一個(gè)超簡(jiǎn)單的網(wǎng)絡(luò)

          小白學(xué)PyTorch | 動(dòng)態(tài)圖與靜態(tài)圖的淺顯理解


          參考目錄:

          • 1 池化層

            • 1.1 最大池化層

            • 1.2 平均池化層

            • 1.3 全局最大池化層

            • 1.4 全局平均池化層

          • 2 Normalization

            • 2.1 BN

            • 2.2 LN

          1 池化層

          和卷積層相對(duì)應(yīng),每一種池化層都有1D,2D,3D三種類(lèi)型,這里主要介紹2D處理圖像的一個(gè)操作。1D和3D可以合理的類(lèi)推。

          1.1 最大池化層

          tf.keras.layers.MaxPooling2D(
          ????pool_size=(2,?2),?strides=None,?padding="valid",?data_format=None,?**kwargs
          )

          這個(gè)strides在默認(rèn)的情況下就是步長(zhǎng)為2 下面看個(gè)例子:

          import?tensorflow?as?tf
          x?=?tf.random.normal((4,28,28,3))
          y?=?tf.keras.layers.MaxPooling2D(
          ????pool_size=(2,2))
          print(y(x).shape)
          >>>?(4,?14,?14,?3)

          如果你把strides改成1:

          import?tensorflow?as?tf
          x?=?tf.random.normal((4,28,28,3))
          y?=?tf.keras.layers.MaxPooling2D(
          ????pool_size=(2,2),
          ????strides?=?1)
          print(y(x).shape)
          >>>?(4,?27,?27,?3)

          如果再把padding改成‘same’:

          import?tensorflow?as?tf
          x?=?tf.random.normal((4,28,28,3))
          y?=?tf.keras.layers.MaxPooling2D(
          ????pool_size=(2,2),
          ????strides?=?1,
          ????padding='same')
          print(y(x).shape)
          >>>?(4,?28,?28,?3)

          這個(gè)padding默認(rèn)是'valid',一般strides為2,padding是valid就行了。

          1.2 平均池化層

          和上面的最大池化層同理,這里就展示一個(gè)API就不再多說(shuō)了。

          tf.keras.layers.AveragePooling2D(
          ????pool_size=(2,?2),?strides=None,?padding="valid",?data_format=None,?**kwargs
          )

          1.3 全局最大池化層

          tf.keras.layers.GlobalMaxPooling2D(data_format=None,?**kwargs)

          這個(gè)其實(shí)相當(dāng)于pool_size等于特征圖尺寸的一個(gè)最大池化層。看一個(gè)例子:

          import?tensorflow?as?tf
          x?=?tf.random.normal((4,28,28,3))
          y?=?tf.keras.layers.GlobalMaxPooling2D()
          print(y(x).shape)
          >>>?(4,?3)

          可以看到,一個(gè)通道只會(huì)輸出一個(gè)值,因?yàn)槲覀兊妮斎胩卣鲌D的尺寸是,所以這里的全局最大池化層等價(jià)于pool_size=28的最大池化層。

          1.4 全局平均池化層

          與上面的全局最大池化層等價(jià)。

          tf.keras.layers.GlobalAveragePooling2D(data_format=None,?**kwargs)

          2 Normalization

          Keras官方只提供了兩種Normalization的方法,一個(gè)是BatchNormalization,一個(gè)是LayerNormalization。雖然沒(méi)有提供InstanceNormalization和GroupNormalization的方法,我們可以通過(guò)修改BN層的參數(shù)來(lái)構(gòu)建。

          2.1 BN

          tf.keras.layers.BatchNormalization(
          ????axis=-1,
          ????momentum=0.99,
          ????epsilon=0.001,
          ????center=True,
          ????scale=True,
          ????beta_initializer="zeros",
          ????gamma_initializer="ones",
          ????moving_mean_initializer="zeros",
          ????moving_variance_initializer="ones",
          ????beta_regularizer=None,
          ????gamma_regularizer=None,
          ????beta_constraint=None,
          ????gamma_constraint=None,
          ????renorm=False,
          ????renorm_clipping=None,
          ????renorm_momentum=0.99,
          ????fused=None,
          ????trainable=True,
          ????virtual_batch_size=None,
          ????adjustment=None,
          ????name=None,
          ????**kwargs
          )

          我們來(lái)詳細(xì)講解一下參數(shù):

          • axis:整數(shù)。表示哪一個(gè)維度是通道數(shù)維度,默認(rèn)是-1,表示是最后一個(gè)維度。如果之前設(shè)置了channels_first,那么需要設(shè)置axis=1.
          • momentum:當(dāng)training過(guò)程中,Batch的均值方差會(huì)根據(jù)batch計(jì)算出來(lái),在預(yù)測(cè)或者驗(yàn)證的時(shí)候,這個(gè)均值方差是采用training過(guò)程中計(jì)算出來(lái)的滑動(dòng)均值和滑動(dòng)方差的。具體的計(jì)算過(guò)程是:
          • epsilon:一個(gè)防止運(yùn)算除法除以0的一個(gè)極小數(shù),一般不做修改;
          • center:True的話(huà),則會(huì)有一個(gè)可訓(xùn)練參數(shù)beta,也就是beta均值的這個(gè)offset;如果是False的話(huà),這個(gè)BN層則退化成以0為均值,gamma為標(biāo)準(zhǔn)差的Normalization。默認(rèn)是True,一般不做修改。
          • scale:與center類(lèi)似,默認(rèn)是True。如果是False的話(huà),則不使用gamma參數(shù),BN層退化成以beta為均值,1為標(biāo)準(zhǔn)差的Normalization層。
          • 其他都是初始化的方法和正則化的方法,一般不加以限制,使用的方法在上節(jié)課也已經(jīng)講解了,在此不加贅述。

          這里需要注意的一點(diǎn)是,keras的API中并沒(méi)有像PyTorch的API中的這個(gè)參數(shù)group,這樣的話(huà),就無(wú)法衍生成GN和InstanceN層了,在之后的內(nèi)容,會(huì)在Tensorflow_Addons庫(kù)中介紹

          2.2 LN

          tf.keras.layers.LayerNormalization(
          ????axis=-1,
          ????epsilon=0.001,
          ????center=True,
          ????scale=True,
          ????beta_initializer="zeros",
          ????gamma_initializer="ones",
          ????beta_regularizer=None,
          ????gamma_regularizer=None,
          ????beta_constraint=None,
          ????gamma_constraint=None,
          ????trainable=True,
          ????name=None,
          ????**kwargs
          )

          參數(shù)和BN的參數(shù)基本一致。直接看一個(gè)例子:

          import?tensorflow?as?tf
          import?numpy?as?np
          x?=?tf.constant(np.arange(10).reshape(5,2)*10,
          ????????????????dtype=tf.float32)
          print(x)
          y?=?tf.keras.layers.LayerNormalization(axis=1)
          print(y(x))

          運(yùn)行結(jié)果為:

          tf.Tensor(
          [[?0.?10.]
          ?[20.?30.]
          ?[40.?50.]
          ?[60.?70.]
          ?[80.?90.]],?shape=(5,?2),?dtype=float32)
          tf.Tensor(
          [[-0.99998??0.99998]
          ?[-0.99998??0.99998]
          ?[-0.99998??0.99998]
          ?[-0.99998??0.99998]
          ?[-0.99998??0.99998]],?shape=(5,?2),?dtype=float32)

          我在之前的文章中已經(jīng)介紹過(guò)了LN,BN,GN,IN這幾個(gè)歸一化層的詳細(xì)原理,不了解的可以看本文最后的相關(guān)鏈接中找一找。

          - END -


          往期精彩回顧





          瀏覽 38
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲无码一区二区三区四区 | 成人免费乱码大片a毛片蜜芽 | 夜色福利在线免费 | 青春草在线 | 青青草成人在线男人的天堂 |