简介

本文介绍为什么代码能够实现风格迁移的功能,重点在优化对象.

地址

github地址:
https://github.com/tensorflow/models/blob/master/research/nst_blogpost/4_Neural_Style_Transfer_with_Eager_Execution.ipynb

我的重点

  • tensorflow中,怎么定制自己的求导函数,而不是使用优化器的minimize
  • tf.train.Optimizer.minimize的minimize包含了什么
  • opt.compute_gradients(loss, list_of_variables])
  • opt.apply_gradients(grads_and_vars, global_step=global_step,
    name=name)

解析

  • 由于tf.train.Optimizer.minimize会自动求导并将导数*学习率应用到网络的所有权重上
    这与A Neural Algorithm of Artistic Style的目的不合
    因此作者不使用minimize函数,而是自己求导数,并且自己将导数只应用到自己想要的地方,也就是最终的生成图
  • 由于 minimize其实包含了compute_gradients(求结果相对于某数的导数)与apply_gradients(将导数应用到某数上),
    因此只需要更改这两个函数即可.
  • 作者首先计算loss函数,也就是 α∗Lcontent+β∗Lstyle\alpha*L_{content}+\beta*L_{style}α∗Lcontent​+β∗Lstyle​.
    然后使用tf.gradient(total_loss, cfg['init_image'])计算loss对于初始化图像的导数,
    最后将导数以及学习率应用到初始化的图像上,用来不断改变初始化的图像,使其更加接近目标
    使用的函数为opt.apply_gradients([(grads, init_image)]),将导数应用到初始化图像上.
  • 计算梯度使用 tf.gradient函数
def compute_grads(cfg):with tf.GradientTape() as tape: all_loss = compute_loss(**cfg)# Compute gradients wrt input imagetotal_loss = all_loss[0]return tape.gradient(total_loss, cfg['init_image']), all_loss
  • 应用梯度使用opt.apply_gradients函数
opt.apply_gradients([(grads, init_image)])
clipped = tf.clip_by_value(init_image, min_vals, max_vals)
init_image.assign(clipped)

拓展

  • tf.gradients(loss, tf.variables)函数与computer_gradients(loss, val_list)函数相似,只是后者会返回这个时候被求导数的那个变量此时的值.
  • 例子
import tensorflow as tf
with tf.Graph().as_default():x = tf.Variable(initial_value=3., dtype='float32')w = tf.Variable(initial_value=4., dtype='float32')y = w*xgrads = tf.gradients(y, [w])opt = tf.train.GradientDescentOptimizer(0.1)grads_vals = opt.compute_gradients(y, [w])sess=tf.Session()sess.run(tf.global_variables_initializer())print(sess.run(grads))print(sess.run(grads_vals))
  • 结果为
>>    [3.0][(3.0, 4.0)]

感谢

https://www.cnblogs.com/marsggbo/p/10056057.html

A Neural Algorithm of Artistic Style : Neural Style Transfer with Eager Executon相关推荐

  1. A Neural Algorithm of Artistic Style

    油画风格(Neural style) 参考文献:< A Neural Algorithm of Artistic Style>

  2. NS之VGG(Keras):基于Keras的VGG16实现之《复仇者联盟3》灭霸图像风格迁移设计(A Neural Algorithm of Artistic Style)

    NS之VGG(Keras):基于Keras的VGG16实现之<复仇者联盟3>灭霸图像风格迁移设计(A Neural Algorithm of Artistic Style) 导读 通过代码 ...

  3. 【每个人都是梵高】A Neural Algorithm of Artistic Style

    文章地址:A Neural Algorithm of Artistic Style 代码:https://github.com/jcjohnson/neural-style 这篇文章我觉得可以起个浪漫 ...

  4. 艺术风格转换之《A Neural Algorithm of Artistic Style》

    源码地址:https://github.com/fzliu/style-transfer scipy.optimize.minimize的使用 scipy.optimize.minimize(fun, ...

  5. 计算机也能成为艺术家?(基于论文A Neural Algorithm of Artistic Style的图像风格迁移)

    文章目录 引言 可解释性 一种途径:特征可视化 特征和风格,两者或许是一种东西 图像纹理生成 格拉姆矩阵 纹理生成网络 纹理损失函数 从纹理合成到风格迁移 内容损失函数 总损失函数 Torch代码实战 ...

  6. 【转】模仿绘画风格的算法:A Neural Algorithm of Artistic Style

    http://blog.csdn.net/bat67/article/details/52049983 有代码,论文方面说的不多,有图,很有趣.等有时间看看这篇论文和代码,自己实现下.

  7. 【A Neural Algorithm of Artistic Style】 Pics

    图中是我市的标志

  8. [TOG2019]Deferred Neural Rendering:Image Synthesis using Neural Textures

    标题:Deferred neural rendering: Image synthesis using neural textures 链接:Deferred neural rendering: im ...

  9. Convolutional neural networks for artistic style transfer

    https://harishnarayanan.org/writing/artistic-style-transfer/ 转载于:https://www.cnblogs.com/guochen/p/6 ...

  10. style=@android:style/buttonbar,Setting style=?android:attr/buttonBarStyle to parent layout and s...

    I followed Android recommendation and set style="?android:attr/buttonBarStyle" to parent l ...

最新文章

  1. 机器学习开源项目Top10
  2. windows pxe 安装linux,菜鸟学Linux 第103篇笔记 pxe自动化安装linux
  3. 埃森哲报告:2017年数字化浪潮下的医疗行业五大趋势
  4. 一个封装的使用Apache HttpClient进行Http请求(GET、POST、PUT等)的类。
  5. Linux——进程控制(总结)
  6. XML的序列化和反序列化 详细介绍
  7. 计算机系统通过执行通道程序完成数据,批量数据传送
  8. linux中/etc/passwd文件与/etc/shadow文件解析
  9. 个人用户不得开设服务器对外提供信息服务,北京大学网络安全知识温馨提示
  10. [恢]hdu 1040
  11. 360浏览器打不开html5文件,电脑中360安全浏览器无法打开的解决方法
  12. linux-uos输入法丢失解决办法
  13. web前端 网页加载 性能优化大全
  14. 小米13,红米K6,vivo S16,一加11,IQOO11安装谷歌Play商店,安装框架服务谷歌Google
  15. 【Unity】关于U3d与bip骨骼适配
  16. MAC版Pycharm使用技巧
  17. 员工管理系统(完整版)
  18. MFC CList使用
  19. ios 运行 release 版本
  20. TAPA认证辅导,TAPA全球委员会正式发布了《运输供应商最低安全要求》

热门文章

  1. Android人脸支付功能,终于来了,华为Mate20 Pro微信人脸支付功能已上线
  2. HDAO 全新项目落地,带动区块链新一轮牛市
  3. 计算机管理工具怎么设置,电脑音频管理器怎么设置,教你电脑音频管理器怎么设置...
  4. DPPM(动态电源路径管理)与VINDPM(输入电压动态电源管理)
  5. 干细胞体外培养最新技术进展(2021年9月)
  6. win10怎么设置锁定计算机,win10电脑自动锁屏怎么设置_让win10电脑自动锁屏的设置方法...
  7. pr视频两边模糊_Premiere视频教程 在使用Premiere中常见3种模糊效果的制作方法
  8. Bug heroes虫虫英雄 超详细翻译+基本攻略
  9. TCP/IP之传输层协议详解
  10. 打造史上最容易使用的Tab指示符——Indicator