问题如何在PyTorch中初始化权重?显示如何初始化权重Pytorch
.然而,什么是默认的初始重量Conv
和Dense
在Pytorch
?Pytorch
使用什么发行版?
我正在与 Keras 合作,尝试分析由一些具有有意义权重的层和一些具有随机初始化的层构建的模型对准确性的影响。
我使用加载方法参数加载VGG19
预训练模型。include_top = False
model = keras.applications.VGG19(include_top=False, weights="imagenet", input_shape=(img_width, img_height, 3))
Run Code Online (Sandbox Code Playgroud)
我加载VGG19
预先训练的模型,直到与加载 Keras 的先前模型位于同一层。
model = torch.hub.load('pytorch/vision:v0.6.0', 'vgg19', pretrained=True)
new_base = (list(model.children())[:-2])[0]
Run Code Online (Sandbox Code Playgroud)
加载模型后,下图显示了它们的摘要。( Pytorch
, Keras
)
到目前为止还没有问题。之后,我想在这些预训练模型上添加一个 Flatten 层和一个完全连接层。我用 Keras 做到了,但用 PyTorch 做不到。
new_model.summary() 的输出是:
我的问题是,如何添加新图层PyTorch
?
我想知道默认情况下如何初始化图层权重和偏差?例如,如果我创建线性层torch.nn.Linear(5,100)默认情况下如何初始化此图层的权重和偏差?
看起来parameters
和children
显示的信息是一样的,那么它们之间有什么区别呢?
import torch
print('torch.__version__', torch.__version__)
m = torch.load('imagenet_resnet18.pth')
print(m.parameters)
print(m.children)
Run Code Online (Sandbox Code Playgroud)