TF中的卷積nn conv2d, layer conv2d和slim conv2d各自適用於哪些情況?

時間 2021-06-03 16:53:15

1樓:頤水風華

slim已經被遺棄,以後不會用了。不要去關注了。

nn是底層模組,很多情況用來剪枝模型時候使用,也可以用來搭建網路,可以自定義w和b的初始化值。

layer是高階模組,用tf.keras實現的。用來搭建網路。不過看官方tf2.0的意思。這個api很有可能未來遺棄。官方推薦使用tf.keras。

keras,nn,slim,layers可以混用,不過只能用來儲存為tf的模型。不能儲存為h5檔案。

2樓:SleepyBag

這種問題總要建議首先看一下文件。

然後再簡單解釋一下:

tf.nn包裡定義的是神經網路所需要的一些運算,而tf.layers中定義的是神經網路的網路層。

也就是說tf.nn.conv2d是乙個卷積操作,也就是在輸入影象上應用乙個卷積核得到結果。

而tf.layers.conv2d是乙個卷積層,卷積層中進行了卷積操作,但不只有卷積操作。

看一下它們的參數列,也可以有個大概的理解:

tf.nn.conv2d(

input,

filter,

strides,

padding,

use_cudnn_on_gpu=True,

data_format='NHWC',

dilations=[1, 1, 1, 1],

name=None

)tf.layers.conv2d(

inputs,

filters,

kernel_size,

strides=(1, 1),

padding='valid',

data_format='channels_last',

dilation_rate=(1, 1),

activation=None,

use_bias=True,

kernel_initializer=None,

bias_initializer=tf.zeros_initializer(),

kernel_regularizer=None,

bias_regularizer=None,

activity_regularizer=None,

kernel_constraint=None,

bias_constraint=None,

trainable=True,

name=None,

reuse=None

)可以看到layers中的conv2d多了很多引數。看一下layers.conv2d中多出來的引數有哪些:

activation: 說明layers中的conv2d包括啟用函式,這個是卷積操作本身所沒有的。

use_bias: 卷積後影象加上的偏移,也不在卷積操作本身中。

initializer: 引數初始化方法。這裡體現了兩者乙個重要區別:

nn.conv2d需要你自己定義卷積核這個tensor,而layers.conv2d中是他按照你給定的初始化方法定義卷積核,你只需要給卷積核的大小就好了。

regularizer: 這個是用於神經網路訓練的正則化工具。

constraint: 你可以通過這個來給你的引數施加約束,比如在引數大於1的時候強制賦值為1。

trainable: 是否可訓練。

name, reuse: 用於tensorflow命名空間的東西。

可見,tf.layers.conv2d是乙個考慮了各種操作在內的完整的卷積層,卷積操作只是其中的一步。

而在使用的時候,如果你想要的是乙個完整的卷積層,想讓它幫你做好加偏移,加啟用函式等等事情,那麼tf.layers.conv2d基本可以滿足你的要求。

而如果你只是想做乙個卷積運算,而不是想定義乙個包含偏移,啟用函式等等東西的卷積層,那麼你就要用tf.nn.conv2d。

tf.slim.conv2d的功能和tf.

layers.conv2d基本沒什麼區別。tf.

slim是乙個用來使用tensorflow進行神經網路訓練的包,它裡面定義了一整套訓練神經網路所需要的工具,其中也包括這個卷積層。如果你不用tf.slim來進行神經網路的訓練的話,那就不需要用tf.

slim.conv2d了。

如何評價電影《姜子牙》的中的2D演出

流映 超級好。看完 姜子牙 很久之後的現在,只記得開頭2D 四不像和姜子牙的潔癖,其中開頭2D讓人驚豔,場面壯麗,氣勢恢巨集,大片哇,但在全劇中的篇幅太少了,速度閃現也太快。雖然放在整個劇裡,與後半截的審美不一致,但不妨礙我震撼2D的美,畫手們真是牛,辛苦了。感覺這2D更多的是乙個大膽的嘗試,希望以...

維生素D2和D3的優缺點?

佛系養身族 維生素D最主要的是維生素D2與D3,一些研究表明,維生素D3相比D2有更大效能和更低成本,糾正維生素D缺乏時,應該首選維生素D3。也有研究表明維生素D3可以直接利用,維生素D2則需要在體內轉化為維生素D3才能被利用。如果您已經服用了多種維生素,則可能含有維生素D,請檢視補充說明標籤。理想...

《哥斯拉 2》和《環太平洋 2》中的怪獸哪個更厲害?

這怎麼比,拋開技能體重這些有重大差距的引數 哥斯拉是正面人物,是主角,開菊獸是反面人物,是配角。主角肯定比配角光環大的多 開菊獸是和人類科技對抗的,一開始核彈後來機甲。而哥斯拉和基哥屬於神仙打架,人類只有在旁邊搖旗吶喊的份。這水平肯定不在乙個檔次上啊 skriyakuto 環太是傳奇華納的,哥斯拉也...