鍍金池/ 問答/人工智能  HTML/ pytorch怎么輸入多個(gè)特征

pytorch怎么輸入多個(gè)特征

我剛剛開始學(xué)習(xí)機(jī)器學(xué)習(xí)相關(guān)的內(nèi)容,在自己試著做一些小東西的時(shí)候發(fā)現(xiàn),網(wǎng)上的pytorch內(nèi)容只輸入了一個(gè)特征,可能是我的關(guān)鍵詞不對(duì)。如果我要使用pytorch創(chuàng)建一個(gè)模型的話,要怎么輸入多個(gè)特征來(lái)達(dá)到更好的計(jì)算效果呢?

如下,想做一個(gè)判斷加密類型的分類器,一個(gè)密文的類型可以通過字符類型和密文長(zhǎng)度來(lái)判斷,但是現(xiàn)在我只能輸入一個(gè)特征,字符類型。

class PasswordClassifier(nn.Module):
    def __init__(self, i_char, o_labels):
        super(PasswordClassifier, self).__init__()
        self.l_char = nn.Linear(i_char, o_labels)

    def forward(self, f_char):
        return self.linear(f_char)

model = PasswordClassifier(CHARS_LEN, len(LABELS_INDEX))
loss_func = nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(model.parameters(), lr=LEARNING_RATE)

現(xiàn)在我想再輸入一個(gè)密文長(zhǎng)度特征,我應(yīng)該怎么給我的模型添加輸入特征和損失函數(shù)等內(nèi)容讓模型更好的聯(lián)系到輸出標(biāo)簽上?

回答
編輯回答
半心人

在問這個(gè)問題之前,我還不是很了解 nn.module 這個(gè)類,與 pytorch 的一些基礎(chǔ)知識(shí)

在pytorch的 nn.Module 類中,初始化 __init__ 的時(shí)候傳入的是各個(gè)層的特征數(shù)。
以我拿的分類器為例子來(lái)說(shuō),這個(gè)分類器很簡(jiǎn)單,網(wǎng)絡(luò)中沒有太多的層次,就是做了一個(gè)線性回歸的操作。傳入的
i_char 為輸入特征個(gè)數(shù),o_labels 為輸入特征個(gè)數(shù)。比如,我的特征有密文類型和密文長(zhǎng)度,密文類型產(chǎn)生的特征(先不算符號(hào))有26 + 26 + 10 = 62個(gè),這時(shí)候我還想要添加1個(gè)密文長(zhǎng)度的特征,這時(shí)候就特征就有63個(gè)。

每次調(diào)用這個(gè)類也就是它的 __call__ 的時(shí)候,這個(gè)函數(shù)會(huì)調(diào)用 forward 這個(gè)函數(shù),并給這個(gè)函數(shù)傳入我們調(diào)用 model 的時(shí)候傳入的內(nèi)容。這個(gè)傳入內(nèi)容就是特征的相關(guān)內(nèi)容。

2018年7月7日 08:54