簡體   English   中英

如何在 Torch 中訓練一系列模型?

[英]How does one train a list of models in Torch?

我正在嘗試訓練一系列 Torch 神經網絡模型。 我使用列表是因為我想要擁有任意數量的模型,並且能夠遍歷列表。 我目前正在嘗試

for i in range(len(model_list)):

    old_model = model_list[i]

    new_model = train_model(old_model, data) # train_model take a model, trains it, and returns it

    model_list[i] = new_model

但是我遇到了某種 scope 問題,因為列表中的模型不會更新它們的參數。 我認為它與 model 我正在更新是某種克隆有關,但我不明白為什么返回 model 沒有效果。 我的訓練代碼如下所示:

def train_model(model, data):
    model_optimizer = optim.Adam(model.parameters())
    model_output = model(data)
    model_loss = criterion(model_output, target) # lets just say target we get from data
    model_loss.backward()
    model_optimizer.step()

    return model

我不明白為什么這樣的代碼不起作用,但是列表中的模型沒有更新(在檢查了它們的系數之后),並且損失沒有改變。 這是關於模型或其參數的某種 scope 問題嗎? 還是有其他問題? 謝謝。

我猜您當前的 train_model function 僅計算損失並更新模型的權重僅進行一次迭代,因為您始終返回 model。

因此,我建議您修改此 function 以便在返回 model 之前訓練 X 時期的模型。

建議代碼

def train_model(model, data):
    model_optimizer = optim.Adam(model.parameters())

    for epoch in range(EPOCHS):
        for data in train_loader:
            model.zero_grad()
            model_output = model(data)
            model_loss = criterion(model_output, target) # lets just say target we get from data
            model_loss.backward()
            model_optimizer.step()

    return model

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM