DeepLearning——感知器
来源:互联网 发布:java 多线程面试 编辑:程序博客网 时间:2024/06/05 21:05
感知器
为了理解神经网络,我们应该先理解神经网络的组成单元——神经元。神经元也叫做感知器。感知器算法在上个世纪50-70年代很流行,也成功解决了很多问题。并且,感知器算法也是非常简单的。
- 感知器的结构图
可以看到感知器的结构有如下几个组成部分:
输入权值,一个感知器可以接收多个输入,每个输入上有一个权值,此外还有一个偏置项。
激活函数
输出
感知器不仅仅能实现简单的布尔运算。它可以拟合任何的线性函数,任何线性分类或线性回归问题都可以用感知器来解决。然而,感知器却不能实现异或运算。
感知器算法这里就不单独记录了,比较简单,随机梯度下降会单独写一次。
其中
- 用感知器实现一个and运算
#from functools import reduce#import operatorclass Perceptron: def __init__(self,input_num,activator): self.activator = activator self.input_num = input_num self.weights = [0.0 for _ in range(input_num)] self.bias = 0.0 def __str__(self): return 'weights\t:%s\nbias\t:%f\n' %(self.weights,self.bias) def list_and_list(self,input_vec,weights): list1 = [ x * y for x,y in zip(input_vec,weights)] return list1 def list_to_sum(self,list): list_sum = 0 for i in list: list_sum += i return list_sum def predict(self,input_vec): return self.activator(self.list_to_sum(self.list_and_list(input_vec,self.weights)) + self.bias) def train(self,input_vecs,labels,iteration,rate): for i in range(iteration): self._one_iteration(input_vecs,labels,rate) def _one_iteration(self,input_vecs,lables,rate): samples = zip(input_vecs,lables) for (input_vec,label) in samples: output =self.predict(input_vec) self._update_weights(input_vec,output,label,rate) def _update_weights(self,input_vec,output,label,rate): delta = label - output self.weights = [w + rate * delta * x for x,w in zip(input_vec,self.weights)] self.bias += rate * delta
这里感知器的结构已经构造好了。下面就进行and运算
def f(x): return 1 if x > 0 else 0def get_training_dataset(): input_vecs = [[1,1],[0,0],[0,1],[1,0]] labels = [1,0,0,0] return input_vecs,labelsdef train_and_perceptron(): p = Perceptron(2,f) input_vecs,labels = get_training_dataset() p.train(input_vecs,labels,10,0.1) return pif __name__ == '__main__': and_perceptron = train_and_perceptron() print(and_perceptron) print('1 and 1 = %d' % and_perceptron.predict([1, 1])) print('0 and 0 = %d' % and_perceptron.predict([0, 0])) print('1 and 0 = %d' % and_perceptron.predict([1, 0])) print('0 and 1 = %d' % and_perceptron.predict([0, 1]))
运行结果如下:
weights :[0.2, 0.1]bias :-0.2000001 and 1 = 10 and 0 = 01 and 0 = 00 and 1 = 0
阅读全文
0 0
- DeepLearning——感知器
- DeepLearning——学习
- 视觉跟踪算法—deeplearning
- 感知器——python实现
- 感知器算法——二维优化
- 感知器算法——C++实现
- 深度学习——感知器
- 感知机—Perceptron
- 感知机 — Perceptron
- DeepLearning——随机梯度下降
- DeepLearning——Restricted Boltzmann Machines
- DeepLearning工具Theano学习记录(二) 多层感知机
- 压缩感知——CS
- Emotion英语——感知
- 感知机/Pytorch—笔记
- 机器学习—感知机
- deeplearning
- deeplearning
- 2017中国运营大会开启报名 | 国内知名互联网公司运营大咖齐聚首都 · 北京,解读未来运营的发展趋势
- 静态代码块及饿汉式单例模式
- 51nod 1097 拼成最小的数
- 高可用架构-- MySQL主从复制的配置
- servlet+ajax搜索智能提示demo(原生js)
- DeepLearning——感知器
- 11月份 chrome 标签整理
- CMRR在测量差分小信号时的重要性——输出误差分析
- unity3d 获取使用内存大小 android and ios
- 聚合支付”为什么很多游戏商家选择他
- KEIL5,STM32工程建立注意事项
- Wake Your Computer Up From Local Network
- Tomcat 部署项目的三种方法
- RESNET学习笔记(二)