本人正在训练一个回归模型,标签的取值是50~100,主要是75,有部分是50,很少有大于75的,但是训练过程中的输出基本都集中在75附近,训练集有3000+图片验证集有1000+图片,训练集和标签的样子如下:
下图是一个batch中的标签和训练输出,可以看到图像的标签和模型的输出差别很大,
我用的超参数是:
optimizer = Adam,
损失函数 = MSE,
batchsize = 32,
lr = 0.001
网络模型如下:
def get_model():
model = nn.Sequential(
nn.Conv2d(3,24,5,stride=2),
nn.ReLU(),
nn.MaxPool2d(2, stride=1),
nn.Conv2d(24,36,5,stride=2),
nn.ReLU(),
nn.MaxPool2d(2, stride=1),
nn.Conv2d(36,48,5,stride=2),
nn.ReLU(),
nn.MaxPool2d(2, stride=1),
nn.Conv2d(48,64,3,stride=1),
nn.ReLU(),
nn.MaxPool2d(2, stride=1),
nn.Dropout2d(p=0.2),
nn.Conv2d(64,64,3,stride=1),
nn.ReLU(),
nn.Flatten(),
nn.Dropout2d(p=0.2),
nn.Linear(224000,100),
nn.ReLU(),
nn.Linear(100,50),
nn.ReLU(),
nn.Linear(50,10),
nn.ReLU(),
nn.Linear(10,1),
)
return model
model = get_model()
请问有明白的指导一下吗?感激不尽!