用SymPy简化神经网络的求导(微分)
2016-05-19 14:56
295 查看
神经网络模型
这里不重点介绍神经网络模型,这里有神经网络比较简洁的介绍和推导。[机器学习] Coursera ML笔记SymPy(符号计算框架)的安装
我的系统为Ubuntu 14安装比较简单:sudo apt-get install python-sympy【全部小写,csdn自动变成大写了◔ ‸◔?】
求导
为了简化叙述这里不用求和符号,w,b,x均为矩阵形式。在python终端输入:
from sympy import * w=Symbol('w') b=Symbol('b') x=Symbol('x') y=Symbol('y') #或者用下面的方式生成符号 #w,b,x,y=symbols('w b x y') a=w*x+b print a
这里可以看到a的输出w⋅x+b
这里假设激活函数是tanh
out=tanh(a) e=(y-out)**2 print e
输出:<
4000
span style="display: inline-block; position: relative; width: 8.672em; height: 0px; font-size: 123%;">(y−tanh(b+w⋅x))2
这里对e求w的微分
print diff(e,w)
输出: −2⋅x⋅(y−tanh(b+w⋅x))⋅(−tanh2(b+w⋅x)+1)
对e求b的微分
print diff(e,b)
输出: (y−tanh(b+w⋅x))⋅(2⋅tanh2(b+w⋅x)−2)
求导数是不是变得很简单?
总结
当然还有很多其他机器学习算法,如线性回归,逻辑回归等等,可以通过sympy的形式求导和积分,或者去验证自己的导数是否是正确的。这里只是一个入门级别的sympy使用介绍。详细可以点击这里有比较全面的tutorial,还有pdf文档相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法