想把这个写成一个系列,“深度学习算法在写paper时的应用过程——从数据到对比实验结果”,但是填坑太累,先分开写吧,最后如果能完成就整理成系列。 最近有篇关于轴承故障诊断的文章要用到轴承数据,就找到了西储大学这个轴承的公开数据集,关于数据集本身我就不做过多的描述了,主页说的已经很清楚。 数据获取 但是问题来了,这个数据集没有提供压缩文件下载!而是用表格的形式列出的很多数据文件的集合,而且还是.mat文件,也就是MATLAB文件。更不方便的一点是文件名都是数字,果手动下载每个文件,需要1.建立不同采样频率(12k&48k)的文件夹。2.分别下载每个分类下的每个文件。3.对每个文件重新命名。 这可不是个轻松加愉快的事情,本着“需要手工机械重复超过3分钟的工作应该尝试使用自动化脚本实现”这一不知道哪里看来的感觉很有道理的信念,就开始考虑如何自动化实现了。其实最开始思路很简单,程序需要完成至少以下内容: 1.爬取网页。 2.分析网页,获得数据的大分类(Normal&12k&48k)category,每个单个文件在表格中的名称&url(例如IR007_0以及它的地址)filename & url。 3.根据2获取的category建立文件夹,通过url下载,并重命名为filename。 整个脚本实现起来应该不难,第1,2部分只是一个简单的获取网页+内容解析,最具有挑战性的地方在于第3步,因为可能要用多线程下载。灵机一动,多线程下载不是有工具嘛,wget,aria2,不能放着这么好用的工具不用。尤其是aria2,多线程下载就是一个参数的事。因此,第3步改为: 3.根据2获取的category建立文件夹,并将url与filename保存位aria2下载列表格式。 这样,就可以直接用shell脚本来遍历多线程下载了。 分析就到这里,程序也很清晰了,源代码在这里。 其中有一个Python文件和两个shell script,Python文件是用来获取filename,url,等信息并生成aria2下载列表url.txt的,shell script是用来自动化遍历子文件夹下载url.txt的。其中url.txt的格式参见aria2的官方文档引用如下: http://server/file.iso http://mirror/file.iso dir=/iso_images out=file.img http://foo/bar

Traditional CS: CS110: Principles of Computer Systems CS161: Design and Analysis of Algorithms CS106A: Programming Methodology CS97SI: Introduction to Programming Contests CS143: Compilers AI/ML: CS221: Artificial Intelligence: Principles and Techniques […]

1w标准开局,自己摸索了一套适合打电脑的苏联套路,和人对战应该不太好用。因为小电以后直接双矿导致重工慢出,节奏太慢前期容易被玩家骚扰。不过由于电脑前期比较神奇,只骚扰不进攻,架个机枪应该可以搞定。 兵营 双熊 双工程师(根据地图中立建筑资源调整,不过造太多容易卡钱) 三动员兵+三防空兵 小电 双矿 大电 起大电同时起机枪一到两个 重工 蜘蛛x2,去对面探路+扰矿 勘探车x2,起三矿和四矿 镰刀x2,铁锤x2,牛蛙x2(此时可能会卡钱,则根据战况减少镰刀或铁锤,比如前期对面步兵较多且无空军,则铁锤-1牛蛙-2镰刀+1,以此类推) 机场 双刃x3,米格x2 此时进入中后期,视情况出海军 视资金与电力出高科+超武 后期随机应变

基础知识 线性代数 矩阵理论 概率论 随机过程 图论 数值分析 最优化理论 机器学习 数据挖掘 平台 Linux  语言 Python Linux shell 基础库 numpy pandas sklearn matplotlib or seaborn 框架 TensorFlow Pytorch Keras 常用模型 CNN RNN(LSTM) GAN 常用架构(包括transfer […]

突然想起来本科的日子,参加几个社团,没事打打球,在工作室,午后慵懒地靠椅上(中间还垫了个睡枕:-)),喝着咖啡悠闲地写自己想要构建的项目代码,总有学不完的新知识,晚上翻窗户出去吃夜宵,聊天……..真是充实又幸福。 现在每天赶文章,想idea,文献综述,写为了完成任务的代码,做ppt,汇报,教研室-食堂-宿舍循环,接触到的人,圈子不超过20,充实是充实了,但是却没了幸福感,难道以后也是这样吗?果然都说本科是最快乐的时光,一点不假。 Good old days.

最近翻译了两篇欢迎词,发现这个东西和英文学术写作/翻译差别挺大的,有很多正式场合专用的称呼/套话,查了挺多资料,记录于此。 首先是称呼,这个一般是开头第一句话: 理事长:Managing Director; Chairman 副理事长:Deputy Managing Director 常务理事:Executive Director 理事:Director 常务监事:Executive Supervisor 监事:Supervisor 秘书长:Secretary-General; Chief Secretary 会务顾问:Advisor; Consultant 董事长:Chairman 总经理:President; General Manager 副总经理:Vice President; Vice GM 经理:Manager 副理:Deputy Manager; […]

VGG pretrained模型地址: http://www.vlfeat.org/matconvnet/pretrained/ 下载地址: http://www.vlfeat.org/matconvnet/models/imagenet-vgg-verydeep-19.mat 不过我用的这个beta版本的不太一样,地址 http://www.vlfeat.org/matconvnet/models/beta16/imagenet-vgg-verydeep-19.mat 但是分析过程是一样的 今天在玩Stanford CS20SI公开课里的一个神经网络style_transfer小模型的时候,用到了vgg pretrained模型,然而,代码里获取weight和bias是这么写的: W = vgg_layers[0][layer][0][0][2][0][0] b = vgg_layers[0][layer][0][0][2][0][1] 摔!这也没注释,完全看不懂啊! 虽然可以查到vgg的模型信息(下面有个layer configuration的SVG图),可是对应不上这些索引啊! 于是把模型下载下来,在ipython里一步一步解析: 首先,导入scipy.io包: import scipy.io 然后,用loadmat载入模型(载入matlab文件格式的方法): vgg = scipy.io.loadmat(‘imagenet-vgg-verydeep-19.mat’) 接下来就是探索格式了: 首先,看一下导入后的模型类型: […]

随着TensorFlow学习的深入,有许多细节不得不注意,Stanford的tensorflow公开课就讲解了很多细节,记录于此,以供参考。 tf.constant()和tf.Variable(),为什么constant是小写,Variable是大写?因为constant是个op(操作节点),而Variable是个class(类)。 Variable的initialize其实就是assign初始值,所以,当定义一个Variable时,如果紧跟了一个assign操作,其实是不用initialize的,例如W = tf.Variable(10), assign_op = W.assign(100), 我们可以直接sess.run(assign_op)而不用sess.run(tf.global_variables_initializer())。详见源码,其中有一句是:self._initializer_op = state_ops.assign(self._variable, self._initial_value, validate_shape=validate_shape).op。注意,类似tf.Variable.assign_add(), tf.Variable.assign_sub()之类的方法仍然要求对变量进行initialize,因为这些操作依赖Variable的初始值。 constant是定义在graph(图)中的,而Variable是和Session绑定的。也就是说,在tensorboard中可视化graph时,可以看到constant但是看不到variable,且不同的session可以维护一个variable的不同值,例如sess1 = tf.Session(), sess2 = tf.Session(), sess1.run(W.assign(10)), sess2.run(W.assign(20)) 用另一个Variable初始化一个Variable时,要注意使用initialized_value()方法,例如W = tf.Variable(tf.truncated_normal([10,10])), U = tf.Variable(W2)是错误的,因为U使用W去初始化,在U初始化的时候,W很可能还没有初始化(TensorFlow的分布式,并行运行的特点所导致),因此,正确写法是W = tf.Variable(tf.truncated_normal([10,10])), […]

不得不说,archlinux真的是开发人员友好的…当然前提是能够接受足够新的软件环境(gcc都7.1.1了…) 安装Nvidia驱动,cuda,cudnn,配置环境变量一条命令搞定: # pacman -S nvidia cuda cudnn 对,你没有看错,就是一条命令,而且以后升级也是,交给系统,完全无忧。 如果不从源码编译的话,直接pip install tensorflow-gpu就好了,That‘s it! 如果从源码编译,请安装bazel,也是一条命令: # pacman -S bazel 然后参照官方教程编译安装即可。 比Ubuntu简单几个数量级:)

如果用sudo执行python命令的话,会发现import os; os.getenv(“PATH”)得到的变量和普通权限得到的不一致,即使是sudo加上-E参数也没有用。 这是sudoers的默认行为导致的,解决方案: sudo visudo Defaults env_reset 改为Defaults !env_reset,注意,加了!号 同时注释掉 Defaults secure_path 改完记得注销一下。 不需要以sudo执行python的时候记得改回来,防止出现权限安全问题。 这个奇葩的问题Google居然搜不到,看来是个神坑,分析过程如下: 既然问题的根源是sudo -E python都无法继承当前的环境变量,那么首先man sudo 搜索-E参数,发现是这么写的: -E, –preserve-env Indicates to the security policy that the […]