上节课我们用 Tensorflow 搭建了一个简单的 CNN 模型,这节课我们看看除了 MNIST 之外我们还能做点什么
更新历史
- 2019.08.14: 完成初稿
TFRecord
啥是 TFRecord?
- Tensorflow 推荐的存储格式
- 二进制存储,实际上是序列化的
tf.train.Example
protobuf 对象
为啥要用二进制?
- 更好利用磁盘空间
- 方便移动
- 可以处理不同类型的数据(比如,可以把图片和标签放到一起)
如何把数据转换成 TFRecord 格式呢,具体参考 18_basic_tfrecord.py
Style Transfer
数学不复杂,但是实现起来需要一些技巧。风格迁移的核心问题就是找到一副满足如下条件的图片:
- 内容与 content image 最接近
- 风格与 style image 最接近
如何做到呢?我们关注下面两个 Loss:
- Content Loss
- Style Loss
这里我们要先介绍一下 Feature map 这个概念,一个卷积神经网络有许多层,每一层都会提取特定的 feature,我们把特征可视化后就会发现:
- lower layers 提取的是 content features
- higher layers 提取的是 style features
实际训练时候的技巧在于(不太好翻译,直接上英文):
- Train input instead of weights
- Multiple tensors share the same variable to avoid assembling identical subgraphs
- Use pre-trained weights(from VGG-19)
相关代码
因为训练要太长时间,我也没有 GPU,所以就只贴出来具体的代码,感兴趣的同学可以尝试下