pytorch網(wǎng)絡(luò)模型構(gòu)建場(chǎng)景的問(wèn)題介紹
記錄使用pytorch構(gòu)建網(wǎng)絡(luò)模型過(guò)程遇到的點(diǎn)
1. 網(wǎng)絡(luò)模型構(gòu)建中的問(wèn)題
1.1 輸入變量是Tensor張量
各個(gè)模塊和網(wǎng)絡(luò)模型的輸入, 一定要是tensor 張量;
可以用一個(gè)列表存放多個(gè)張量。
如果是張量維度不夠,需要升維度,
可以先使用 torch.unsqueeze(dim = expected)
然后再使用torch.cat(dim ) 進(jìn)行拼接;
需要傳遞梯度的數(shù)據(jù),禁止使用numpy, 也禁止先使用numpy,然后再轉(zhuǎn)換成張量的這種情況出現(xiàn);
這是因?yàn)閜ytorch的機(jī)制是只有是 Tensor 張量的類(lèi)型,才會(huì)有梯度等屬性值,如果是numpy這些類(lèi)別,這些變量并會(huì)丟失其梯度值。
1.2 __init__()方法使用
class ex:
def __init__(self):
pass
__init__方法必須接受至少一個(gè)參數(shù)即self,
Python中,self是指向該對(duì)象本身的一個(gè)引用,
通過(guò)在類(lèi)的內(nèi)部使用self變量,
類(lèi)中的方法可以訪問(wèn)自己的成員變量,簡(jiǎn)單來(lái)說(shuō),self.varname的意義為”訪問(wèn)該對(duì)象的varname屬性“
當(dāng)然,__init__()中可以封裝任意的程序邏輯,這是允許的,init()方法還接受任意多個(gè)其他參數(shù),允許在初始化時(shí)提供一些數(shù)據(jù),例如,對(duì)于剛剛的worker類(lèi),可以這樣寫(xiě):
class worker:
def __init__(self,name,pay):
self.name=name
self.pay=pay
這樣,在創(chuàng)建worker類(lèi)的對(duì)象時(shí),必須提供name和pay兩個(gè)參數(shù):
b=worker('Jim',5000)Python會(huì)自動(dòng)調(diào)用worker.init()方法,并傳遞參數(shù)。
細(xì)節(jié)參考這里init方法
1.3 內(nèi)置函數(shù)setattr()
此時(shí),可以使用python自帶的內(nèi)置函數(shù) setattr(), 和對(duì)應(yīng)的getattr()
setattr(object, name, value)
object – 對(duì)象。
name – 字符串,對(duì)象屬性。
value – 屬性值。
對(duì)已存在的屬性進(jìn)行賦值:
>>>class A(object):
... bar = 1
...
>>> a = A()
>>> getattr(a, 'bar') # 獲取屬性 bar 值
1
>>> setattr(a, 'bar', 5) # 設(shè)置屬性 bar 值
>>> a.bar
5
如果屬性不存在會(huì)創(chuàng)建一個(gè)新的對(duì)象屬性,并對(duì)屬性賦值:>>>class A():
... name = "runoob"
...
>>> a = A()
>>> setattr(a, "age", 28)
>>> print(a.age)
28
>>>
setattr() 語(yǔ)法
setattr(object, name, value)
object – 對(duì)象。
name – 字符串,對(duì)象屬性。
value – 屬性值。
1.4 網(wǎng)絡(luò)模型的構(gòu)建
注意到, 在python的 __init__() 函數(shù)中, self 本身就是該類(lèi)的對(duì)象的一個(gè)引用,即self是指向該對(duì)象本身的一個(gè)引用,
利用上述這一點(diǎn),當(dāng)在神經(jīng)網(wǎng)絡(luò)中,
需要給多個(gè)屬性進(jìn)行實(shí)例化時(shí),
且這多個(gè)屬性使用的是同一個(gè)類(lèi)進(jìn)行實(shí)例化.
則使用 setattr(self, string, object1) 添加屬性;
class Temporal_GroupTrans(nn.Module):
def __init__(self, num_classes=10,num_groups=35, drop_prob=0.5, pretrained= True):
super(Temporal_GroupTrans, self).__init__()
conv_block = Basic_slide_conv()
for i in range( num_groups):
setattr(self, "group" + str(i), conv_block)
# 自定義transformer模型的初始化, CustomTransformerModel() 在該類(lèi)中傳入初始化模型的參數(shù),
# nip:512 輸入序列中,每個(gè)列向量的編碼維度, 16: 注意力頭的個(gè)數(shù)
# 600: 中間mlp 隱藏層的維數(shù), 6: 堆疊transforEncode 編碼模塊的個(gè)數(shù);
self.trans_model = CustomTransformerModel(512,16,600, 6,droupout=0.5,nclass=4)
則使用 getattr(self, string, object1) 獲取屬性;
trans_input_sequence = []
for i in range(0, num_groups, ):
# 每組語(yǔ)譜圖的大小是一個(gè) (bt, ch,96,12)的矩陣,組與組之間沒(méi)有重疊;
cur_group = x[:, :, :, 12 * i:12 * (i + 1)]
# VARIABLE_fun = "self.group" # 每一組,與之對(duì)應(yīng)的卷積模塊;
# cur_fun = eval(VARIABLE_fun + str(i ))
cur_fun = getattr(self, 'group'+str(i))
cur_group_out = cur_fun(cur_group).unsqueeze(dim=1) # [bt,1, 512]
trans_input_sequence.append(cur_group_out)
到此這篇關(guān)于pytorch網(wǎng)絡(luò)模型構(gòu)建場(chǎng)景的問(wèn)題介紹的文章就介紹到這了,更多相關(guān)pytorch網(wǎng)絡(luò)模型構(gòu)建內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中filter與lambda的結(jié)合使用詳解
今天小編就為大家分享一篇Python中filter與lambda的結(jié)合使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
機(jī)器學(xué)習(xí)10大經(jīng)典算法詳解
這篇文章主要為大家詳細(xì)介紹了機(jī)器學(xué)習(xí)10大經(jīng)典算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
詳解Python list 與 NumPy.ndarry 切片之間的對(duì)比
這篇文章主要介紹了詳解Python list 與 NumPy.ndarry 切片之間的區(qū)別的相關(guān)資料,list 切片返回的是不原數(shù)據(jù),對(duì)新數(shù)據(jù)的修改不會(huì)影響原數(shù)據(jù)而NumPy.ndarry 的切片返回的是原數(shù)據(jù)需要的朋友可以參考下2017-07-07
Python實(shí)現(xiàn)準(zhǔn)確獲取PDF文件中的標(biāo)題
想要在PDF文件中,解析獲取全部的標(biāo)題,是一件比較麻煩的事情,這篇文章將介紹一種較為準(zhǔn)確的提取標(biāo)題的方式,感興趣的小伙伴可以了解一下2024-02-02
centos+nginx+uwsgi+Django實(shí)現(xiàn)IP+port訪問(wèn)服務(wù)器
這篇文章主要介紹了centos+nginx+uwsgi+Django實(shí)現(xiàn)IP+port訪問(wèn)服務(wù)器,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
Python select及selectors模塊概念用法詳解
這篇文章主要介紹了Python select及selectors模塊概念用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
python實(shí)現(xiàn)括號(hào)匹配的思路詳解
這篇文章主要介紹了python實(shí)現(xiàn)括號(hào)匹配及匹配格式的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-08-08

