PyTorch中多次调用nn.Sequential是否会重新生成模型?
PyTorch中多次调用nn.Sequential是否会重新生成模型?
核心结论分两种情况:
每次调用
nn.Sequential(...)构造函数时,都会生成全新的模型实例,参数是随机初始化的,相当于重新创建了一个独立模型。比如:import torch.nn as nn import torch # 两次调用构造函数,得到两个独立的模型 model_a = nn.Sequential(nn.Linear(10, 20), nn.ReLU()) model_b = nn.Sequential(nn.Linear(10, 20), nn.ReLU()) # 验证参数是否不同 print(torch.allclose(model_a[0].weight, model_b[0].weight)) # 输出False如果是调用已经实例化好的Sequential对象(比如用它做前向传播),这只是重复使用同一个模型,不会重新生成新模型,参数也不会被重新初始化。比如:
model = nn.Sequential(nn.Linear(10, 20), nn.ReLU()) # 多次调用模型做前向传播,用的都是同一个模型实例 out1 = model(torch.randn(32, 10)) out2 = model(torch.randn(32, 10))
简单来说:看你是调用「构造函数」还是「已创建的对象」——前者会生成新模型,后者只是复用现有模型。
内容的提问来源于stack exchange,提问作者natale
相关产品推荐
相关产品推荐

