import torch
import torch.nn as nn
# --- モデル定義 ---
class Model(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
super().__init__()
self.linear1 = nn.Linear(input_size, hidden_size)
self.layer_norm1 = nn.LayerNorm(hidden_size)
self.linear2 = nn.Linear(hidden_size, hidden_size)
self.layer_norm2 = nn.LayerNorm(hidden_size)
self.linear3 = nn.Linear(hidden_size, output_size)
self.layer_norm3 = nn.LayerNorm(output_size)
def forward(self, x):
out = self.linear1(x)
out = self.layer_norm1(out)
out = torch.relu(out)
out = self.linear2(out)
out = self.layer_norm2(out)
out = torch.relu(out)
out = self.linear3(out)
out = self.layer_norm3(out)
return out
torch.manual_seed(42)
# 入力(バッチサイズ: 4, 入力次元: 8)
x = torch.randn(4, 8)
# モデル作成
model = Model(input_size=8, hidden_size=16, output_size=4)
# 順伝播
out = model(x)
print("入力 shape:", x.shape)
print("出力 shape:", out.shape)
print("出力テンソル:\n", out)