def forward(self, embeddings, return_v_adv=False):
def act(x):
return F.leaky_relu(x, negative_slope=0.2, inplace=True)
B, _ = embeddings.size()
x = act(self.fc1_bn(self.fc1(embeddings)))
x = add_white_noise(x, 0.005, self.training)
x = F.dropout(x, p=0.1, training=self.training)
x_v = self.fc_v(x)
x_v_expanded = x_v.expand(B, 9)
x_adv = self.fc_advantage(x)
x_adv_mean = x_adv.mean(dim=1)
x_adv_mean = x_adv_mean.expand(B, 9)
x_adv = x_adv - x_adv_mean
x = x_v_expanded + x_adv
if return_v_adv:
return x, (x_v, x_adv)
else:
return x
评论列表
文章目录