基于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使用append合并两个数组的方法
Apr 28 Python
Django验证码的生成与使用示例
May 20 Python
win10下Python3.6安装、配置以及pip安装包教程
Oct 01 Python
python基础教程项目三之万能的XML
Apr 02 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
Apr 06 Python
Win8下python3.5.1安装教程
Jul 29 Python
PyCharm 2019.3发布增加了新功能一览
Dec 08 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
Feb 10 Python
python 实现图片修复(可用于去水印)
Nov 19 Python
Python爬虫教程之利用正则表达式匹配网页内容
Dec 08 Python
python 通过使用Yolact训练数据集
Apr 06 Python
浅谈哪个Python库才最适合做数据可视化
Jun 28 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类
2006/11/27 PHP
ThinkPHP CURD方法之where方法详解
2014/06/18 PHP
CI框架给视图添加动态数据
2014/12/01 PHP
PHP中substr_count()函数获取子字符串出现次数的方法
2016/01/07 PHP
PHP自带方法验证邮箱是否存在
2016/02/01 PHP
PHP生成图片验证码功能示例
2017/01/12 PHP
yii2中dropDownList实现二级和三级联动写法
2017/04/26 PHP
php的RSA加密解密算法原理与用法分析
2020/01/23 PHP
php并发加锁问题分析与设计代码实例讲解
2021/02/26 PHP
用JQuery 实现的自定义对话框
2007/03/24 Javascript
简单的JS多重继承示例
2008/03/13 Javascript
javascript写的日历类(基于pj)
2010/12/28 Javascript
基于KMP算法JavaScript的实现方法分析
2013/05/03 Javascript
JS建造者模式基本用法实例分析
2015/06/30 Javascript
JS实现可调整倒计时间代码分享
2015/08/18 Javascript
浅析jQuery移动开发中内联按钮和分组按钮的编写
2015/12/04 Javascript
BootStrap中Datepicker控件带中文的js文件
2016/08/10 Javascript
bootstrap paginator分页前后台用法示例
2017/06/17 Javascript
关于vue编译版本引入的问题的解决
2018/09/17 Javascript
JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】
2020/05/01 Javascript
Python编程把二叉树打印成多行代码
2018/01/04 Python
Python实现去除图片中指定颜色的像素功能示例
2019/04/13 Python
python动态进度条的实现代码
2019/07/03 Python
简单了解django文件下载方式
2020/02/10 Python
Transpose 数组行列转置的限制方式
2020/02/11 Python
python使用requests库爬取拉勾网招聘信息的实现
2020/11/20 Python
Harman Audio官方商店:购买JBL、Harman Kardon、Infinity和AKG
2019/12/05 全球购物
英国奢侈品牌时尚购物平台:Farfetch(支持中文)
2020/02/18 全球购物
元旦晚会活动总结
2014/07/09 职场文书
社区精神文明建设汇报材料
2014/08/17 职场文书
一般党员对照检查材料
2014/09/24 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
教师自我剖析材料(群众路线)
2014/09/29 职场文书
爱国影片观后感
2015/06/18 职场文书
2019行政前台转正申请书范文3篇
2019/08/15 职场文书
Java9新特性之Module模块化编程示例演绎
2022/03/16 Java/Android