🙆
【備忘録】Pytorch パラメータ設定
シード設定
def seed_everything(seed=42):
random.seed(seed) # Python標準のrandomモジュールのシードを設定
os.environ['PYTHONHASHSEED'] = str(seed) # ハッシュ生成のためのシードを環境変数に設定
np.random.seed(seed) # NumPyの乱数生成器のシードを設定
torch.manual_seed(seed) # PyTorchの乱数生成器のシードをCPU用に設定
torch.cuda.manual_seed(seed) # PyTorchの乱数生成器のシードをGPU用に設定
torch.backends.cudnn.deterministic = True # PyTorchの畳み込み演算の再現性を確保
seed_everything() # 上述のシード設定関数を呼び出し
GPU
# GPUが利用可能かどうかを確認し、利用可能ならモデルをGPUに移動
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
モデルの詳細な情報
from torchinfo import summary
# モデルのインスタンス化
model = ConvNet()
# テスト入力
test_input = torch.randn(32, 64, 1)
# テスト入力のサイズ(バッチサイズを除く)
input_size = [(32, 64, 1)]
# summary関数を使ってモデルの概要を表示
# test_inputの形状がtorch.Size([32, 64, 1])である場合、input_size引数は[(32, 64, 1)]として渡す必要があります。
# ただし、torchinfoは通常、バッチサイズを含まない入力サイズを期待しています。したがって、バッチサイズを除外したサイズ、つまり[(64, 1)]を使用します。
summary(model, input_size)# テスト入力データ
==========================================================================================
Layer (type:depth-idx) Output Shape Param #
==========================================================================================
ConvNet [32, 16, 1] --
├─Conv1d: 1-1 [32, 64, 8] 32,832
├─ReLU: 1-2 [32, 64, 8] --
├─MaxPool1d: 1-3 [32, 64, 5] --
├─Conv1d: 1-4 [32, 64, 12] 32,832
├─ReLU: 1-5 [32, 64, 12] --
├─MaxPool1d: 1-6 [32, 64, 7] --
├─Conv1d: 1-7 [32, 32, 14] 16,416
├─ReLU: 1-8 [32, 32, 14] --
├─Conv1d: 1-9 [32, 16, 1] 7,184
├─Tanh: 1-10 [32, 16, 1] --
==========================================================================================
Total params: 89,264
Trainable params: 89,264
Non-trainable params: 0
Total mult-adds (Units.MEGABYTES): 28.60
==========================================================================================
Input size (MB): 0.01
Forward/backward pass size (MB): 0.45
Params size (MB): 0.36
Estimated Total Size (MB): 0.81
==========================================================================================
Discussion