今天读了一下 Towards Evaluating the Robustness of Neural Networks,这是关于对抗样本(Adversarial Example)的paper,主要贡献是提出了Carlini & Wagner Attack神经网络有目标攻击算法,打破了最近提出的神经网络防御性蒸馏(Defensive Distillation),证明防御性蒸馏不会显著提高神经网络的鲁棒性,论文的信息量还是比较大的。

可能需要阅读的论文以获取前置知识:

关于蒸馏网络:

[1] Do Deep Nets Really Need to be Deep?

[2] Distilling the Knowledge in a Neural Network

[3] Distillation as a Defense to Adversarial Perturbations against Deep Neural Networks

关于对抗样本:

[4] Intriguing properties of neural networks(L-BFGS Attack)

[5] Exploring the Space of Adversarial Images(FGSM)

[6] Towards Deep Learning Models Resistant to Adversarial Attacks(PGD, I-FGSM)

[7] The Limitations of Deep Learning in Adversarial Settings (JSMA)

[8] DeepFool: a simple and accurate method to fool deep neural networks(DeepFool)

关于论文源码:

carlini/nn_robust_attacks

阅读全文 »

这篇文章是我在网易云上学习吴恩达深度学习做的一些总结,我是先看了一遍视频才来做的总结,所以很多参考了黄广海博士的翻译和笔记,另外有的知识点与之前吴恩达机器学习上的有所重复,就记录得比较简单,可见这里,还有一篇笔记也我觉得也记得很好。

阅读全文 »

这篇文章是我在网易云上学习吴恩达机器学习做的一些总结,虽然之前有学习过,但是感觉还是没有很好地吸收总结。另外有的不知道怎么组织语言的就参考了黄广海博士的翻译和笔记。

阅读全文 »

这篇博文将基于AWS服务构建日志分析解决方案,对EKK架构进行实践,参考文档

Amazon Elasticsearch Service

Amazon Elasticsearch Service 是一项完全托管的服务,方便您部署、保护和运行大量 Elasticsearch 操作,且不用停机。该服务提供开源 Elasticsearch API、受托管的 Kibana 以及与 Logstash 和其他 AWS 服务的集成,支持您安全获取任何来源的数据,并开展实时搜索、分析和可视化。使用 Amazon Elasticsearch Service 时,您只需按实际用量付费,没有预付成本或使用要求。有了 Amazon Elasticsearch Service,您无需承担运营开销,便可获得所需的 ELK 堆栈

一个来自Eddie Xie关于Elasticsearch的系列教程:https://kalasearch.cn/blog/elasticsearch-tutorial/

Amazon Kinesis

Amazon Kinesis 可让您轻松收集、处理和分析实时流数据,以便您及时获得见解并对新信息快速做出响应。Amazon Kinesis 提供多种核心功能,可以经济高效地处理任意规模的流数据,同时具有很高的灵活性,让您可以选择最符合应用程序需求的工具。借助 Amazon Kinesis,您可以获取视频、音频、应用程序日志和网站点击流等实时数据,也可以获取用于机器学习、分析和其他应用程序的 IoT 遥测数据。借助 Amazon Kinesis,您可以即刻对收到的数据进行处理和分析并做出响应,无需等到收集完全部数据后才开始进行处理。

Kibana

Kibana 是一种开源数据可视化和挖掘工具,可以用于日志和时间序列分析、应用程序监控和运营智能使用案例。它提供了强大且易用的功能,例如直方图、线形图、饼图、热图和内置的地理空间支持。此外,它还提供了与 Elasticsearch 的紧密集成,后者是一款流行的分析和搜索引擎,这使得 Kibana 成为了可视化 Elasticsearch 中存储数据的默认之选。

阅读全文 »

文章概述

本来这篇文章写得是爬虫学习日志,但是后来发现前置工作也是虚拟环境的配置还是有待一提。日前在做cv的时候使用SIFT对图像的特征进行提取,当时没有手写SIFT函数,而是调用了opencv的一个函数,其中存在的一个问题是后来SIFT算法申请了专利,后续版本的opencv不再支持这个函数,于是当时搜索了很久找到支持该函数的旧版本,期间python版本还从3.7降到了3.68以支持这个函数的调用,而命令行输入python —version的时候仍然显示版本是3.7,这就显得库和包的版本控制比较混乱,然而当时我并没有意识到这个问题。后来电脑重装了一次,也是最近在学习爬虫的时候以及后来学习深度学习的时候我才开始重视python的包管理问题,目前看到的几种虚拟环境配置方式有:

  • virtualenv
  • conda env
  • docker

目前我已经尝试了virtualenv和conda env,docker还没有尝试过。感觉virtualenv和conda env两种使用上差不多,但是我选择了conda env,个人不使用virtualenv的原因在于:

  1. virtualenv似乎不支持jupyter notebook的集成
  2. conda env似乎比virtualenv多了一个生成配置文件并能根据配置文件创建相同环境的功能,这使得环境的在不同设备上的share更加地方便

但是最近在薅某IaaS提供商羊毛的时候,发现虽然有yml文件,但是将conda env从本地同步到远程仍然很麻烦,创建新的环境之后还要将该环境“注入”到jupyter notebook中,如果你没有某种快速部署的脚本的,这也是一个繁琐的步骤。

因此决定学习一下docker进一步对虚拟环境进行配置(还没学完)。

我学了一下docker,然后先用jupyter/tensorflow-notebook跑了一下,发现这种方式搭环境还是比较快的。然后我尝试了一下自己做一个docker jupyter notebook镜像用来做深度学习(因为我发现在自己的机器上写代码真的是心累,不禁拖慢的编码速度而且跑起来也很慢),我的思路是先pull一个ubuntu的镜像作为basic image,然后按照上面conda env的步骤创建虚拟环境,将kernel注入到jupyter notebook中,然后commit重新打包成新的镜像然后push到docker hub中。这样就可以在后续中pull下来试用啦。

emmmm,但是我感觉我实现的并不是很好,原因如下:

  1. 我理解这个images本质是一个ubuntu系统,run之后还需要进到里面启动jupyter notebook,过程感觉略有繁琐。
  2. 而对比jupyter/tensorflow-notebook其只需要run命令就可以,而不需要进到里面启动,但目前为止我没有搞懂这是怎么实现了。
  3. 做这个image的初衷是为了在远程服务器上使用自己习惯的环境,以及做开发环境的区分。但目前看来前者的目的貌似达到了,但是后者似乎可以通过run多个container来实现??比如我一个image包含ts+opencv和ts+panda(虽然没冲突但我举不出来例子),然后我可以通过run两个container(分别是ts+opencv的container和ts+panda的container)来实现开发环境区分的目的,这看来貌似我的做法有点多余?毕竟如果要配置新的环境又要进到容器进行配置,完了commit and push。
阅读全文 »

说说最近踩的坑,为了在windows的电脑下做并行程序设计作业埃拉托色尼素数筛选法,用的是MPI,然后发现这类库对于windows的用户非常不友好,比如说MPICH2后续已经不支持windows,OpenMPI貌似只支持linux,而微软维护的MS-MPI能够支持windows,但是我在使用clion(cmake)进行包引入的时候出了很多问题,可能的原因是windows下没有mpicc/mpicxx,可能的解决方案是使用微软自家的VS去做,但是我觉得VS太过臃肿而不想下载,最终我得出来的结论是:windows + clion + MPI 暂时无法实现,即使翻阅了很多网上的资料也没有响应的解决方案,无奈之下只能在远程的linux下编程,使用的是ubuntu 16.04这个系统,然后思路是因为要编程所以配置一个ubuntu GUI,然后装上lion,把之前写的代码从git下clone下来,然后由于我的服务器是在华为云上的一个7天体验卷,也就只有2核4G,所以我打算后续在工作室一台比较老的服务器上写代码,然后比较坑的是那个玩意儿没有公网IP,因此我想看看能否通过teamviewer来从远程连接,虽然感觉可能性不大hhh。

2019-05-19续——

后来我测试了一下teamviewer连接服务器,但是这个被归为了商业用途就是要收费的(就很烦),算了算了…只能老老实实用windows的远程连接8。后续在linux服务器上写完了几个优化之后(见后),在测试阶段发现优化后的时间反而边长了,虽然后来用了增加cache命中率来提升性能,但是我认为加速还是受到了干扰,于是只能去专业的实验室用里面的电脑搞事情,所以我又把windows上mpi的配置搞了一边,还生成了一下不同优化的exe,然后再拿回自己的电脑测试,现在想一想,之前无法在自己的电脑的windows上用clion编译可能是和cmake建立动态链接失败有关,但是自己对这方面不熟,网上资料不全,所以搞着搞着就放弃了。但是安装了mpi还是能够执行编译生成的exe文件滴。

阅读全文 »

安装

全局安装(不推荐)

1
npm install webpack webpack-cli -g

全局的话容易发生webpack3和webpack4的版本冲突

局部安装(推荐)

1
2
npm install webpack webpack-cli -D
# npm install webpack webpack-cli --save-dev

查看版本

1
npx webpack -v

查看包版本

1
npm info webpack
阅读全文 »