使神经网络更易于解释,用于研究和艺术

torch-dreams的Python项目详细描述


火炬之梦

使神经网络更易于解释,用于研究和艺术。在

Open In Colab

pip install torch-dreams 

目录

快速入门

Make sure you also check out the quick start colab notebook and the docs for more interesting examples.

^{pr2}$

可视化单个通道

这部分火炬梦的灵感来自Feature visualization by Olah, et al。我们基本上是对输入图像进行优化,以最大限度地激活神经网络中某一层的某个通道。在

首先,让我们选择要处理的层。随意玩玩其他图层。在

layers_to_use=[model.Mixed_6c.branch7x7_1.conv]

下一步是定义一个custom_func,它将允许use有选择地优化单个通道。在

defmy_custom_func(layer_outputs):loss=layer_outputs[0][7].mean()## 7th channel of first layer from layers_to_usereturnloss

其余部分实际上与快速入门片段非常相似:

config={"image_path":"noise.jpg","layers":layers_to_use,"octave_scale":1.1,"num_octaves":20,"iterations":100,"lr":0.04,"max_rotation":0.7,"custom_func":my_custom_func,}out=dreamy_boi.deep_dream(config)plt.imshow(out)plt.show()

如果事情按计划进行,你最终会得到这样的结果:


仔细观察

config中,我们可以定制我们希望优化发生的确切方式。下面是一个不使用渐变遮罩的示例:

config={"image_path":"your_image.jpg","layers":[model.Mixed_6c.branch1x1],"octave_scale":1.2,"num_octaves":10,"iterations":20,"lr":0.03,"custom_func":None,"max_rotation":0.5,"gradient_smoothing_coeff":0.1,"gradient_smoothing_kernel_size":3}
  • image_path:指定到输入图像的相对路径。在

  • layers:输出将被“存储”以供以后优化的层列表。例如,如果我们要使用2层:

    config["layers"]=[model.Mixed_6d.branch1x1,model.Mixed_5c]
  • octave_scale:在每一个倍频程后图像按比例放大的因子。在

  • num_octaves:为恢复原始大小而放大图像的次数。在

  • iterations:每倍频程的梯度上升步数。在

  • lr:在梯度上升的每个步骤中使用的学习速率。在

  • custom_func(可选):使用它来构建您自己的自定义优化函数,以便对单个频道/单元等进行优化

    例如,如果我们想同时优化第一层的第47通道和第二层的22通道

    defmy_custom_func(layer_outputs):loss=layer_outputs[0][47].mean()+layer_outputs[1][22].mean()returnlossconfig["custom_func"]=my_custom_func
  • max_rotation(可选):大写要应用于图像的最大旋转。在

  • gradient_smoothing_coeff(可选):更高->更强的模糊。在

  • gradient_smoothing_kernel_size:(可选)应用高斯模糊时要使用的内核大小。在

重要环节:

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaSwing:如何读取组件下面的图形信息?   JAVAutil。scanner Java scanner为什么跳过代码中的nextLine()?   html如何在jsp文件中使用内联java比较器?   编组时单个元素组的java JAXB元素包装器   java如何使SeleniumWebDriver动态选择客户端证书,而无需直观地检测弹出窗口   java定位服务。FusedLocationApi。getLastLocation(mGoogleApiClient)获取null   java如何快速创建指向Eclipse中元素的Javadoc链接?   如何使用Java语言填充MS Word模板?   java 安卓应用程序不显示来自服务器的值   java有没有办法解决这个问题:第45行第7列path$处的预期名称。客户端[0]。服务   java如何使用ASM仅从switch中删除break语句?   java LOOK else if语句:我把它放在哪里   无效的Java语句   java输出不应包含0值   java遇到意外文本时要抛出什么异常?   java如何将文本文件数组中的数字添加到2d int数组中?   java如何从列表中的对象访问属性?   对象的oop锁方法(Java)   java字符串连接concat()和+运算符的有效使用