def optimize_rmsprop(self, init_img, lr=0.1, alpha=0.95, momentum=0.9, eps=1e-4,
iterations=2000, save=50, filename='iter', str_contrast=False):
chainer_rms = optimizers.RMSpropGraves(lr=lr, alpha=alpha, momentum=momentum, eps=eps)
state = {'n': xp.zeros_like(init_img.data), 'g': xp.zeros_like(init_img.data),
'delta': xp.zeros_like(init_img.data)}
out_img = Variable(xp.zeros_like(init_img.data), volatile=True)
time_start = time.time()
for epoch in range(iterations):
loss = self.loss_total(init_img)
loss.backward()
loss.unchain_backward()
# normalize gradient
grad_l1_norm = xp.sum(xp.absolute(init_img.grad * init_img.grad))
init_img.grad /= grad_l1_norm
if gpu_flag:
chainer_rms.update_one_gpu(init_img, state)
else:
chainer_rms.update_one_cpu(init_img, state)
init_img.zerograd()
# save image every 'save' iteration
if save != 0 and (epoch + 1) % save == 0:
if self.preserve_color:
init_img_lum = separate_lum_chr(init_img)[0]
if gpu_flag:
init_img_lum.to_gpu()
out_img.copydata(init_img_lum + self.content_img_chr)
else:
out_img.copydata(init_img)
save_image(out_img, filename + '_' + str(epoch + 1) + '.png', contrast=str_contrast)
print("Image Saved at Iteration %.0f, Time Used: %.4f, Total Loss: %.4f" %
((epoch + 1), (time.time() - time_start), loss.data))
# rescale an array to [0, 255]
评论列表
文章目录