Pytorch验证精度不会提高,而训练精度会提高

时间:2020-07-05 09:13:32

标签: neural-network pytorch

我使用了现有模型(vgg-16),并训练了模型的最后几层。]

age_list = ['(0, 3)', '(4, 7)', '(8, 14)', '(15, 24)', '(25, 37)', '(38, 47)', '(48, 59)', '(60, 100)']
net = torch.hub.load('pytorch/vision:v0.6.0', 'vgg16_bn', pretrained=True)
data_dir=""
model_name="vgg"
num_classes=len(age_list)
feature_extract=True




def set_parameter_requires_grad(model, feature_extracting):
    if feature_extracting:
        for param in model.parameters():
            param.requires_grad = False
def initialize_model(model_name, num_classes, feature_extract, use_pretrained=True):
    # Initialize these variables which will be set in this if statement. Each of these
    #   variables is model specific.
    model_ft = None
    input_size = 0
    model_ft = net
    set_parameter_requires_grad(model_ft, feature_extract)
    num_ftrs = model_ft.classifier[6].in_features
    model_ft.classifier = nn.Sequential(
            nn.Linear(25088, 4096,bias=True),                       
            nn.ReLU(inplace=True),
            nn.Dropout(p=0.5,inplace=False),                                   
            nn.Linear(4096,4096,bias=True),
            nn.ReLU(inplace=True) , 
            nn.Dropout(p=0.5,inplace=False), 
            nn.Linear(4096,8,bias=True),                         
                                          
        )
    input_size = 224
    return model_ft, input_size

我的损失函数和优化器

    criterion =nn.CrossEntropyLoss()
    optimizer = optim.Adam(model_ft.parameters(), lr=0.0001)

我有2个面部数据集,一个用于训练(9781张图像),一个用于验证(40508张图像)。 数据集种类繁多,包含所有年龄和性别。

培训结束时,这是最好的模型:

    Best val Acc: 0.331070

这些图显示了每个时期的准确性和损失:

enter image description here

enter image description here

我想知道在哪里可以改进我的模型以获得更好的结果。

非常感谢。

0 个答案:

没有答案