Я написал модель PyTorch примерно следующим образом:
import torch.nn as nn
class Model(nn.Module):
def __init__(self):
super(Model, self).__init__()
self.layer1 = nn.Sequential(nn.Linear(64 * 64, 16), nn.LeakyReLU(0.2))
self.layer2 = nn.Sequential(nn.Linear(16, 32), nn.LeakyReLU(0.2))
self.layer3 = nn.Sequential(nn.Linear(32, 64), nn.LeakyReLU(0.2))
self.layer4 = nn.Sequential(nn.Linear(64, 15), nn.Tanh())
def forward(self, x):
return (self.layer4(self.layer3(self.layer2(self.layer1(x)))) < 0).float()
Обратите внимание, что я хочу сделать: я хочу, чтобы forward
возвращал тензор 0 и 1. Однако, это не тренируется, вероятно, потому, что производная неравенства равна нулю.
Как я могу сделать модель, подобную этой, например, такой серии, если я хочу сделать сегментацию изображения?