基于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 相关文章推荐
在Mac OS上搭建Python的开发环境
Dec 24 Python
python xml解析实例详解
Nov 14 Python
Python实现两个list求交集,并集,差集的方法示例
Aug 02 Python
Python操作mongodb数据库的方法详解
Dec 08 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
Dec 26 Python
python读写csv文件方法详细总结
Jul 05 Python
Python实用库 PrettyTable 学习笔记
Aug 06 Python
pytorch 批次遍历数据集打印数据的例子
Dec 30 Python
Pytorch 卷积中的 Input Shape用法
Jun 29 Python
BeautifulSoup中find和find_all的使用详解
Dec 07 Python
Python数据类型最全知识总结
May 31 Python
Github 使用python对copilot做些简单使用测试
Apr 14 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动态生成版权所有信息的方法
2015/03/24 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
2016/07/20 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
2019/04/10 PHP
浅谈PHP array_search 和 in_array 函数效率问题
2019/10/15 PHP
javascript 简单高效判断数据类型 系列函数 By shawl.qiu
2007/03/06 Javascript
JavaScript判断窗口是否最小化的代码(跨浏览器)
2010/08/01 Javascript
jQuery load方法用法集锦
2011/12/06 Javascript
JavaScript中为什么null==0为false而null大于=0为true(个人研究)
2013/09/16 Javascript
30个经典的jQuery代码开发技巧
2014/12/15 Javascript
js正则表达式验证邮件地址
2015/11/12 Javascript
js 自带的 map() 方法全面了解
2016/08/16 Javascript
jquery html5 视频播放控制代码
2016/11/06 Javascript
AngularJS的ng Http Request与response格式转换方法
2016/11/07 Javascript
Vue2实现组件props双向绑定
2016/12/02 Javascript
NodeJs下的测试框架Mocha的简单介绍
2017/02/22 NodeJs
详解vue项目优化之按需加载组件-使用webpack require.ensure
2017/06/13 Javascript
JS+CSS实现炫酷光感效果
2020/09/05 Javascript
[01:03:00]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第一局
2016/02/25 DOTA
Python获取文件所在目录和文件名的方法
2017/01/12 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
2018/04/28 Python
Python识别html主要文本框过程解析
2020/02/18 Python
python烟花效果的代码实例
2020/02/25 Python
什么是属性访问器
2015/10/26 面试题
新员工培训个人的自我评价
2013/10/09 职场文书
户外亲子活动策划方案
2014/02/07 职场文书
有兼职工作经历的简历自我评价
2014/03/07 职场文书
学生会竞聘书范文
2014/03/31 职场文书
《最佳路径》教学反思
2014/04/13 职场文书
论文诚信承诺书
2014/05/23 职场文书
2014年为民办实事工作总结
2014/12/20 职场文书
村干部任职承诺书
2015/01/21 职场文书
小学教师岗位职责
2015/04/02 职场文书
交通事故案件代理词
2015/05/23 职场文书
《金钱的魔力》教学反思
2016/02/20 职场文书
教你如何用Python实现人脸识别(含源代码)
2021/06/23 Python
Vue ECharts实现机舱座位选择展示功能
2022/05/15 Vue.js