网络程序设计结课总结——神经网络篇

本文作者作为编程初学者,通过孟宁老师的网络程序设计课程,学习了神经网络并应用于医学辅助诊断系统。项目包括手写字符识别、血常规检验报告OCR识别和基于血常规数据预测年龄性别。作者强调了工具如TensorFlow、spss和octave的重要性,并分享了在项目中的学习收获和感悟。
摘要由CSDN通过智能技术生成

前情提要:

为什么深度学习逐渐成为热潮?
随着计算机运算速度的提高和硬件条件的不断改善,神经网络和深度学习逐渐涉及到了生活中的方方面面,成为了当今的一个热门的话题。
我作为初入编程的菜鸟,代码能力比较差,因为本科专业的原因,所以有一定的数学基础,也因此最终选择了孟宁老师的网络程序设计课程。
这学期的网络程序设计课程主要内容是,基于深度学习神经网络等机器学习技术实现一个医学辅助诊断的专家系统原型,具体切入点为:为血常规检验报告的OCR识别,深度学习与分析,神经网络基本内容的介绍(PPT展示),以及一些常见神经网络工具和API库的使用和比较分析。博客的主要内容分成三部分来进行展示。分别是课程项目的整体 工作流程和代码功能展示,我在其中做的功劳和苦劳,以及课程结束后的收获与感悟。因为经验不足和第一次写博客,有不足和不明的地方,还希望大家和我一起讨论可怜~
(为了更好的展示整体流程和设计思路,博客里的部分图片来自网络和同学!!!侵权删么么哒!!!)
博客里涉及的主要工具有Tensorflow/spss/octave,版本都更新至最新版。Python版本为2.7。3以上可能不能运行文章中涉及的部分代码。

课程项目整体展示

课程项目A1:神经网络实现手写字符识别系统

因为是刚入门的项目,所以难度不是很大(代码菜鸟啪啪打脸),主要是在实验楼进行了代码实现,整个流程实验楼里总结的非常完整,对于新手来说非常容易上手,很利于培养自信心(……),所以作为一只小白我就带着这种迷之自信入了坑。
但是其实说实话,我一开始对图片的转换以及其中的各种神经网络完全是大写的懵逼,虽然在大神的帮助下成功的跑出了结果但是可以说完全没有任何理解。
作为一只菜鸟,这时候我甚至还不是很理解机器学习、神经网络、深度学习之间的区别…
这里要强势安利一波coursera的神经网络课程!(答应我链接请自己谷歌好嘛)
在经历几周的学习以后,我发现手写字符识别真的是神经网络里非常基础而且用途非常广泛的练手实例。TensorFlow的入门教程、octave跑的第一个实例,以及各种教学课程上都会使用它来带新手入门,所以在挣扎摸索了很久后,我终于用Octave自己跑出了手写字符识别系统的代码。
参与测试的字符串
↑这里是参与测试的字符串的图片。他们都已经被预处理为20*20的格式,一共有5000个数据(随机选择了其中的100个进行输出显示),被传入存储为一个5000*400的矩阵,其中每一行代表了一个独立的字符。
手写字符识别系统本质上是一个多分类问题,为了更好的理解神经网络的优越性,这里我选择使用线性分类和神经网络两种模式进行了手写字符识别系统,在模型训练较好的前提下,二者的精度分别在94和97左右,
对整个迭代过程进行了输出展示
线性拟合:按照分类器的数量,用for循环进行了分别迭代,迭代次数为50次,并计算代价函数,最后为预测精度。

这里是迭代部分的代码:

%    Set Initial theta
for c = 1:num_labels  
  initial_theta = zeros(n + 1, 1);
%     
%    Set options for fminunc
     options = optimset('GradObj', 'on', 'MaxIter', 50);
% 
%    Run fmincg to obtain the optimal theta
%    This function will return theta and the cost 
     [theta] =fmincg (@(t)(lrCostFunction(t, X, (y == c), lambda)),initial_theta, options);
      all_theta(c,:)=theta';
     fprinf('zheshi',theta);

神经网络:

这里神经网络的参数是课程里直接给出的,打包成了weight数据文件,在执行的时候对预测环节加入了display部分,对每一个随机抽出的图像进行了还原展示,将标签和真实值对比。
预测部分的代码如下:

function p = predict(Theta1, Theta2, X)
%PREDICT Predict the label of an input given a trained neural network
%   p = PREDICT(Theta1, Theta2, X) outputs the predicted label of X given the
%   trained weights of a neural network
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值