基于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 内置字符串处理函数的使用方法
Jun 11 Python
将图片文件嵌入到wxpython代码中的实现方法
Aug 11 Python
Python中dictionary items()系列函数的用法实例
Aug 21 Python
Python3的urllib.parse常用函数小结(urlencode,quote,quote_plus,unquote,unquote_plus等)
Sep 18 Python
由浅入深讲解python中的yield与generator
Apr 05 Python
python使用xpath中遇到:到底是什么?
Jan 04 Python
特征脸(Eigenface)理论基础之PCA主成分分析法
Mar 13 Python
python 计算数据偏差和峰度的方法
Jun 29 Python
基于plt.title无法显示中文的快速解决
May 16 Python
Django中使用Json返回数据的实现方法
Jun 03 Python
python实现npy格式文件转换为txt文件操作
Jul 01 Python
Django def clean()函数对表单中的数据进行验证操作
Jul 09 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新建文件自动编号的思路与实现
2011/06/27 PHP
WordPress的文章自动添加关键词及关键词的SEO优化
2016/03/01 PHP
简介JavaScript中valueOf()方法的使用
2015/06/05 Javascript
详解JavaScript中localStorage使用要点
2016/01/13 Javascript
详解自动生成博客目录案例
2016/12/09 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
2017/01/06 Javascript
Vue 2.X的状态管理vuex记录详解
2017/03/23 Javascript
Javascript实现的StopWatch功能示例
2017/06/13 Javascript
vue.js todolist实现代码
2017/10/29 Javascript
在Vue中使用highCharts绘制3d饼图的方法
2018/02/08 Javascript
微信开发之企业付款到银行卡接口开发的示例代码
2018/09/18 Javascript
微信小程序保存多张图片的实现方法
2019/03/05 Javascript
微信小程序websocket实现即时聊天功能
2019/05/21 Javascript
[05:01]3.19DOTA2发布会 我们都是刀塔人
2014/03/25 DOTA
Python 连连看连接算法
2008/11/22 Python
21行Python代码实现拼写检查器
2016/01/25 Python
python图像常规操作
2017/11/11 Python
python使用pandas实现数据分割实例代码
2018/01/25 Python
python 日志 logging模块详细解析
2020/03/31 Python
python 读取二进制 显示图片案例
2020/04/24 Python
pytorch 计算ConvTranspose1d输出特征大小方式
2020/06/23 Python
Tensorflow--取tensorf指定列的操作方式
2020/06/30 Python
python获取百度热榜链接的实例方法
2020/08/25 Python
教你如何一步一步用Canvas写一个贪吃蛇
2018/10/22 HTML / CSS
全球游戏Keys和卡片市场:GamesDeal
2018/03/28 全球购物
方法名是否可以与构造器的名字相同
2012/06/04 面试题
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2016/01/06 面试题
团日活动总结范文
2014/04/25 职场文书
产品推广策划方案
2014/05/10 职场文书
英语求职信范文
2014/05/23 职场文书
文明生主要事迹
2014/05/25 职场文书
大学生简短的自我评价
2014/09/12 职场文书
大一工商管理职业生涯规划:有梦最美,行动相随
2014/09/18 职场文书
戒赌保证书
2015/05/11 职场文书
PyTorch device与cuda.device用法
2022/04/03 Python
JS实现简单九宫格抽奖
2022/06/28 Javascript