热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

theano——shared,function(outputs,updates,givens)

theano下的functions(fromtheanoimportfunction)的两个重要性质:多个outputs;多

  • theano 下的 functions (from theano import function)的两个重要性质:
    • 多个 outputs;
    • 多个 updates;

1. shared


  • shared 与 theano.tensor.matrix()/vector() 的区别在于,tensor.matrix/vector 符号变量不需要初始化,而 shared 变量则需要初始化赋值;

>>> import theano
>>> import theano.tensor as T >>> state = theano.shared(0)
>>> type(state)
theano.tensor.sharedvar.ScalarSharedVariable
>>> state.get_value(borrow=True)
array(0)# shared 型变量,通过 get_value 取出其值;>>> x = T.iscalar('x')
>>> type(x)
theano.tensor.var.TensorVariable# tensor value(thenao.tensor模块下的变量?)是没有get_value成员函数的>>> type(x+state)
theano.tensor.var.TensorVariable

2. updates

>>> counter = function([x], state, updates=[(state, state+x)])
>>> counter(5)
>>> state.get_value(borrow=True)
5
>>> counter(6)
>>> state.get_value(borrow=True)
11

不使用可选参数updates:

>>> state += x# 此时state的类型已自动转换为tensor value,不再具有get_value的成员
>>> counter = theano.function([x], state)
>>> counter(5)
array(5)
>>> state.get_value()
AttributeError: 'TensorVariable' object has no attribute 'get_value'

theano.function 的 updates, 二元 tuple 构成的 list,

[(a, a+1), (b, b+1)]

其含义其实为,a = a+1, b = b+1;

所以常见与,梯度下降算法中的权值的更新,如下:

updates = [(W, W-eta*delta_W),(b, b-eta*delta_b)]

3. givens

test_model = theano.function(inputs=[idx],outputs=layer3.error(y),givens={x: test_set_x[idx*batch_size:(idx+1)*batch_size],y: test_set_y[idx*batch_size:(idx+1)*batch_size]}
)
valid_model = theano.function(inputs=[idx],outputs=layer3.error(y),givens={x: valid_set_x[idx*batch_size:(idx+1)*batch_size],y: valid_set_y[idx*batch_size:(idx+1)*batch_size]}
)

推荐阅读
  • Python进阶笔记:深入理解装饰器、生成器与迭代器的应用
    本文深入探讨了Python中的装饰器、生成器和迭代器的应用。装饰器本质上是一个函数,用于在不修改原函数代码和调用方式的前提下为其添加额外功能。实现装饰器需要掌握闭包、高阶函数等基础知识。生成器通过 `yield` 语句提供了一种高效生成和处理大量数据的方法,而迭代器则是一种可以逐个访问集合中元素的对象。文章详细解析了这些概念的原理和实际应用案例,帮助读者更好地理解和使用这些高级特性。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • 提升Android开发效率:Clean Code的最佳实践与应用
    在Android开发中,提高代码质量和开发效率是至关重要的。本文介绍了如何通过Clean Code的最佳实践来优化Android应用的开发流程。以SQLite数据库操作为例,详细探讨了如何编写高效、可维护的SQL查询语句,并将其结果封装为Java对象。通过遵循这些最佳实践,开发者可以显著提升代码的可读性和可维护性,从而加快开发速度并减少错误。 ... [详细]
  • 微信小程序实现类似微博的无限回复功能,内置云开发数据库支持
    本文详细介绍了如何利用微信小程序实现类似于微博的无限回复功能,并充分利用了微信云开发的数据库支持。文中不仅提供了关键代码片段,还包含了完整的页面代码,方便开发者按需使用。此外,HTML页面中包含了一些示例图片,开发者可以根据个人喜好进行替换。文章还将展示详细的数据库结构设计,帮助读者更好地理解和实现这一功能。 ... [详细]
  • 本文总结了JavaScript的核心知识点和实用技巧,涵盖了变量声明、DOM操作、事件处理等重要方面。例如,通过`event.srcElement`获取触发事件的元素,并使用`alert`显示其HTML结构;利用`innerText`和`innerHTML`属性分别设置和获取文本内容及HTML内容。此外,还介绍了如何在表单中动态生成和操作``元素,以便更好地处理用户输入。这些技巧对于提升前端开发效率和代码质量具有重要意义。 ... [详细]
  • 在Android应用开发中,实现与MySQL数据库的连接是一项重要的技术任务。本文详细介绍了Android连接MySQL数据库的操作流程和技术要点。首先,Android平台提供了SQLiteOpenHelper类作为数据库辅助工具,用于创建或打开数据库。开发者可以通过继承并扩展该类,实现对数据库的初始化和版本管理。此外,文章还探讨了使用第三方库如Retrofit或Volley进行网络请求,以及如何通过JSON格式交换数据,确保与MySQL服务器的高效通信。 ... [详细]
  • 在Java编程中,`String`对象既可以用作对象,也可以用作基本类型。本文深入解析了`String`对象中`equals`方法与`==`运算符的区别及其应用场景。`equals`方法用于比较两个字符串的内容是否相同,而`==`运算符则用于比较两个字符串对象的引用是否相同。通过具体示例和代码片段,文章详细阐述了这两种比较方式的内在机制和适用场景,帮助开发者更好地理解和使用`String`对象的比较操作。 ... [详细]
  • 本文深入探讨了JavaScript中`this`关键字的多种使用方法和技巧。首先,分析了`this`作为全局变量时的行为;接着,讨论了其在对象方法调用中的表现;然后,介绍了`this`在构造函数中的作用;最后,详细解释了通过`apply`等方法改变`this`指向的机制。文章旨在帮助开发者更好地理解和应用`this`关键字,提高代码的灵活性和可维护性。 ... [详细]
  • 本文深入解析了Java 8并发编程中的`AtomicInteger`类,详细探讨了其源码实现和应用场景。`AtomicInteger`通过硬件级别的原子操作,确保了整型变量在多线程环境下的安全性和高效性,避免了传统加锁方式带来的性能开销。文章不仅剖析了`AtomicInteger`的内部机制,还结合实际案例展示了其在并发编程中的优势和使用技巧。 ... [详细]
  • 【图像分类实战】利用DenseNet在PyTorch中实现秃头识别
    本文详细介绍了如何使用DenseNet模型在PyTorch框架下实现秃头识别。首先,文章概述了项目所需的库和全局参数设置。接着,对图像进行预处理并读取数据集。随后,构建并配置DenseNet模型,设置训练和验证流程。最后,通过测试阶段验证模型性能,并提供了完整的代码实现。本文不仅涵盖了技术细节,还提供了实用的操作指南,适合初学者和有经验的研究人员参考。 ... [详细]
  • 本文介绍了一种算法,用于计算当前日期在本年度的具体周数。该方法由作者王峰提出,通过私有函数 `weekOfYear` 实现,能够准确地确定当前日期在一年中的周位置。此算法在日历计算和时间管理中具有广泛应用,适用于各种编程语言和应用场景。 ... [详细]
  • 深入解析:React与Webpack配置进阶指南(第二部分)
    在本篇进阶指南的第二部分中,我们将继续探讨 React 与 Webpack 的高级配置技巧。通过实际案例,我们将展示如何使用 React 和 Webpack 构建一个简单的 Todo 应用程序,具体包括 `TodoApp.js` 文件中的代码实现,如导入 React 和自定义组件 `TodoList`。此外,我们还将深入讲解 Webpack 配置文件的优化方法,以提升开发效率和应用性能。 ... [详细]
  • 本课程深入探讨了 Python 中自定义序列类的实现方法,涵盖从基础概念到高级技巧的全面解析。通过实例演示,学员将掌握如何创建支持切片操作的自定义序列对象,并了解 `bisect` 模块在序列处理中的应用。适合希望提升 Python 编程技能的中高级开发者。 ... [详细]
  • 深入解析 Python 中的 NumPy 加法函数 numpy.add() ... [详细]
  • 清华大学出版社 | 杨丹:基于MATLAB机器视觉的黑色素瘤皮肤癌检测技术及源代码分析(第1689期)
    清华大学出版社 | 杨丹:基于MATLAB机器视觉的黑色素瘤皮肤癌检测技术及源代码分析(第1689期) ... [详细]
author-avatar
东隅海纳堂_684
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有