前言
这个程序前前后后写了一两周了,一直拖拖拉拉,今天趁着阳光太大,怕晒黑,躲在寝室一下午终于调试出来了。在此记录一下多层感知机模型的原理以及我自己的感悟。如果有任何疑问欢迎大家跟我讨论:[email protected]
感知机matlab实现
关于这个看过很多资料,很多资料好像还将感知机和人体大脑感知系统联系起来什么的,深深的一个白眼。。。根本没必要说的多么高大上,学过模电的同学就很好理解,其实每个感知器都相当于一个二极管,将很多很多二极管组合在一起就可以完成一个逻辑电路,实现我们需要的功能。不同的只是这个“二极管“的参数是机器自己更新学习到的而已。
感觉网上关于感知机的基础知识很多,这里直接甩上我的代码供大家参考。
- 代码说明
这个代码的[作用]是用感知机对字母“O“和“D“做分类(可以做任意数字的区分,可以修改代码使用),数据在letter_recognition百度云盘供大家测试使用。
我的代码使用[随机梯度下降],耗时比较长,准确率只能达到92%左右,使用batch_gradient descend应该会进一步改善,之后有时间将会进一步修改完善代码。
学习速率:0.01
loss下线:0.38
这些参数均可以修改。
- 代码片
%% % 处理数据每行读取数据,如果是o或者d,存入数组
% src=fopen('/Users/sdd/Desktop/letter-recognition.data');
uiimport('/Users/sdd/Desktop/letter-recognition.data');
all_data_src=[];
all_label=[];
for i=1:20000
if letterrecognition{i,1}=='O'
all_data_src=[all_data_src;[letterrecognition(i,2:end)]];
all_label=[all_label;1];
end
if letterrecognition{i,1}==&#