前言
今年有幸选到了孟宁老师的网络程序设计,这门课教授的是当今火热的深度学习技术,通过这门课的学习,我有了很多的心得和体会。
课程介绍
基于深度学习神经网络等机器学习技术实现一个医学辅助诊断的专家系统原型,具体切入点为课程项目:对血常规检验报告的OCR识别、深度学习与分析。
项目地址
个人贡献
课程项目A1:神经网络实现手写字符识别系统
该项目是利用Python和Python的numpy库写一个神经网络手写字符识别系统。通过使用5000x400的带标签的手写字符数据训练一个神经网络模型,并使用BP反向传播算法对参数进行校正,最终建立一个手写字符训练模型。人们可以在web端的canvas画布上手写数字,当点击Test的时候,就会将该手写字符数据传输到训练模型中,然后返回其预测值;当点击Train的时候,就可以根据人提供的真实数据进行训练。本次项目的教程地址在这里。关于什么是BP反向传播算法,这个博客给予了详细的说明。本次项目源代码在这里。
环境搭建
# 安装pip
sudo apt-get install python-pip
# 用pip安装numpy和scipy
pip install numpy scipy
# 如果上一步安装失败就使用ubuntu的包管理器试试
sudo apt-get install python-numpy python-scipy
# 安装sklearn, neural_network_design.py需要调用它做交叉验证
pip install -U scikit-learn -i https://pypi.mirrors.ustc.edu.cn/simple
# 下载图像和标签数据
wget http://labfile.oss.aliyuncs.com/courses/593/data.csv
wget http://labfile.oss.aliyuncs.com/courses/593/dataLabels.csv
运行
# 训练模型
python neural_network_design.py
# 创建服务器
python -m SimpleHTTPServer 3000
# 加载服务器
python server.py
# 访问
localhost:3000
截图
实验心得总结
通过本次实验的学习,我了解了前馈神经网络算法和BP反向传播算法的工作原理,另外也熟悉了神经网络的构建方式和python numpy库的使用,算是对神经网络有了一个初步的了解和认识,神经网络也没有以前觉得那么高不可及了。
课程项目A1a:使用深度学习框架改进A1
目前有很多深度学习框架,如Tensorflow,Caffe, Mxnet, Keras等等,由于目前谷歌的深度学习框架Tensorflow性能很好,而且学习资源很多,因此我选择了Tensorflow作为本次项目的深度学习框架。本次项目是对A1的改进,这里我主要参考了tensorflow官方mnist手写字符识别教程,使用60000个28x28的mnist手写字符数据集对tensorflow神经网络模型进行训练,并使用10000个28x28的mnist手写字符数据集作为预测识别成功率,该项目能够对用户输入的28x28的数字图片进行预测。本次项目源代码地址在这里。
环境配置
系统要求: ubuntu 14.04 / ubuntu 16.04
# 安装numpy,如果安装了,则跳过此步
sudo apt-get install python-numpy
# 安装PIL,如果安装过了,则跳过此步
sudo apt-get install python-imaging
# 安装Tensorflow
pip install --u