基于python中theano库的线性回归


Posted in Python onAugust 31, 2018

theano库是做deep learning重要的一部分,其最吸引人的地方之一是你给出符号化的公式之后,能自动生成导数。本文使用梯度下降的方法,进行数据拟合,现在把代码贴在下方

代码块

import numpy as np 
import theano.tensor as T 
import theano 
import time 

class Linear_Reg(object): 
  def __init__(self,x): 
    self.a = theano.shared(value = np.zeros((1,), dtype=theano.config.floatX),name = 'a') 
    self.b = theano.shared(value = np.zeros((1,), 
dtype=theano.config.floatX),name = 'b') 
    self.result = self.a * x + self.b 
    self.params = [self.a,self.b] 
  def msl(self,y): 
    return T.mean((y - self.result)**2) 

def regrun(rate,data,labels): 

  X = theano.shared(np.asarray(data, 
                 dtype=theano.config.floatX),borrow = True) 
  Y = theano.shared(np.asarray(labels, 
                 dtype=theano.config.floatX),borrow = True) 

  index = T.lscalar() #定义符号化的公式
  x = T.dscalar('x')  #定义符号化的公式
  y = T.dscalar('y')  #定义符号化的公式

  reg = Linear_Reg(x = x) 
  cost = reg.msl(y) 


  a_g = T.grad(cost = cost,wrt = reg.a) #计算梯度 
  b_g = T.grad(cost = cost, wrt = reg.b) #计算梯度

  updates=[(reg.a,reg.a - rate * a_g),(reg.b,reg.b - rate * b_g)] #更新参数
  train_model = theano.function(inputs=[index], outputs = reg.msl(y),updates = updates,givens = {x:X[index], y:Y[index]}) 

  done = True 
  err = 0.0 
  count = 0 
  last = 0.0 
  start_time = time.clock() 
  while done: 
    #err_s = [train_model(i) for i in xrange(data.shape[0])] 
    for i in xxx:
      err_s = [train_model(i) ]
      err = np.mean(err_s)  

    #print err 
    count = count + 1 
    if count > 10000 or err <0.1: 
      done = False 
    last = err 
  end_time = time.clock() 
  print 'Total time is :',end_time -start_time,' s' # 5.12s 
  print 'last error :',err 
  print 'a value : ',reg.a.get_value() # [ 2.92394467]  
  print 'b value : ',reg.b.get_value() # [ 1.81334458] 

if __name__ == '__main__':  
  rate = 0.01 
  data = np.linspace(1,10,10) 
  labels = data * 3 + np.ones(data.shape[0],dtype=np.float64) +np.random.rand(data.shape[0])
  regrun(rate,data,labels)

其基本思想是随机梯度下降。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python3.0 字典key排序
Dec 24 Python
Python 用户登录验证的小例子
Mar 06 Python
Python中装饰器的一个妙用
Feb 08 Python
Python fileinput模块使用实例
May 28 Python
python分布式环境下的限流器的示例
Oct 26 Python
Python 中字符串拼接的多种方法
Jul 30 Python
深入flask之异步非堵塞实现代码示例
Jul 31 Python
python-web根据元素属性进行定位的方法
Dec 13 Python
一文了解python 3 字符串格式化 F-string 用法
Mar 04 Python
Python-for循环的内部机制
Jun 12 Python
20行代码教你用python给证件照换底色的方法示例
Feb 05 Python
Python+Appium实现自动抢微信红包
May 21 Python
基于随机梯度下降的矩阵分解推荐算法(python)
Aug 31 #Python
python实现梯度下降算法
Mar 24 #Python
wtfPython—Python中一组有趣微妙的代码【收藏】
Aug 31 #Python
opencv python 图像去噪的实现方法
Aug 31 #Python
python+numpy+matplotalib实现梯度下降法
Aug 31 #Python
python实现随机梯度下降法
Mar 24 #Python
python实现决策树分类(2)
Aug 30 #Python
You might like
用PHP写的MySQL数据库用户认证系统代码
2007/03/22 PHP
PHP中file_exists与is_file,is_dir的区别介绍
2012/09/12 PHP
php设计模式之策略模式应用案例详解
2019/06/17 PHP
Mootools 1.2教程 同时进行多个形变动画
2009/09/15 Javascript
jQuery添加/改变/移除CSS类及判断是否已经存在CSS
2014/08/20 Javascript
JavaScript基础语法、dom操作树及document对象
2014/12/02 Javascript
JavaScript模拟重力状态下抛物运动的方法
2015/03/03 Javascript
javascript实现简单加载随机色方块
2015/12/25 Javascript
JQuery 两种方法解决刚创建的元素遍历不到的问题
2016/04/13 Javascript
JS Ajax请求如何防止重复提交
2016/06/13 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
2016/07/24 Javascript
js实现图片左右滚动效果
2017/02/27 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
2017/03/09 Javascript
微信小程序实现页面跳转传值的方法
2017/10/12 Javascript
Vue实现内部组件轮播切换效果的示例代码
2018/04/07 Javascript
Vue弹出菜单功能的实现代码
2018/09/12 Javascript
分享5个顶级的JavaScript Ajax组件库
2018/09/16 Javascript
Mint UI组件库CheckList使用及踩坑总结
2018/12/20 Javascript
[49:21]TNC vs VG 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第三场 8.20.mp4
2019/08/22 DOTA
python动态监控日志内容的示例
2014/02/16 Python
pandas全表查询定位某个值所在行列的方法
2018/04/12 Python
python3.x实现发送邮件功能
2018/05/22 Python
Python实现的读写json文件功能示例
2018/06/05 Python
使用python制作一个为hex文件增加版本号的脚本实例
2019/06/12 Python
Python 下载及安装详细步骤
2019/11/04 Python
django的模型类管理器——数据库操作的封装详解
2020/04/01 Python
Matplotlib.pyplot 三维绘图的实现示例
2020/07/28 Python
纯CSS实现右侧底部悬浮效果(悬浮QQ、微信、微博、邮箱等联系方式)
2015/04/24 HTML / CSS
英国独特的时尚和生活方式品牌:JOY
2018/03/17 全球购物
Expedia丹麦:全球领先的旅游网站
2018/03/18 全球购物
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
创业计划书如何吸引他人眼球
2014/01/10 职场文书
事业单位分类改革实施方案
2014/03/21 职场文书
归元寺导游词
2015/02/06 职场文书
贫困证明书范文
2015/06/16 职场文书
MySQL连接查询你真的学会了吗?
2021/06/02 MySQL