t = adain(content_feat, style_feat4) t = alpha * t + (1 - alpha) * content_feat g_t = decoder(t) g_t_feats1, g_t_feats2, g_t_feats3, g_t_feats4 = vgg(g_t) loss_content = F.mean_squared_error(g_t_feats4, t) loss_style = style_loss(style_feat1, g_t_feats1) loss_style += style_loss(style_feat2, g_t_feats2) loss_style += style_loss(style_feat3, g_t_feats3) loss_style += style_loss(style_feat4, g_t_feats4) loss = content_weight * loss_content + style_weight * loss_style decoder.cleargrads() vgg.cleargrads() loss.backward() loss.unchain_backward() dec_opt.update() vgg_opt.update() sum_loss += loss.data.get() if epoch % interval == 0 and batch == 0: serializers.save_npz("decoder.model", decoder) with chainer.using_config("train", False): style_feat1, style_feat2, style_feat3, style_feat4 = vgg( style_test)