Union Find

并查集 时间复杂度log(O(N)) // !!!模板 // class Solution // { // public: // int find(int x) // { // if (parent[x] == x) // return x; // parent[x] = find(parent[x]); // return parent[x]; // } // void Union(int x, int y) // { // int px = find(x), py = find(y); // if (px != py) // { // if (size[px] < size[py]) // { // parent[px] = py; // size[py] += size[px]; // } // else // { // parent[py] = px; // size[px] += size[py]; // } // } // } // private: // vector<int> parent; // vector<int> size; // }; Problem Description Given an unsorted array of integers, find the length of the longest consecutive elements sequence. For example,……

阅读全文

大数据基础设施综述

早在1980年,未来学家托夫勒就在《第三次浪潮》之中就提出大数据的概念并赞誉 其为“第三次浪潮的华彩乐章”,然而,这在当时并没有引起人们的特别注意,但是随着社交网络、物联网、云计算的兴起,我们身边的数据规模越来越大,2014年,全世界的用户每天在Twitter上发布超过6.6亿条微……

阅读全文

Probability Problems

参考:概率面试题精讲_七月算法出品 构造随机数发生器 使用均匀随机数发生器rand7构造rand10随机数发生器 关键是"扔掉"不要的数 使用“七进制”,把`1-7`减去1,产生`0-6`,然后产生两位这样的数对应`0-48`,抛弃其中的`40-48`(因为这其中只有……

阅读全文

SENet

SENet(Momenta) 本文整理自机器之心对Momenta WMW团队的专访1 仔细观察上面的卷积示意图,我们可以看到卷积操作实际上是在局部感受野上对图像进行空间和通道方向的信息整合。 当前主流的提升网络的性能主要办法是在空间维度进行的,比如inception结构是在网络中嵌入多尺度结构,Attention……

阅读全文

knowledge distill methods

Knowledge Distill Methods 随着Kaiming He等人提出的resnet1解决了造成深层网络难以收敛的梯度弥散等问题后,人们越来越趋向于通过堆叠网络深度、宽度等方法来改善模型的性能,虽然这样确实在各种任务中获得了很好的效果,然而网络规模的无限制增长为模型在手机等计算能力受限设备上的部署带来了严峻挑战。……

阅读全文

Like What You Like: Knowledge Distill via Neuron Selectivity Transfer

Like What You Like: Knowledge Distill via Neuron Selectivity Transfer Zehao Huang, Naiyan Wang by TuSimple arXiv:1707.01219v1 What? 模型蒸馏技术是一种knowledge transfer方法, 它的思想是用一个已经训练好的更大、更深的大网络指导小网络的训练,将大网络中的”知识”提取到小网络中。 传统的模型蒸馏方法使用大网络和小网络的softmax输出之间的差异作为蒸馏损失,即期望……

阅读全文

Leetcode Solvers

String LeetCote_string_383_Ransom Note 题意 Given an arbitrary ransom note string and another string containing letters from all the magazines, write a function that will return true if the ransom note can be constructed from the magazines ; otherwise, it will return false. Each letter in the magazine string can only be used once in your ransom note. Note: You may assume that both strings contain only lowercase letters. canConstruct("a", "b") -> false canConstruct("aa", "ab") -> false canConstruct("aa", "aab") -> true 思路 用一个计数器数组统计 magzine 中每个字母出现的次数,然后统计 ransomNote 中字母,计算两个字符串的对应字母出现次数的差值,若小于0说明……

阅读全文

Binary Search

Template int start = 0, end = data.size() - 1; while (start + 1 < end) { int mid = (start + end) >> 1; if (...) ... else ... } if (...) return start; else if(...) return end; else return -1; Problems 寻找第一个最大最小元素 #include <iostream> #include <vector> #include <algorithm> using namespace std; class Solution { public: int findFirstTargetPos(const vector<int> &data, int Target) { int start = 0, end = data.size() - 1; while (start + 1 < end) { int mid = (start + end) >> 1; if (data[mid] < Target) start = mid; else end = mid; } if (data[start] == Target) return start; else if(data[end] == Target) return end; else return -1; // while(start < end) // { // int mid = (start + end) / 2;……

阅读全文

梯度下降方法总结

参考并翻译自Sebastian Ruder博士的总结文章An overview of gradient descent optimization algorithms。 梯度下降方法是目前最流行的神经网络优化方法,现在主流的深度学习框架(caffe,keras,MXNET等)都包含了若干种梯度下降算法。虽然我们可以把它们看成黑盒直接使用,但是在不同场合下相同……

阅读全文

神经网络引入循环不变性

由于实际中的数据会以各种各样的形式出现,所以我们在挑选神经网络的训练数据集时需要尽可能的覆盖到所有的情况。比如要训练一个网络来根据病人的x光判断手掌骨骼是否出现畸形,我们会希望用于训练的照片中手掌的位置、方向要尽可能与实际情况吻合,这样可以降低过拟合情况的发生。 我们通常会采取两个……

阅读全文