def forward(self, x):
nBatch = x.size(0)
# FC-ReLU-QP-FC-Softmax
x = x.view(nBatch, -1)
x = F.relu(self.fc1(x))
Q = self.Q.unsqueeze(0).expand(nBatch, self.Q.size(0), self.Q.size(1))
p = -x.view(nBatch,-1)
G = self.G.unsqueeze(0).expand(nBatch, self.G.size(0), self.G.size(1))
h = self.h.unsqueeze(0).expand(nBatch, self.h.size(0))
A = self.A.unsqueeze(0).expand(nBatch, self.A.size(0), self.A.size(1))
b = self.b.unsqueeze(0).expand(nBatch, self.b.size(0))
x = QPFunction(verbose=False)(Q, p.double(), G, h, A, b).float()
x = self.fc2(x)
return F.log_softmax(x)
评论列表
文章目录