• 神经网络的可视化与理解


    训练技巧
    1.首先用小批量数据,查看是否代码有问题,理论上模型应该能将损失降到0左右,准确率为1.
    2.使用较小的学习率比如1e-6,观察损失值的变化,如果损失不怎么动就是学习率太小了,增大学习率。

    一般对于损失的计算来说:像位置坐标这种是连续值变化的东西,倾向于回归损失如L1 或L2损失
    其他的比如score得分:会用交叉熵损失或softmax等

    卷积过程的可视化:(目的,理解神经网络每一层在干什么)
    可视化的是每层的卷积核(卷积核类似模板匹配的模板,只有与卷积核类似的形态才会得到最大的激活)
    可以理解成卷积核到底在找什么样的东西。

    可视化1

    比如minit数据集经过alex-net的全连接层输出的4096维特征进行降维(PCA/t-SNE)嵌入,得到二维特征表示(x,y),降维后你会发现,相同的类别的点离的很近,本质上就是做了个分类过程。

    可视化2:

    选择某个layer及通道,运行图片前馈,记录下特征图的值,针对特征图上被激活的区域,可视化所有在这个channel被激活的位置对应的原始图像图块

    可视化3:

    遮挡排除法
    每次遮挡(mask)一个位置之后将图像馈入分类器,得到正确分类的概率,那么当我们在整张图像上所有位置都滑动一次mask遮挡然后分类后,就可以得到一张关于每个mask位置的概率的热图。
    反映了到底哪个部位的特征对于分类是至关重要的。

    可视化4:(原理同3)

    显著图
    计算类别得分对于图像中每个像素的梯度:即如果梯度小,则此像素点对于最终的分类得分影响不明显。梯度越大,说明对此像素点加入扰动会显著影响最终的分类效果。

    一个很有意思的现象:(我们原以为要愚弄分类器,需要做给大象加个考拉熊的耳朵这种类似的操作,但是事实不是这样)
    当我们将一个为大象类别的图像,计算最大化类别得分为考拉熊时 得分对于像素的梯度,发现明显变量的区域并不是考拉熊的样子,而是很大一片随机噪点,为什么呢???

    结果:只要对原始图片的一些像素点做扰动就可以使最终的分类非常confirmly的发生错误!

    *Deepdream项目

    特征反演(feature inversion):

    发现底层特征图是几乎可以完全反演得到输入图像的,而高层的特征图反演后得到的图像的细节颜色等会丢失无法恢复,因为底层的特征还没有被高度抽象(丢失信息)

    神经纹理合成(neural texture synthesis)与格莱姆矩阵

    风格迁移

    结合了纹理合成与特征反演

    风格图像的分辨率会影响最终的生成的结果图的类型

    还可以多张风格图同时对一张内容图进行风格迁移!

    fast style transfer

  • 相关阅读:
    Java实现生产者消费者模式
    LRU结构(采用hashmap + 双向链表实现)
    自定义优先级队列PriorityQueue
    KdApiSearchDemo
    MongoDBHelper
    WebApiInvoker
    轨迹
    SignAttribute
    web api 压缩
    web api 缓存类
  • 原文地址:https://www.cnblogs.com/Henry-ZHAO/p/13997686.html
Copyright © 2020-2023  润新知