基于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 相关文章推荐
跟老齐学Python之??碌某?? target=
Sep 12 Python
用Python将动态GIF图片倒放播放的方法
Nov 02 Python
浅析PHP与Python进行数据交互
May 15 Python
python批量下载网站马拉松照片的完整步骤
Dec 05 Python
对Python的zip函数妙用,旋转矩阵详解
Dec 13 Python
Python制作动态字符图的实例
Jan 27 Python
python使用time、datetime返回工作日列表实例代码
May 09 Python
python之array赋值技巧分享
Nov 28 Python
基于Pyinstaller打包Python程序并压缩文件大小
May 28 Python
详解pyinstaller生成exe的闪退问题解决方案
Jun 19 Python
Python 无限级分类树状结构生成算法的实现
Jan 21 Python
python和Appium的移动端多设备自动化测试框架
Apr 26 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
PHP5.5安装PHPRedis扩展及连接测试方法
2017/01/22 PHP
PHP面向对象程序设计之对象的遍历操作示例
2019/06/12 PHP
兼容ie和firefox js关闭代码
2008/12/11 Javascript
JavaScript的变量作用域深入理解
2009/10/25 Javascript
jquery tablesorter.js 支持中文表格排序改进
2009/12/09 Javascript
Jquery实现控件的隐藏和显示实例
2014/02/08 Javascript
JS调试必备的5个debug技巧
2014/03/07 Javascript
javascript屏蔽右键代码
2014/05/15 Javascript
用NODE.JS中的流编写工具是要注意的事项
2016/03/01 Javascript
JavaScript中获取HTML元素值的三种方法
2016/06/20 Javascript
Knockout结合Bootstrap创建动态UI实现产品列表管理
2016/09/14 Javascript
详解jQuery事件
2017/01/13 Javascript
jQuery取得元素标签名称小结(附代码)
2017/08/16 jQuery
JS实现图片放大镜插件详解
2017/11/06 Javascript
微信小程序搭建(mpvue+mpvue-weui+fly.js)的详细步骤
2018/09/18 Javascript
checkbox在vue中的用法小结
2018/11/13 Javascript
bootstrap 日期控件 datepicker被弹出框dialog覆盖的解决办法
2019/07/09 Javascript
解析JS在获取当前月的最后一天遇到的坑
2019/08/30 Javascript
基于JavaScript实现控制下拉列表
2020/05/08 Javascript
Python使用metaclass实现Singleton模式的方法
2015/05/05 Python
python和c语言的主要区别总结
2019/07/07 Python
python tkinter控件布局项目实例
2019/11/04 Python
使用python批量修改XML文件中图像的depth值
2020/07/22 Python
Python基于unittest实现测试用例执行
2020/11/25 Python
python 实现数据库中数据添加、查询与更新的示例代码
2020/12/07 Python
水芝澳美国官网:H2O Plus
2016/10/15 全球购物
波比布朗英国官网:Bobbi Brown英国
2017/11/13 全球购物
澳大利亚便宜的家庭购物网站:CrazySales
2018/02/06 全球购物
ECHT官方网站:男女健身服
2020/02/14 全球购物
电子装配专业毕业生求职信
2014/04/23 职场文书
物流专业专科生职业生涯规划书
2014/09/14 职场文书
2015年安置帮教工作总结
2015/05/22 职场文书
读《解忧杂货店》有感:请相信一切都是最好的安排
2019/11/07 职场文书
pytorch 一行代码查看网络参数总量的实现
2021/05/12 Python
golang语言指针操作
2022/04/14 Golang
java.util.NoSuchElementException原因及两种解决方法
2022/06/28 Java/Android