PyTorch torch.nn.Parameter 関数
torch.nn.ParameterPyTorch における学習可能なパラメータテンソルです。
これは、通常のテンソルを学習可能なパラメータに変換するラッパーで、モジュールのパラメータリストに自動的に追加されます。
関数定義
torch.nn.Parameter(data=None, requires_grad=True)
使用例
例1: 基本的な使い方
実例
import torch
import torch.nn as nn
class MyModule(nn.Module):
def __init__(self):
super(MyModule, self).__init__()
# 学習可能なパラメータを作成
self.weight = nn.Parameter(torch.randn(10, 5))
self.bias = nn.Parameter(torch.zeros(5))
def forward(self, x):
return x @ self.weight.t() + self.bias
model = MyModule()
print("パラメータ:", list(model.named_parameters()))
print("重み形状:", model.weight.shape)
import torch.nn as nn
class MyModule(nn.Module):
def __init__(self):
super(MyModule, self).__init__()
# 学習可能なパラメータを作成
self.weight = nn.Parameter(torch.randn(10, 5))
self.bias = nn.Parameter(torch.zeros(5))
def forward(self, x):
return x @ self.weight.t() + self.bias
model = MyModule()
print("パラメータ:", list(model.named_parameters()))
print("重み形状:", model.weight.shape)
例2: register_parameter の代替
実例
import torch
import torch.nn as nn
# 方法1:nn.Parameter を使用(推奨)
class Net1(nn.Module):
def __init__(self):
super().__init__()
self.param = nn.Parameter(torch.ones(5))
# 方法2:register_parameter を使用(同等)
class Net2(nn.Module):
def __init__(self):
super().__init__()
self.register_parameter('param', nn.Parameter(torch.ones(5)))
print("方法1 パラメータ:", list(Net1().named_parameters()))
print("方法2 パラメータ:", list(Net2().named_parameters()))
import torch.nn as nn
# 方法1:nn.Parameter を使用(推奨)
class Net1(nn.Module):
def __init__(self):
super().__init__()
self.param = nn.Parameter(torch.ones(5))
# 方法2:register_parameter を使用(同等)
class Net2(nn.Module):
def __init__(self):
super().__init__()
self.register_parameter('param', nn.Parameter(torch.ones(5)))
print("方法1 パラメータ:", list(Net1().named_parameters()))
print("方法2 パラメータ:", list(Net2().named_parameters()))
例3: 学習不可能なパラメータ
実例
import torch
import torch.nn as nn
# requires_grad=False で学習不可能なパラメータを作成
param_no_grad = nn.Parameter(torch.ones(5), requires_grad=False)
print("学習可能:", param_no_grad.requires_grad)
print("依然として Parameter:", type(param_no_grad))
import torch.nn as nn
# requires_grad=False で学習不可能なパラメータを作成
param_no_grad = nn.Parameter(torch.ones(5), requires_grad=False)
print("学習可能:", param_no_grad.requires_grad)
print("依然として Parameter:", type(param_no_grad))
使用シーン
- カスタムレイヤー: 学習可能な重みを実装する
- 特殊モジュール: 非標準のパラメータ
- 直接アクセス: 操作が便利
ヒント:nn.Parameter は tensor のサブクラスで、自動的に parameters() に追加されます。
その他の拡張
PyTorch torch.nn リファレンス