優化模型optim

2021-10-05 06:20:35 字數 1388 閱讀 8252

#優化模型

#optim包中提供了非常多的可實現引數自動優化的類,比如sgd、adagrad、rmsprop、adam等,這些類都可以被直接呼叫

import torch

from torch.autograd import variable

from collections import ordereddict #orderdict有序字典 模型中使用

# 批量輸入的資料量

batch_n = 100

# 輸入資料的特徵個數

input_data = 1000

# 通過隱藏層後輸出的特徵數

hidden_layer = 100

# 最後輸出的分類結果數

output_data = 10

#如果requires_grad的值是false,那麼表示該變數在進行自動梯度計算的過程中不會保留梯度值

x = variable(torch.randn(batch_n, input_data), requires_grad=false)

y = variable(torch.randn(batch_n, output_data), requires_grad=false)

models = torch.nn.sequential(ordereddict([

("linel",torch.nn.linear(input_data,hidden_layer)),

("relu1",torch.nn.relu()),

("line2",torch.nn.linear(hidden_layer,output_data))]))

print(models)

epoch_n = 50

learning_rate = 1e-4

loss_fn = torch.nn.mseloss()

#adam類中輸入的是被優化的引數和學習速率的初始值

#如果沒有輸入學習速率的初始值,那麼預設使用0.001這個值

optimzer = torch.optim.adam(models.parameters(),lr = learning_rate)

# 進行模型訓練

for epoch in range(epoch_n):

y_pred = models(x)

loss = loss_fn(y_pred, y)

print("epoch:{}, loss:".format(epoch, loss.data))

#直接呼叫optimzer.zero_grad來完成對模型引數梯度的歸零

optimzer.zero_grad()

loss.backward()

# 使用計算得到的梯度值對各個節點的引數進行梯度更新

optimzer.step()

R中最優化函式optim

f x 1,x 2 1 x 1 2 100 x 2 x 1 2 2 該函式全域性最小值在 x 1 1,x 2 1 時取到。下面這種寫法是因為有多個自變數函式,傳入乙個引數x,每個自變數用向量x的分量來表示,從而定義出目標函式。objx1梯度 400 x 1 x 2 x 1 2 2 1 x 1 x2梯...

模型優化評估

這個咋翻譯呢,線性擴充基?無所謂其實,這裡主是用它來處理因變數 和 自變數 的非線性關係的 是指通過對資料進行轉換來擴充或替換資料集的的特徵.我最初的資料分析工具是r語言嘛,當時沒有接觸ml這些什麼正則的概念,就統計學理論.在做線性模型的時候,擬合的不是很好,我當時真的就憑感覺,給方程加上一些高階項...

效能優化模型

prpl pattern 參考資料 rail 是乙個以使用者為中心的效能模型,它將使用者的體驗分解為關鍵的操作。rail 的目標和方針旨在幫助開發人員和設計人員確保每乙個操作都有良好的使用者體驗。通過設計乙個考慮效能的結構,rail 使設計人員和開發人員能夠有效的關注影響使用者體驗最大的工作。每個 ...