0%

1
2
3
4
5
6
7
considering a numpy matrix mat with shape[10,7,1,2]
if we want to access the FIRST column of mat, which has shape[10]
then we should use:
mat[:,0,0,0]
instead of:
mat[:][0][0][0] (return the shape of [5])
cause mat = mat[:] actully.

lecture 12 visualization

Q1 why does visualizing the weights of the filters tell you what the filter is looking for?

template match. (filter = template)

the input which maximizes that activation under a norm constraint on the input is exactly when those two vectors (input + filter) matches up.

visualization of second last layers:

L2 nearest neighbors in feature space can be same types ( tree on the left or tree on the right)

visualization of middle layers

select images with maximal activations in exact channels of exact layers (the selected images are usually same)

mask part of the image before feeding into CNN

saliency maps

  • which pixels matter?
  • computer gradient of output/input directly

deep dream

set feature maps as the (backpropagation) gradient to maximize the features found by DNN

neural texture synthesis

generate a big texture from a small texture(image)

  • how to compute Gram Matrix(also for style transfer)?:
  1. get a feature map through DNN with size ($C\times H\times W$)
  2. generate $cchw$ matrix for each pair of c-dimensional vectors measuring co-occurrence ($new_{ij} = old1_iold2_j$)
  3. average from cchw to cc
  • using random image to generate gram matrix and compare it with input’s gram matrix( loss function to compare)

style transfer

  • gram matrix is also used
  • but the iteration may be too large (random image as initial image), solution: train a DNN(feedforward net in the image) ,input: raw image output: style image and the weight is updated by throwing the output into the gram matrix calculation procedure.

1546069236886

lecture 13 generative models

面试了两次了,去年一次,今年一次。记录一下流程和心得吧。

流程

  • 跟教授套磁(个人觉得是影响最后结果最重要的因素,最好是能跟教授做research, 比如申请ra,申请fyp在cu做)
  • cs 官网报名。注意early submission一般是8,9月截止。正常的是11月开始 越早报名越好,regular interview不是等到最后三月DDL后才一起面试。
  • interview,了解到的eligible的同学基本都是top15水准的内地同学吧,中大,浙大,华科,清华等等。不过也有南科大top1的同学和华盛顿回港的待就业local。
    • 首先是一小时的written test。考的东西是 组合 + 概率 + 图论 + OS + data structure 等各种杂交的把。不过难度不是很大,准备其实也无从下手。内地同学可能要把单词搞明白?重要性据说也就那样,好了自然是加分项,没好也不会太扣分。
    • 面试是三位老师。常规的 自我介绍,reasons for apply for this program是一定要准备的。另外的话 就是准备好介绍自己的proj。一般来说 前期套磁很顺利的话 教授就不会太刁难的问算法 技术问题,只是发邮件“套磁”的话可能会问到比如leetcode这样的东西。
  • 面试完之后,如果通过了,前期已经完全说好的就可以直接跟教授拿offer了,否则还需要找教授问要不要收我。(这个面试代表engineering falculty 认可你做phd学生,不代表某个特定的教授就要招你)

感想

  • 面试的时候有说 charles kao 是自己的偶像,想做newton in physicals那样的人物。教授有点“冷笑”的意思。 再想想自己现在其实并没有什么能摆上台面的achievement,说这种话真有点“志大才疏”的意思,心比天高的人其实是我最不想成为的人。在我能说出这些话之前,先有足够的实力才不会被人质疑。不过所幸还有足够时间努力。
  • eric lo 从工业界回到学术圈的原因也知道了,不喜欢编程。觉得钱不是最重要的事。很高兴其实还是有很多人这么想的。就像记者问charles kao没有光纤专利后不后悔,他说不后悔,” if everything is for making money, then I cannot absolutely invent the optical fiber”。至少我也一定不会做一个money-oriented 的人,对我来说 人生的追求不是making big money.

1
2
3
4
5
6
7
8
9
10
11
// loop over inner tile(output tile) dimension
for ( int iktile = 0; iktile < ntiles; iktile++ ) {

// loop over row tiles
for ( int irowtile = 0; irowtile < ntiles; irowtile++ ) {
// loop over column tiles
for ( int icoltile = 0; icoltile < ntiles; icoltile++ ) {
…
}
}
}

Details description

我是个理工男。

但和其他理工男有点不一样的是,我有一点细腻的人文情怀。或者说是“小女生”般的心思。可能是从小比较独立 缺少父母沟通的结果,许多东西我习惯自己想和承受。

最近这几个月,我的思想又有了很大的变化。其实从小,虽然是“没了爸妈”的孩子,但独立的我比较早进入过社会,结识到的人、朋友、同学、老师,在我看来,但是和我一样真诚、友善、向上的。

我现在还记得,小学一年级在镇上最大的演艺厅讲相声,那时候寄居在爸妈朋友家,讲完后下台,一个奶奶笑着给了我大拇指,夸我爸妈不在家都这么棒。然后还有大点了一个人从邵阳去株洲,自己买票坐火车,有个叔叔吓唬我他是人贩子,还给我看了胶带说是绑嘴巴用的,我当时吓得一句话也不敢说,后来叔叔见我真吓到了,把自己的孩子介绍给我认识,然后温暖地夸我厉害,还给了我一颗糖。不过谨慎的我终究还是没敢吃陌生人的糖,但是叔叔给年幼的我一个对陌生人的温暖美好的印象。再有小学四五年级的时候,帮爸爸去走街串巷发他诊所的传单,在一个小卖部里,一个和我年纪差不多的孩子在写作业,他的爸爸拉住我,问清楚情况后,让孩子向我学习,并硬是塞给我几块糖。那时其实我是又委屈又自豪。年幼时候的这些故事让我明白了“听话”的好处,同时也给了我一个对世界的直观印象,大家都是温暖的,真诚的,友善的。

姑且不论孩子听话是否就是好事,但对我来说,虽然小心翼翼的长大,和父母没有羡慕的朋友般的交情,但至少没有走弯路,一路过来也是平安无恙。不过这几个月,让我开始有点变化的是后一点,我发现,其实人和人之间的关系,并没有那么单纯、真诚、友善。大家不是我印象里的那般温暖友善,我在大家心中也不是什么好相处的人。可能我真的是象牙塔里出来的“人才”,只是侥幸脑子好点,所以家长老师同学对我都是客客气气和和睦睦,仅此而已。

对我来说这真的是个很难适应的想法。第一次听说别人的“坏东西”是知道某个女同学约炮,然后又知道了很多别的女同学的一些,在我看来真的是难以想象的故事。接着来到深圳,这边的同学也是如我所想一般的热情温暖,但是聊多了我发现他们其实也有一些“渣男”才会做的事,真有种“天下皆渣,各凭本事”的意思。

不过这些还没有彻底颠覆我的三观。我真正觉得,友谊没有那么纯粹,是在一次意外的“听说”后。我听说,我自以为的高中最好的朋友,说我是宿舍公认最难相处的人,说我在他自招成功后总是阴阳怪气。我听说后,第一时间的想法是震惊,头脑空白,然后委屈,想知道我到底哪里让大家觉得难相处了,高中拿奖学金请大家鸡腿的是我,每晚熄灯后打开话题聊得很开心的是我和我们,毕业后组织宿舍聚会的也是我。再然后就是释然,他们这么认为肯定也是有他们道理的,我肯定是什么话语行为让他们觉得我是最难相处的人吧,我能做的就是得明白其实我也不是什么性格很好的人,人和人的关系也不可能如我所想的干净、透明,有什么不高兴不满意直接说出来,睡一觉第二天就忘了。

说委屈其实现在肯定还是有的。没有通过准备一年的清华自招,而且还不是自己没考好的原因。这种打击换做谁都不可能还如往常一样笑嘻嘻,我自以为的最好的朋友,没有安慰过我,反而觉得我那段日子脾气不好 心情低落是 难相处的原因之一。。。不过我也在告诉自己君子坦荡荡,一个真君子的坦荡情怀,就是在这种时候能够散发出来的,我也无需抱怨或是愤愤不平。人生终究是自己的,你愿意将真心给对方是自己的事,但别人如何评价你与自己无关了。人无完人,哪怕你觉得世界万物都是美好的,肯定不可能强求世界就觉得你是美好的了。

呼。好累啊。要接受这些事实真的好累啊。要接受你最怀念的宿舍兄弟把你评为最难相处的人,要接受你觉得的最好的朋友觉得你很难相处,要接受这个世界没那么透明直接,还要接受喜欢了七年的她不喜欢你了,这些变故都是这两个月连环发生的。不过我能做的就是多想想自己的精神世界,肯定有这样那样的缺陷,才让他们这么讨厌我吧,学校的十几年没有教我这方面的事,不过还好我脑子好使,未来肯定不会差的。

不过有一点我确信的是。即便这个世界真的是各凭本事渣,但我也需要坚持一些自己的原则,继续做一个真诚的人。只是说君子慎于言而敏于行,有些幼稚的言语行为,哪怕只是在你看来的无心之举,对他人造成的伤害可能不是像你这种神经大条的睡一觉就忘了。

和这些人生上的大道理不一样的是,感情不是我一个人的事了。和喜欢了这么久的人分手真是个难熬的事,那段日子真是挺消沉的,毕竟习惯了这么久的陪伴,忽然就是一个人要承受生活里的喜怒哀乐。但这能怨谁呢,怨两个人性格不合,怨自己太幼稚导致她不喜欢了?君子不怨天不由人,事已至此,其实也没办法埋怨谁,我能做的就是释怀吧。

某天。你无端想起一个人,ta曾让你对明天充满期许,但是却完全没有出现在你的明天里。

也有一个人,ta会在往后的岁月里给你更长久的幸福,虽然ta不曾来过你的青春。

不过分手这一两个月的心路历程真是有意思。从愤怒,到茫然,到委屈,到思念,到释怀,到急于找一个新的依托,再到现在好像觉得这些不是那么“急”。我欣赏羡慕李健,欣赏他的为人,羡慕他的爱情。但是他之所以能有这样的爱情也是他的为人决定的,连我也会觉得要是个女生会想着嫁给李健,不是么?因此也是最近的某个时刻,忽然发现,我不应该想用新的恋情去忘掉旧的过去,这样的恋情可能会幸福,但对于那个女生肯定是不公平的。一个男生,更应该想的是提高自己,不管是专业能力还是个人的修养,倘若做一个李健那样的人,自然也能吸引到优秀温柔如孟小蓓的姑娘。这样的姑娘会有吗?肯定会有的。时光还长,每每输入自己出生年月的时候,我都会又这样的感慨,我才21呀,还有十年时光给我去碰到,结识各种各样的朋友,只要我保持自己的本心,做一个真诚善良的人,同时提高自己的修养,我肯定肯定也会遇到一个适合我的姑娘的。她会在往后的岁月给我更长久的幸福,虽然不曾来过我的青春。

关于工作。可能是受苏轼的影响,我发觉我越来越乐天派了,颇有点一蓑烟雨任平生的意味,尤其是看了许多人的传记后更发觉得,历史长河滚滚前行,哪怕你是时代的弄潮儿,终究也会淹没在历史的潮水下,更何况我们中大部分都只是那潮水中的一个小水滴。当我和身边优秀的人儿聊天时,无外乎申请、升职、压力,会给自己这样那样的鞭笞,有时候反而让自己的压力越来越大。这是好事还是坏事?按照主流价值观来说,肯定是好事,天行健,君子当自强不息。但是,我其实真的不想给自己这么大的物质地位荣誉上的追求压力,我觉得计算机这个行业,以后我就算混的再差肯定也可以吃喝不愁,在长沙或者什么小地方买个小房子。对我来说,重要的往往是心灵上的追求,我这样子真的能让我自己开心吗,我能碰到一个能一起幸福的姑娘吗,有孩子了我能给他最足够的陪伴吗,自己真的有心思去享受江上之清风,山间之明月么。对我来说,我继续PHD学位 现在继续research的动力不是说想出人头地,而是真心的觉得成为一个大学教授是能实现我人生价值 碰到知己的很好的一个途径。人生在世,终究会归于尘土,物质上名誉上的 东西都是虚名,只要我过世时能觉得自己不虚此行,活的精彩,这便足够了。高琨先生便是我辈的楷模,虽然发明了光纤,但放弃专利申请,功成名就之时来到家乡兴办教育,年老了和自己的夫人一起逛逛超市,学校,真好呀。

社交网络。

看完后浓浓的窒息感。

第一想法就是觉得人生中有许多特别重要的抉择 当时我们可能不以为然 但往后就会陷入后悔。不过仔细想想他们的结局。其实没有谁特别糟糕。即便特别糟糕了 事情既然发生 也不能怎样了 接受天命很难 却是大部分人必须学会的。

另外在争吵后,如何去调整关系,不管是伴侣,还是朋友,还是合作伙伴。也许他说的是有道理,也许我真的不适合,公司的未来发展,总之,不要盲目把自己就想成真理。

SOSP2017

Problem

automated and systematic testing of large-scale, real-world DL systems with thousands of neurons and millions of parameters for all corner cases is extremely challenging.

如何准确评估一个DL系统的好坏?

Background

  • adversarial deep learning have demonstrated that carefully crafted synthetic images by adding minimal perturbations扰动 to an existing image can fool state-of-the-art DL systems.(像素攻击)
    • limit: it must limit its perturbations to tiny invisible changes or require manual checks.
  • Challenges:
    • how to generate inputs that trigger different parts of a DL system’s logic and uncover different types of erroneous behaviors,
    • how to identify erroneous behaviors of a DL system without manual labeling/checking.
  • This work
    • neuron coverage (the number of neurons activated)
    • multiple DL systems finish same work. (traditional software engineering technical)
    • how to use gradient to solve the problem(test more neuron coverage and as many differential behaviors as possible)

Details

input: unlabeled test inputs

output: new tests that cover a large number of neurons

SuperNeurons: Dynamic GPU Memory Management for Training Deep Neural Networks

Problem

Memory optimization of single DNN training work in single GPU

Method

  • Liveness Analysis 只保存未来会用到的tensors
  • Unified Tensor Pool communication tools for GPU-CPU memory using Least Recent Used tensor replacement policy and a Tensor cache. (只有conv 这种co mputation-intensive的才放到cpu去)
  • Cost-Aware Re-computation 只要不高于peak memory 都不recompute,否则除了conv 都recompute(pool,activation…)
  • Selective convolution algorithm 基于此刻与peak memory的差值选择convolution 方法(eg。 FFT需要额外的convolution space)

攻击神经网络

Fast Gradient Method (Explaining & Harnessing Adversarial Examples)

linear model:

$$
y’=w^Tx’ = w^Tx+w^T\sigma
$$

where $\sigma$ is the change of original input x, and we have:
$$
\sigma = \varepsilon sign(w)
$$
理解: 在保持$|\sigma|$ 不变情况下,y’ 变化最大只可能 使 $w^T\sigma = |w|_1$

DNN
$$
\sigma = \varepsilon sign (\triangledown_xJ(\theta,x,y_{true}))
$$

where J is the loss function. In most cases (soft-max as classifier layer)

理解: 要让y’变化最大,及 应向loss 变大的方向变化。 即若$(\triangledown_xJ(\theta,x,y))$ 为负数(loss 与 x 的gradient)则 x应变小 ($\sigma$需为负数)

Iterative method

Basic iterative method

update equation (1) $x_2’ = x_1’ + \sigma$

Targeted

(3) becomes:
$$
\sigma = -\varepsilon sign (\triangledown_xJ(\theta,x,y_{targeted}))
$$

Our Method

What we have known and what we can obtained now?
  • Printable image size:

    $P(i,j)$ as the indexed boxes with size: Black/white box: $P_h\times P_w$

  • Actual image ($100\times 100$) per frame.

    $S_I$: starting index of the billboard for each frame.

    $R_I$: range of the billboard for each frame.

    $G_I$: gradient of each pixel in the bill board/

What we need to calculate

$G_P$ :gradient of each box in P.

How?

Transform:

  • Nearest

  • SPP:

  • Binary

EIE: Efficient Inference Engine on Compressed Deep Neural Network

Introduction

  • DRAM access costs more energy than basic operations
  • CNN has a lot of data reuse, which makes DRAM access not very important
  • Deep compression makes the kernel sparse, able to exist on mobile

Contribution

  • accelerator for sparse and weight sharing neural networks
  • accelerator that exploits the dynamic sparsity of activations to save computation
  • a method of both distributed storage and distributed computation to parallelize a sparsified layer across multiple PEs (processing elements)

Motivation

  • FC is used widely, and memory access is usually the bottle-neck ( no reuse of the input matrix)
  • network compression offers a solution of memory bottleneck
  • previous SPMV accelerator can only exploit static weight sparsity.
  • batching of FC is not suitable for latency reason

Model

Variation of CSC

v : value

z : offset of last non-zero value (one column as a vector) or first element

q: pointer to the fist non-zero element of each column

combination between algorithm and hardware