CS224w HomeWork 2
CS224w HomeWork 2本文旨在记录CS224w Machine Learning With Graphs 2019完成作业中遇到的问题和作业的结果。
我的github仓库 LINK。
本部分共包含:
Node Classication: correlation with Collective Classification and message passing
Node Embeddings with TransE: correlation with Graph Representation Learning
Part 1 Node ClassificationNode Classication主要是使用Collective Classification的方法,其主要流程和组成部分如下图所示:
其中approximate inference的方法主要为(这三者sort by how advanced these methods are):
Relational Classification
Iterative Classification
Belief Cla ...
Embedding Literature Review
Embeddings主要思路分类:
NLP类方法 使用LSTM等对时序数据做表示
Graph Embedding 对图做嵌入(引入图的原因之一是:用图可以表示复杂关系的长时间时间序列)
类似CNN的方法也可以看为Embedding
对比学习,学到更好的表示 or Embedding
知乎LINKS
Embedding的原因 https://zhuanlan.zhihu.com/p/164502624
Embedding的简单发展史(主要为Word2vec -> Item2Vec)https://zhuanlan.zhihu.com/p/164502624
万物皆可Embedding https://zhuanlan.zhihu.com/p/109935332
Embedding在深度学习中的3大方向 https://zhuanlan.zhihu.com/p/67218758
Video:
Pre-trained Models for Natural Language Processing: A Survey LINK
自然语言处理中的表示学习 LINK
Resour ...
CS224w HomeWork 1
CS224w HomeWork 1本文旨在记录CS224w Machine Learning With Graphs 2019完成作业中遇到的问题和作业的结果。
我的github仓库 LINK。
Part 1 Network Characteristics课程中反复强调的一个非常重要的观点就是:想要比较一个网络的属性,我们需要一个criterion或者一个null network。
所以这部分的核心就是null network or criterion的生成。我们需要生成Erdös-Renyi Random Graphs和Small-World Random Network。
Erdös-Renyi Random Graphs非常的简单,即:undirected graph with n nodes, and m edges picked uniformly at random. 需要的参数就是节点数和边数了。
12345678910111213141516171819202122def genErdosRenyi(N=5242, E=14484): ""&q ...
FFT idea for Displacement Measurement
FFT idea for Displacement MeasurementDisplacement Measurement任务核心:利用加速度计、陀螺仪(加速度和陀螺仪数据)来计算位移。
Origin Paper Reading原始思路:核心:计算倾角θ。假设:底部固定,只发生上部的形变。
计算倾角使用:加速度和陀螺仪来计算,二者的计算结果结合,通过参数α来调节。
在获取加速度数据前,先通过低通滤波器滤除震动噪声;获取角加速度前,先通过高通滤波器滤除漂移。
Idae: Using FFT to calculate Displacement一时域信号x(t),设其样本长度为T。则其傅里叶变换为$X(f)=\int_{0}^{T}x(t)e^{-j2\pi ft}dt$。
信号x(t)被采集(即采样)后,变为离散形式$x(nt_s)$,$t_s$为采样周期。设在T时间内采样了N个数据,就有:
$$X(k)=\sum_{n=0}^{N-1}x(n)e^{-j(\frac{2\pi}{N})nk}$$
其对应的傅里叶反变换为:
$$x(n)=\frac{1}{N}\sum_{n= ...
Crack Detection Paper Reading
Crack Detection Paper ReadingPaper LIST:
Autonomous concrete crack detection using deep fully convolutional neural network 2019
DeepCrack: Learning Hierarchical Convolutional Features for Crack Detection 2018
Holistically-Nested Edge Detection(经典边缘检测算法HED) 2015
Feature Pyramid and Hierarchical Boosting Network for Pavement Crack Detection 2019
A review on computer vision based defect detection and condition assessment of concrete and asphalt civil infrastructure 2015 TODO: 精读
CrackGAN 2020
...
Running Neural Networks On Embedding Systems
Running Neural Networks On Embedding Systems我检索资料时,核心的关键词是:云平台+边缘计算、IoT、AI加速。所以主要看的是有GPU或者有ASIC(专用集成电路)的方案。
经过资料的查找之后,我发现许多做硬件的大公司比如:高通、NVIDIA,Google、海思都有自己的解决方案。
以下为我找到的一些资料。资料来源:各个公司的官网;淘宝,论坛、博客。
同时给出一些我个人的简易分析,这些分析可能不是很准确,因为只是根据网上资料所得的结果。
TODO:
各个芯片的加速程度对比
Qualcomm 高通高通的优势之一就是其提供了一整套完整的硬件和软件的解决方案。高通AI LINK
其中Qualcomm NPE(Neural Processing Engine) 使用Caffe or tensorflow写好模型后,用Qualcomm NPE SDK添加到晓龙CPU/GPU上运行模型。整个开发使用流程如下所示。
其主要应用领域就用手机AI、IoT领域等。
优势:
有完整的软件+硬件方案
模型建立后部署方便
支持AI的晓龙芯片性能强大,因为是S ...
单片机解决方案调研(2)
解决方案调研(2)GOAL:针对上一次老师提出的点进行补充调研。https://ieeexplore.ieee.org/document/8812785
KEY WORDS: 具体通信细节、耗电量估算、MSP系列、Google edge TPU(另写一篇)
在认真读完SnowFort这篇文章后,我更进一步了解了我们设计的预期,想相比于SnowFort有更进一步的提升,可能可以在如下方面做一些升级:
提升Mote的运算性能,以便可以在mote上进行更多的数据处理
提升Mote的可扩展性,可以让每个mote接入更多种类的传感器
令Mote有更长or维持当前的功率(使用时间)
提升Base Station的运算性能,可以不用考虑其功率情况
组网能力提升、通信距离提升
云端功能、数据处理算法提升
综上,除了对于老师上次提出的点进行补充,我也尝试着从这些方面来尝试改进。
具体通信细节在上一篇调研的最后有一个简易的实现方案。LINK
STM32 PART无限通信部分STM32系列方案使用的是 ATK-ESP8266 。
该模块的核心性能指标如图所示:
M5STACK PART其核心是e ...
CS231n Assignment3 遇到的问题
CS231n Assignment3 遇到的问题
实现基于2019年版的课程
主要记录遇到的问题
我的assignment的github仓库,包含全部的代码和notebook。
Image Captioning with RNNs本部分主要是实现RNN的基础版本。即如下的RNN,不过需要注意的是在代码中实现时要注意矩阵相乘的顺序。
首先是每次time step时的forward的backward,这里比较简单,按照上图公式implement一下就ok了
1234567891011121314151617def rnn_step_forward(x, prev_h, Wx, Wh, b): next_h, cache = None, None next_h = np.tanh(np.dot(prev_h, Wh) + np.dot(x, Wx) + b) cache = Wx, Wh, next_h, prev_h, x, b return next_h, cachedef rnn_step_backward(dnext_h, cache): dx, d ...
CS231n Assignment2 实现时遇到的问题
CS231n Assignment2 遇到的问题
实现基于2019年版的课程
主要记录遇到的问题
我的assignment的github仓库,包含全部的代码和notebook。
Fully-connected Neural Network相比于Assignment1,对于整个网络的实现进行了进一步的封装,可以实现任意深度,大小的MLP。
值得一看的代码部分!solver.py中实现调用更新规则函数(在optim.py中实现),实现的很有趣!
基本思路为:使用getattr获取定义在optim.py中定义好的update rule函数!我是第一次见这种写法,感觉很巧妙,值得学习一波:)
当然,要先import optim。
Core Code(extract):
1234567self.update_rule = kwargs.pop('update_rule', 'sgd')... # Make sure the update rule exists, then replace the st ...
单片机解决方案调研
单片机解决方案调研目标:模块化强;底层开发难度低、成本低;低功耗(电池供电);支持无线通信;具有一定的算力
本文主要讨论3种不同解决方案。Arduino,stm32和C51系列。列出的这三种都是我有过使用经历的。我经验较多的是stm32,没有用arduino做过比较大型的东西。
实际上三者并不能直接比较,Arduino算是一个硬件平台,他的早期,也是最广泛的核心是基于AVR单片机(这种芯片我没单独用过)。
后两者stm32与C51则是两种特定系列的单片机了。
Arduino
stm32
C51
模块化
强(有很多各种各样现成的模块)
中(配合开发板使用,可以达到部分模块化的效果)
中(同stm32)
运算能力
中、高(一般使用AVR的算力差,现在有支持STM32系列的和esp32的了)
中、高
低
功耗
低、电池供电足够
低(极低)、电池供电足够
极低、电池供电足够
开发难度
低、开发速度快、代码易于迭代更新,不必考虑寄存器层面编程
较高(寄存器复杂,但ST提供封装的的库函数)
中(硬件资源少,编程难度高)
价格
较高
中
极低
支持无线通信
支持
支 ...