Torchで回帰タスクをどのように処理しますか?
Torchで回帰タスクを処理するには、通常モデルを訓練するために損失関数と最適化器を定義する必要があります。まず、モデルの予測と実際の値の間の差を測定する損失関数を定義します。一般的な損失関数には、平均二乗誤差(Mean Squared Error)や平均絶対誤差(Mean Absolute Error)などがあります。その後、最適化器を使用してモデルパラメータを調整し、損失関数を最小化します。一般的な最適化器には、確率的勾配降下法(SGD)やAdamなどがあります。
回帰タスクを扱うための簡単なサンプルコードが以下に示されています。
import torch
import torch.nn as nn
import torch.optim as optim
# 定义数据
X = torch.tensor([[1.0], [2.0], [3.0]])
y = torch.tensor([[2.0], [4.0], [6.0]])
# 定义模型
model = nn.Linear(1, 1)
# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)
# 训练模型
for epoch in range(100):
optimizer.zero_grad()
outputs = model(X)
loss = criterion(outputs, y)
loss.backward()
optimizer.step()
if (epoch+1) % 10 == 0:
print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, 100, loss.item()))
# 测试模型
with torch.no_grad():
test_input = torch.tensor([[4.0]])
predicted = model(test_input)
print('Predicted value: {:.2f}'.format(predicted.item()))
コードの上部では、まずXとyのデータを定義し、その後、単純な線形モデルと、損失関数に平均二乗誤差、最適化手法に確率的勾配降下法を定義しました。次に、モデルのトレーニングを行い、各エポックで損失を計算し、モデルパラメータを更新し、最後にモデルをテストして予測結果を出力します。