好的建筑设计网站,百度数据中心,男女做羞羞羞的事视频网站,网页制作教程免费视频以分类模型的VGG为例 vgg16_false torchvision.models.vgg16(weightsFalse)
vgg16_true torchvision.models.vgg16(weightsTrue)
设置为 False 的情况#xff0c;相当于网络模型中的参数都是初始化的、默认的设置为 True 时#xff0c;网络模型中的参数在数据集上是训练好… 以分类模型的VGG为例 vgg16_false torchvision.models.vgg16(weightsFalse)
vgg16_true torchvision.models.vgg16(weightsTrue)
设置为 False 的情况相当于网络模型中的参数都是初始化的、默认的设置为 True 时网络模型中的参数在数据集上是训练好的能达到比较好的效果
print(vgg16_true)
VGG((features): Sequential(
# 输入图片先经过卷积输入是3通道的、输出是64通道的卷积核大小是3×3的(0): Conv2d(3, 64, kernel_size(3, 3), stride(1, 1), padding(1, 1))
# 非线性(1): ReLU(inplaceTrue)
# 卷积、非线性、池化...(2): Conv2d(64, 64, kernel_size(3, 3), stride(1, 1), padding(1, 1))(3): ReLU(inplaceTrue)(4): MaxPool2d(kernel_size2, stride2, padding0, dilation1, ceil_modeFalse)(5): Conv2d(64, 128, kernel_size(3, 3), stride(1, 1), padding(1, 1))(6): ReLU(inplaceTrue)(7): Conv2d(128, 128, kernel_size(3, 3), stride(1, 1), padding(1, 1))(8): ReLU(inplaceTrue)(9): MaxPool2d(kernel_size2, stride2, padding0, dilation1, ceil_modeFalse)(10): Conv2d(128, 256, kernel_size(3, 3), stride(1, 1), padding(1, 1))(11): ReLU(inplaceTrue)(12): Conv2d(256, 256, kernel_size(3, 3), stride(1, 1), padding(1, 1))(13): ReLU(inplaceTrue)(14): Conv2d(256, 256, kernel_size(3, 3), stride(1, 1), padding(1, 1))(15): ReLU(inplaceTrue)(16): MaxPool2d(kernel_size2, stride2, padding0, dilation1, ceil_modeFalse)(17): Conv2d(256, 512, kernel_size(3, 3), stride(1, 1), padding(1, 1))(18): ReLU(inplaceTrue)(19): Conv2d(512, 512, kernel_size(3, 3), stride(1, 1), padding(1, 1))(20): ReLU(inplaceTrue)(21): Conv2d(512, 512, kernel_size(3, 3), stride(1, 1), padding(1, 1))(22): ReLU(inplaceTrue)(23): MaxPool2d(kernel_size2, stride2, padding0, dilation1, ceil_modeFalse)(24): Conv2d(512, 512, kernel_size(3, 3), stride(1, 1), padding(1, 1))(25): ReLU(inplaceTrue)(26): Conv2d(512, 512, kernel_size(3, 3), stride(1, 1), padding(1, 1))(27): ReLU(inplaceTrue)(28): Conv2d(512, 512, kernel_size(3, 3), stride(1, 1), padding(1, 1))(29): ReLU(inplaceTrue)(30): MaxPool2d(kernel_size2, stride2, padding0, dilation1, ceil_modeFalse))(avgpool): AdaptiveAvgPool2d(output_size(7, 7))(classifier): Sequential((0): Linear(in_features25088, out_features4096, biasTrue)(1): ReLU(inplaceTrue)(2): Dropout(p0.5, inplaceFalse)(3): Linear(in_features4096, out_features4096, biasTrue)(4): ReLU(inplaceTrue)(5): Dropout(p0.5, inplaceFalse)
# 最后线性层输出为1000vgg16也是一个分类模型能分出1000个类别(6): Linear(in_features4096, out_features1000, biasTrue))
)
CIFAR10 把数据分成了10类而 vgg16 模型把数据分成了 1000 类如何应用这个网络模型呢
方法1把最后线性层的 out_features 从1000改为10方法2在最后的线性层下面再加一层in_features为1000out_features为10
利用现有网络去改动它的结构避免写 vgg16。很多框架会把 vgg16 当做前置的网络结构提取一些特殊的特征再在后面加一些网络结构实现功能。
方法2添加 vgg16_true.classifier.add_module(add_linear,nn.Linear(1000,10))
print(vgg16_true) 方法1修改
vgg16_false.classifier[6] nn.Linear(4096,10)
print(vgg16_false)