基于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中dict(字典)的使用方法示例
Mar 22 Python
Flask入门之上传文件到服务器的方法示例
Jul 18 Python
python 高效去重复 支持GB级别大文件的示例代码
Nov 08 Python
python安装numpy和pandas的方法步骤
May 27 Python
在Pycharm中使用GitHub的方法步骤
Jun 13 Python
用python实现英文字母和相应序数转换的方法
Sep 18 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
Nov 26 Python
python 实现turtle画图并导出图片格式的文件
Dec 07 Python
PyCharm使用Docker镜像搭建Python开发环境
Dec 26 Python
python模拟实现斗地主发牌
Jan 07 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
Feb 05 Python
Python终端输出彩色字符方法详解
Feb 11 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常用函数总结(数组,字符串,时间,文件操作)
2013/06/27 PHP
php一维二维数组键排序方法实例总结
2014/11/13 PHP
PHP获取当前日期及本周一是几月几号的方法
2017/03/28 PHP
PHP hex2bin()函数用法讲解
2019/02/25 PHP
利用Dojo和JSON建立无限级AJAX动态加载的功能模块树
2007/03/24 Javascript
jQuery 打造动态渐变按钮 详细图文教程
2010/04/25 Javascript
jQuery拖拽div实现思路
2014/02/19 Javascript
小巧强大的jquery layer弹窗弹层插件
2015/12/06 Javascript
浅析JS异步加载进度条
2016/05/05 Javascript
浅谈jQuery 选择器和dom操作
2016/06/07 Javascript
JavaScript6 let 新语法优势介绍
2016/07/15 Javascript
jQuery动态添加与删除tr行实例代码
2016/10/18 Javascript
Angular ng-repeat遍历渲染完页面后执行其他操作详细介绍
2016/12/13 Javascript
详解vue项目优化之按需加载组件-使用webpack require.ensure
2017/06/13 Javascript
Spring Boot/VUE中路由传递参数的实现代码
2018/03/02 Javascript
微信小程序实现两个页面传值的方法分析
2018/12/11 Javascript
nodejs环境使用Typeorm连接查询Oracle数据
2019/12/05 NodeJs
python3实现短网址和数字相互转换的方法
2015/04/28 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
2017/11/23 Python
Python+matplotlib+numpy实现在不同平面的二维条形图
2018/01/02 Python
python opencv读mp4视频的实例
2018/12/07 Python
实例讲解Python中整数的最大值输出
2019/03/17 Python
详解用Python为直方图绘制拟合曲线的两种方法
2019/08/21 Python
Jupyter Notebook 实现正常显示中文和负号
2020/04/24 Python
Python中logging日志的四个等级和使用
2020/11/17 Python
Python中return函数返回值实例用法
2020/11/19 Python
大一学生假期实习的自我评价
2013/10/12 职场文书
人事行政主管岗位职责
2013/12/22 职场文书
采购求职信
2014/03/17 职场文书
文明市民先进事迹
2014/05/15 职场文书
给女朋友道歉的话大全
2015/01/20 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
2015年乡镇妇联工作总结
2015/05/19 职场文书
Go语言并发编程 sync.Once
2021/10/16 Golang
Mongodb 迁移数据块的流程介绍分析
2022/04/18 MongoDB
浅谈MySql update会锁定哪些范围的数据
2022/06/25 MySQL