1. train_rbm = theano.function(
  2. [index], # inputs
  3. cost, # outputs
  4. updates=updates,
  5. givens={
  6. x: train_set_x[index×batch_size: (index + 1batch_size]
  7. },
  8. name='train_rbm'
  9. )

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. TwoHandleSlider/RangeSlider

    项目需求:双滑块slider,可以实现选择一个范围 (一)添加两个slider,并把背景以及fill设置为透明,并去除RaycastTarget (二)在背景下添加个一个image,背景图为滑块划过后 ...

  2. Unity3d粒子特效:制作火焰效果

    效果 分析 真实的火焰效果,通常包括:火.火光.火星等组成部分,而火焰对周围环境的烘焙,可以通过灯光实现,如点光源. 针对火焰组成部分,我们可以创建对应的粒子系统组件,实现相应的效果,如下图所示: 1 ...

  3. django & celery - 关于并发处理能力和内存使用的小结

    背景 众所周知,celery 是python世界里处理分布式任务的好助手,它的出现结合赋予了我们强大的处理异步请求,分布式任务,周期任务等复杂场景的能力. 然鹅,今天我们所要讨论的则是如何更好的在使用 ...

  4. 是true还是false呢?

    古来圣贤皆寂寞 惟有[努]者留其名 ---[努]原文:饮 先总结一个小知识点:0.null.NaN.undefined."" 转成布尔值为false 其他则一律返回true 1.首 ...

  5. 第三十五章 POSIX共享内存

    POSIX共享内存函数介绍 shm_open 功能: 用来创建或打开一个共享内存对象 原型: int shm_open(const char *name, int oflag, mode_t mode ...

  6. 学习笔记30_ORM框架

    *在以往DAL层中,操作数据库使用DataTable,如果使得数据表DataTable转为List<>的话,写错属性名,在编译阶段是查不出来的,而ORM框架能解决此问题. *ORM是指面向 ...

  7. Java虚拟机之垃圾回收

    简述 Java与那些较传统的语言比如C++有个很大不同就是垃圾回收策略了.前者通常是虚拟机自动帮我们做了,而后者就需要我们手动来完成. Java虚拟机帮我们完成了垃圾回收,是不是意味着我们就不用完全去 ...

  8. NOIP模拟 4

    T1没开longlong T2忘了有向... T3是个好题,可以说将复杂度从N^2优化到NlogN是一个质的飞跃 考虑分治(要想出log可不就要分治么!(segtree也行 但我不会) 对于一个分治区 ...

  9. 201871010114-李岩松《面向对象程序设计(java)》第八周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

  10. X-Admin&ABP框架开发-RBAC

    在业务系统需求规划过程中,通常对于诸如组织机构.用户和角色等这种基础功能,通常是将这部分功能规划到通用子域中,这也说明了,对于这部分功能来讲,是系统的基石,整个业务体系是建立于这部分基石之上的,当然, ...