train_rbm = theano.function(
[index], # inputs
cost, # outputs
updates=updates,
givens={
x: train_set_x[index×batch_size: (index + 1)×batch_size]
},
name='train_rbm'
)

function函数里面最典型的四个参数是inputs,outputs,updates,givens。

function是一个由inputs计算outputs的对象,它关于怎么计算的定义一般在outputs里面,outputs一般是一个符号表达式。

  • inputs:输入是一个python的列表list,里面存放的是将要传递给outputs的参数,这里inputs不用是共享变量shared variables
  • outputs: 输出是一个存放变量的列表list或者字典dict,如果是字典的话,keys必须是字符串。这里代码段2中的outputs是cost,可以把它看成是一个损失函数值,它由输入inputs,updates以后的shared_variable的值和givens的值共同计算得到。在这里inputs只是在采取minibatch算法时准备抽取的样本集的索引,根据这个索引得到givens数据,是模型的输入变量即输入样本集,而updates中的shared_variable是模型的参数,所以最后由模型的输入和模型参数得到了模型输出就是cost。
  • updates: 这里的updates存放的是一组可迭代更新的量,是(shared_variable, new_expression)的形式,对其中的shared_variable输入用new_expression表达式更新,而这个形式可以是列表,元组或者有序字典,这几乎是整个算法的关键也就是梯度下降算法的关键实现的地方。 看示例代码段1中updates是怎么来的,cost最后计算出来的可以看作是损失函数,是关于所有模型参数的一个函数,其中的模型参数是self.params,所以gparams是求cost关于所有模型参数的偏导数,其中模型参数params存放在一个列表里面,所有偏导数gparams也存放在一个列表里面,然后用来一个for循环,每次从两个列表里面各取一个量,则是一个模型参数和这个参数之于cost的偏导数,然后把它们存放在updates字典里面,字典的关键字就是一个param,这里一开始声明的所有params都是shared_variable,对应的这个关键字的值就是这个参数的梯度更新,即param-gparam*lr,其实这里的param-gparam*lr就是new_expression,所以这个updates的字典就构成了一对(shared_variable, new_expression)的形式。所以这里updates其实也是每次调用function都会执行一次,则所有的shared_variable都会根据new_expression更新一次值。
  • givens:这里存放的也是一个可迭代量,可以是列表,元组或者字典,即每次调用function,givens的量都会迭代变化,但是比如上面的示例代码,是一个字典,不论值是否变化,都是x,字典的关键字是不变的,这个x值也是和input一样,传递到outputs的表达式里面的,用于最后计算结果。所以其实givens可以用inputs参数来代替,但是givens的效率更高

theano function参数的更多相关文章

  1. [SAP ABAP开发技术总结]Form(subroutine)、Function参数传值传址

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  2. js中function参数默认值

    --在dreamweaver做网站时,函数定义是在一个*.js文件中,其中定义了一个func,有四个参数,function func(string1,url,flag,icon),然后在另一个asp中 ...

  3. JavaScript的function参数的解释

    在js里面写function时其参数在内部表示为一个数组.也就是说:我们定义一个function,里面的参数和将来调用这个function时传入的实参是毫无关系的,如果我们要定义一个function ...

  4. function参数

    expr_without_variable { Z_LVAL($$.u.constant) = ; zend_do_pass_param(&$, ZEND_SEND_VAL, Z_LVAL($ ...

  5. js function 参数

    JS 中 函数的调用非常完美, 例如 var myFun=function( num1,num2){ return num1+num2;} 调用喊出 1) myFun(1,1) 2) myFun(); ...

  6. jquery 添加方法 : $.fn.方法名 = function(参数a,b,c){

    $.fn.image_checked = function(self,status,img_body,csrf_token){             $(this).live('click', fu ...

  7. renderer:function参数介绍

    转载自:http://blog.sina.com.cn/s/blog_9eaf28f90101b7y3.html renderer:function(value, cellmeta, record, ...

  8. typedef 返回类型(*Function)(参数表) ——typedef函数指针

    //首先看一下函数指针怎么用 #include <iostream> using namespace std; //定义一个函数指针pFUN,它指向一个返回类型为char,有一个整型的参数 ...

  9. 【转】JavaScript里Function函数实现可变参数

    转载:  http://www.oschina.net/question/54100_15938 使用javascript类库函数时,经常会遇到一个函数,可以使用不同个数的参数的情况 比如:exp(v ...

随机推荐

  1. Xbim.GLTF源码解析(三):Builder类

    原创作者:flowell,转载请标明出处:https://www.cnblogs.com/flowell/p/10838706.html IFC提取转换成GLTF的逻辑在Builder类中, Buil ...

  2. 如何让OKR实践变得更简单一些

    什么是OKR 近几年OKR的概念在国内开始流行起来了,之前公司也有人想实施OKR,但现在看来之前的OKR实施者只是在哪儿看了一下OKR的资料,本着跟老板邀功的想法比较功利的在推进,所以基本没有效果,今 ...

  3. SpringBoot与MybatisPlus整合之公用字段填充(十一)

    在实际开发中,适合用于记录创建人修改人 pom.xml <dependencies> <dependency> <groupId>org.springframewo ...

  4. Office中国在这个开个博客

    Office中国在这个开个博客,先来show一下我的网站 Office中国/Access中国  http://www.office-cn.net Office中国百科:   http://baike. ...

  5. 微信授权就是这个原理,Spring Cloud OAuth2 授权码模式

    上一篇文章Spring Cloud OAuth2 实现单点登录介绍了使用 password 模式进行身份认证和单点登录.本篇介绍 Spring Cloud OAuth2 的另外一种授权模式-授权码模式 ...

  6. 《Effective Java》 读书笔记(五)使用依赖注入取代原本的资源依赖

    相信接触过Spring的同学,对于依赖注入并不陌生. 刚开始在听说这个名字的时候,一直不明白到底什么叫依赖注入,后来才发现,依赖注入一直都存在我们日常代码中,只是我们没有刻意的把它提出来,然后再取这样 ...

  7. SROP的一个实例

    以前一直只是大概看过这种技术,没实践过,今天刚好遇到一道题,实践了一波,确实很方便 unmoxiao@cat ~/s/pd_ubuntu> r2 -A smallest 00:54:15 War ...

  8. zookeeper集群搭建2.7

    http://blog.csdn.net/uq_jin/article/details/51513307

  9. 原生JS实现栈结构

    1. 前言 栈,是一种遵从后进先出(LIFO,Later-In-First-Out)原则的有序集合.新添加的元素都保存在栈的一端,称作栈顶,另一端叫做栈底.在栈中,新元素都靠近栈顶,旧元素都靠近栈底. ...

  10. Medium高赞系列,如何正确的在Stack Overflow提问

    在我们写程序的时候,经常会遇到各色各样的问题,在国内,小伙伴们经常去知乎.CSDN.博客园.思否.安卓巴士等地方提问并获得答案. 这些地方汇集了很多优秀的.爱分享的国内资源.小编比较自豪的一件事情就是 ...