VGG(
(features): Sequential(
(0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(1): ReLU(inplace=True)
(2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(3): ReLU(inplace=True)
(4): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
(5): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(6): ReLU(inplace=True)
(7): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(8): ReLU(inplace=True)
(9): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
(10): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(11): ReLU(inplace=True)
(12): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(13): ReLU(inplace=True)
(14): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(15): ReLU(inplace=True)
(16): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
(17): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(18): ReLU(inplace=True)
(19): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(20): ReLU(inplace=True)
(21): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(22): ReLU(inplace=True)
(23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
(24): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(25): ReLU(inplace=True)
(26): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(27): ReLU(inplace=True)
(28): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(29): ReLU(inplace=True)
(30): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
)
(avgpool): AdaptiveAvgPool2d(output_size=(7, 7))
(classifier): Sequential(
(0): Linear(in_features=25088, out_features=4096, bias=True)
(1): ReLU(inplace=True)
(2): Dropout(p=0.5, inplace=False)
(3): Linear(in_features=4096, out_features=4096, bias=True)
(4): ReLU(inplace=True)
(5): Dropout(p=0.5, inplace=False)
(6): Linear(in_features=4096, out_features=1000, bias=True)
(add_linear): Linear(in_features=1000, out_features=10, bias=True)
)
)
1、特征層(Features):
順序層(Sequential),其中包含一系列的卷積層、激活函數(shù)和最大池化層。
網(wǎng)絡的輸入是一個3通道(RGB)圖像。
第一個卷積層(Conv2d)具有64個濾波器,卷積核大小為3x3,步長為1x1,填充為1x1。
使用的激活函數(shù)是ReLU(修正線性單元)。
這種卷積層后跟ReLU激活的模式被重復多次。
每兩個卷積層之后,應用一個最大池化層(MaxPool2d),池化核大小為2x2,步長為2x2。
隨著網(wǎng)絡加深,濾波器的數(shù)量逐漸增加:64、128、256和512。文章來源:http://www.zghlxwxcb.cn/news/detail-469988.html
2、平均池化層(Avgpool):
AdaptiveAvgPool2d層執(zhí)行自適應平均池化。
它將輸入張量調(diào)整為固定大小的7x7,同時保持其空間維度。
3、分類器層(Classifier):
順序層,包含一系列全連接層(Linear)、激活函數(shù)(ReLU)和Dropout層。
輸入特征的形狀是25088,該值來自前面層的輸出。
第一個全連接層將輸入特征映射到4096維。
然后是ReLU激活和Dropout層,用于增強模型的泛化能力和減少過擬合。
第二個全連接層將輸入映射到4096維。
再次應用ReLU激活和Dropout層。
最后一個全連接層將輸入映射到1000維,對應于VGG模型最初設計用于ImageNet數(shù)據(jù)集上的1000個類別。
在模型的末尾,添加了一個額外的線性層(Linear),將1000維的輸出映射到10維,用于解決一個10類別的特定任務。文章來源地址http://www.zghlxwxcb.cn/news/detail-469988.html
到了這里,關于VGG神經(jīng)網(wǎng)絡模型的架構的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!