Я использую слабо контролируемое обучение сегментации, но оно не работает.
class SegmentaionConvolutions(nn.Module):
def __init__(self):
super(SegmentaionConvolutions,self).__init__()
self.conv_seg = nn.Conv2d(512,2,kernel_size=1)
self.softmax = nn.Softmax(dim=2)
self.pool= nn.MaxPool2d(kernel_size=2, stride=2, ceil_mode=True) # retains size because stride is 1 (and padding)
self.init_conv2d()
def init_conv2d(self):
"""
Initialize convolution parameters.
"""
for c in self.children():
if isinstance(c, nn.Conv2d):
nn.init.xavier_uniform_(c.weight)
nn.init.constant_(c.bias, 0.)
def forward(self,conv5_feats):
pooled_feats = self.pool(self.pool(conv5_feats))
out = self.conv_seg(pooled_feats)
return out
Это код, который я добавляю в SSD.
Его ввод - это особенности SSD после пяти слоев.
И я объединил функции ввода, 10 * 8, потому что плохо тренировать не очень хорошо.
Кроме того, выход этого класса оценивается потерей кроссентропии.
Как я должен сделать для улучшения этой модели.
Пожалуйста, посоветуйте мне.