卷积神经网络的发展

1968 Hubel & Wiesel 猫脑实验

Hubel和Wiesel干了一件事,他们将猫麻醉后,把电极插到其视觉神经上连接示波器,并给它们看不同的图像,观察脑电波的反应。他们发现猫看到鱼的图片神经元不会兴奋。但是却意外发现,切换幻灯片的时候猫的神经元会兴奋,也就是图片的边缘会引起猫咪神经元的兴奋。

由于这项发现,Hubel和Wiesel一起获得了1981年的诺贝尔奖。这项发现不仅在生物学上留下浓墨重彩的一笔,而且对20年后人工智能的发展埋下了伏笔。

1980 Neocognitron

日本科学家福岛邦彦提出了neocognitron,其目标是构建一个能够像人脑一样实现模式识别的网络结构从而帮助我们理解大脑的运作。并且他提出现在卷积在用的一系列前向传播的标准方法。
其网络结构:

Neocognitron

一个简单的广播队列

记录一些需求开发中的小代码,如果以后有类似的功能需求,可快速复用。

调用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import BroadcastQueue from './BroadcastQueue';

// 初始化调用
this.broadcastQueue = new BroadcastQueue((data) => {
this.showHighlightTip(data);
});


showHighlightTip(queueItem) {
// 取出队列 item后的处理逻辑
...
},

// 收到广播的时候,一条条push进队列
this.broadcastQueue.push({
tip,
showBtn: false,
order: 3,
});

// 清除队列
this.broadcastQueue.clear()

javascript-patterns学习笔记(三)

callback
一个回调的例子

我们从一个例子开始,首先介绍无回调的情况,然后在作修改。假设你有一个通用的函数,用来完成某种复杂的逻辑并返回一大段数据。假设我们用findNodes()来命名这个通用函数,这个函数用来对DOM树进行遍历,并返回我所感兴趣的页面节点:

1
2
3
4
5
6
7
8
9
10
11
var findNodes = function () {
var i = 100000, // big, heavy loop
nodes = [], // stores the result
found; // the next node found
while (i) {
i -= 1;
// complex logic here...
nodes.push(found);
}
return nodes;
};

学诚法师-好好听话

耳根最利:“谛听,谛听,善思念之”

听闻,本身叫作闻慧,思叫思慧,不断修行,最后才能开智慧。所以,佛门里说“听闻随转修心要,少力即脱生死城”。

学诚法师-好好说话

上篇 说好话积福报

智慧是什么呢?智慧就是当别人用戾气对你的时候,首先你要抱有一颗慈悲心,然后去寻找化解的办法。

好好地修慈心、悲心、喜心、舍心。这些心念修好以后,我们说出来的话,肯定是出于好心,肯定是对方能接受的好话。

javascript-patterns学习笔记(二)

原始值的包装对象

__JavaScript中有五种原始类型:数字、字符串、布尔值、null和undefined。__除了null和undefined之外,其他三种都有对应的“包装对象”(wrapper objects)。可以通过内置构造函数来生成包装对象,Number()、String()、和Boolean()。

为了说明数字原始值和数字对象之间的区别,看一下下面这个例子:

1
2
3
4
5
6
7
// a primitive number
var n = 100;
console.log(typeof n); // "number"

// a Number object
var nobj = new Number(100);
console.log(typeof nobj); // "object"

javascript-patterns学习笔记(一)

在本书中多次提到“空对象”(“blank object”和“empty object”)。这只是某种简称,要知道JavaScript中根本不存在真正的空对象,理解这一点至关重要。即使最简单的{}对象包含从Object.prototype继承来的属性和方法。我们提到的“空(empty)对象”只是说这个对象没有自己的属性,不考虑它是否有继承来的属性。

强制使用new的模式

我们知道,构造函数和普通的函数无异,只是通过new调用而已。那么如果调用构造函数时忘记new会发生什么呢?漏掉new不会产生语法错误也不会有运行时错误,但可能会造成逻辑错误,导致执行结果不符合预期。这是因为如果不写new的话,函数内的this会指向全局对象(在浏览器端this指向window)。
当构造函数内包含this.member之类的代码,并直接调用这个函数(省略new),实际会创建一个全局对象的属性member,可以通过window.member或member访问到它。这必然不是我们想要的结果,因为我们要努力确保全局命名空间的整洁干净。

1
2
3
4
5
6
7
8
9
10
11
12
13
// constructor
function Waffle() {
this.tastes = "yummy";
}
// a new object
var good_morning = new Waffle();
console.log(typeof good_morning); // "object"
console.log(good_morning.tastes); // "yummy"
// antipattern:
// forgotten `new`
var good_morning = Waffle();
console.log(typeof good_morning); // "undefined"
console.log(window.tastes); // "yummy"

ECMAScript5中修正了这种非正常的行为逻辑。在严格模式中,this是不能指向全局对象的。如果在不支持ES5的JavaScript环境中,仍然后很多方法可以确保构造函数的行为即便在省略new调用时也不会出问题。

shell-git常用命令

shell–常用命令

  1. 查询npm 依赖: npm ls -g –depth=1 2>/dev/null | grep generator-
  • ‘npm ls -g’列出依赖,通常是一个树状结构;
  • ‘–depth=1’ 意思是只列出一层;
  • ‘2>/dev/null’ >表示重定向,在bash里面单独的1表示标准输出,2表示标准错误,/dev/null代表空设备文件,这句就表示在执行npm ls -g的时候有错误消息就重定向到空设备文件上,其实就是在输出中过滤了错误消息;
  • ‘|’ 表示通道,用来将上一个命令的输出内容作为下一个命令的输入内容;
  • ‘grep generator-‘表示在前面的输出结果中检索’generator’。
  1. brew update && brew upgrade && brew cleanup
  2. 复制某文件夹下全部内容到另一文件夹,注意’.’这个是必须的,cp -a fold1/. fold2/
  • windows: xcopy www backup /exclude:except.txt or robocopy SOURCE DEST /mir /xd node_modules
  • linux: rsync -av –progress sourcefolder /destinationfolder –exclude thefoldertoexclude
  1. windows关闭nginx: taskkill /F /IM nginx.exe
  2. windows查询nginx是否启动: tasklist /fi “imagename eq nginx.exe”
  3. 查到端口占用:NETSTAT.EXE -aon|findstr “3002”
  4. 结束端口占用进程:taskkill.exe /f /t /im 10768
  5. 如何使npm intall 不需要输入 sudo: 为当前账户添加node_modules目录读写权限即可。sudo chown -R $(whoami) ~/.npm