之前在学习cuda和使用opencv来加速图像处理,同时由于用惯了jetbrain系列,所以不想用vs来写代码,于是在配环境的时候看了很多网上的教程踩了很多坑,大概弄了3天才弄好,不过最近又手贱重装了cuda,所以之前编译的包不能用了,重新配置的时候感觉又忘了很多东西,于是决定写一篇博客来记录下之前操作,可能不是很全,重装电脑的时候再补充。
leetcode的奇怪操作
如何优雅地撰写中文(毕业)论文——word使用技巧
本人在写毕设论文的时候踩了很多坑,让我重新学习了了如何高效使用word进行编辑。当然下面的顺序并不是依照我踩坑的顺序续写的,而是我写完论文之后进行了总结:如果重头开始写论文应该怎么做才是高效且容易管理的,仅记录一些能够免去搬砖的使用技巧,个人感觉套模板是没用滴,学之以渔才是正确路线。注:用到的word是window10的版本。
【论文笔记】 Towards Evaluating the Robustness of Neural Networks
今天读了一下 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)
关于论文源码:
Ensemble Learning
Adaboost、GBDT、xgboost的个人理解
Recognize Deeplearning.ai
Re-recognizing Machine Learning
这篇文章是我在网易云上学习吴恩达机器学习做的一些总结,虽然之前有学习过,但是感觉还是没有很好地吸收总结。另外有的不知道怎么组织语言的就参考了黄广海博士的翻译和笔记。
AWS EKK架构实践——日志收集分析解决方案
这篇博文将基于AWS服务构建日志分析解决方案,对EKK架构进行实践,参考文档。
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,您可以获取视频、音频、应用程序日志和网站点击流等实时数据,也可以获取用于机器学习、分析和其他应用程序的 IoT 遥测数据。借助 Amazon Kinesis,您可以即刻对收到的数据进行处理和分析并做出响应,无需等到收集完全部数据后才开始进行处理。
Kibana 是一种开源数据可视化和挖掘工具,可以用于日志和时间序列分析、应用程序监控和运营智能使用案例。它提供了强大且易用的功能,例如直方图、线形图、饼图、热图和内置的地理空间支持。此外,它还提供了与 Elasticsearch 的紧密集成,后者是一款流行的分析和搜索引擎,这使得 Kibana 成为了可视化 Elasticsearch 中存储数据的默认之选。
docker学习日志
从python开始的虚拟环境配置日志
文章概述
本来这篇文章写得是爬虫学习日志,但是后来发现前置工作也是虚拟环境的配置还是有待一提。日前在做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的原因在于:
- virtualenv似乎不支持jupyter notebook的集成
- 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,但是我感觉我实现的并不是很好,原因如下:
- 我理解这个images本质是一个ubuntu系统,run之后还需要进到里面启动jupyter notebook,过程感觉略有繁琐。
- 而对比jupyter/tensorflow-notebook其只需要run命令就可以,而不需要进到里面启动,但目前为止我没有搞懂这是怎么实现了。
- 做这个image的初衷是为了在远程服务器上使用自己习惯的环境,以及做开发环境的区分。但目前看来前者的目的貌似达到了,但是后者似乎可以通过run多个container来实现??比如我一个image包含ts+opencv和ts+panda(虽然没冲突但我举不出来例子),然后我可以通过run两个container(分别是ts+opencv的container和ts+panda的container)来实现开发环境区分的目的,这看来貌似我的做法有点多余?毕竟如果要配置新的环境又要进到容器进行配置,完了commit and push。