我使用了现有模型(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
这些图显示了每个时期的准确性和损失:
我想知道在哪里可以改进我的模型以获得更好的结果。
非常感谢。