NTM中attr的用法

这篇具有很好参考价值的文章主要介绍了NTM中attr的用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

代码1

@attrs
class CopyTaskParams(object):
    name = attrib(default="copy-task")
    controller_size = attrib(default=100, convert=int)
    controller_layers = attrib(default=1,convert=int)
    num_heads = attrib(default=1, convert=int)
    sequence_width = attrib(default=8, convert=int)
    sequence_min_len = attrib(default=1,convert=int)
    sequence_max_len = attrib(default=20, convert=int)
    memory_n = attrib(default=128, convert=int)
    memory_m = attrib(default=20, convert=int)
    num_batches = attrib(default=50000, convert=int)
    batch_size = attrib(default=1, convert=int)
    rmsprop_lr = attrib(default=1e-4, convert=float)
    rmsprop_momentum = attrib(default=0.9, convert=float)
    rmsprop_alpha = attrib(default=0.95, convert=float)

解析

这段代码是使用Python的attrs库定义一个class,名为CopyTaskParams。这个class的对象包含了一系列的参数,用于控制复制任务模型的行为。下面解释一下每个参数的含义:

  • name: str,复制任务的名称,默认值为"copy-task"。
  • controller_size: int,控制器的大小,默认值为100。
  • controller_layers: int,控制器的层数,默认值为1。
  • num_heads: int,注意力机制中头的数量,默认值为1。
  • sequence_width: int,序列的宽度,默认值为8。
  • sequence_min_len: int,序列的最小长度,默认值为1。
  • sequence_max_len: int,序列的最大长度,默认值为20。
  • memory_n: int,记忆矩阵的行数,默认值为128。
  • memory_m: int,记忆矩阵的列数,默认值为20。
  • num_batches: int,训练时的批次数,默认值为50000。
  • batch_size: int,每个批次的大小,默认值为1。
  • rmsprop_lr: float,RMSProp中的学习率,默认值为1e-4。
  • rmsprop_momentum: float,RMSProp中的动量值,默认值为0.9。
  • rmsprop_alpha: float,RMSProp中的alpha值,默认值为0.95。

这个类是使用 Python 库 attrs 中的装饰器 attrib 定义的,该装饰器使用方法类似于 Python 标准库中的 property 装饰器。attrib 装饰器帮助我们自动生成实例变量,init 方法以及默认参数值等等,并提供验证和转换等功能。
通过使用 attrib 装饰器,我们可以在属性中设置 default 参数,来指定属性的初始值。convert 参数则指定该属性的类型转换方法。例如,convert=int 在将其赋为整数值之前,会尝试将其转换为整数类型。
另外,值得注意的是,在类中未定义 strrepr 方法时,它们将使用 attrs 帮助我们自动生成,以便在实例被打印时很好地显示。
总之,通过使用 attrs,有助于减少模板代码的编写和维护。同时,它还提供了很多其他有用的功能,如比较实例,填写数据缺失值等等。

代码2

import attr

@attr.s
class Point:
    x = attr.ib(default=0)
    y = attr.ib(default=0)
p1 = Point(x=1, y=2)
p2 = attr.evolve(p1, x=3)
p1 = attr.evolve(p1, x=3)

attr.evolve 是 attrs 库中的一个函数,其作用是创建一个原始对象的副本,并替换其中的一些属性值。它的函数签名如下:

attr.evolve(inst, **changes)

其中 inst 是需要进行修改的原始对象实例,changes 是一个字典,用于指定需要修改的属性和对应的新值。函数返回值是一个新生成的对象实例。
具体来说,changes 的键是需要进行修改的属性名,值是对应的新值。例如,假设有一个 Point 类,它用来表示二维平面上的点坐标。文章来源地址https://www.toymoban.com/news/detail-461157.html

  • 现在我们创建了一个名为 p1 的 Point 对象实例。
  • 如果我们需要修改这个对象实例中的 x 属性,可以使用 evolve 方法。例如,要把它的 x 属性值从 1 改为 3。
  • 这样,p2 对象实例的 x 属性值就被修改为了 3,而 y 属性的值保持原来不变。
  • 需要注意的是,原始对象实例 p1 的值并没有发生改变,evolve 方法并不会修改原始对象,而是生成一个新的对象实例。如果希望将原始对象实例也进行修改,要对p1操作。

到了这里,关于NTM中attr的用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Day 7_权限管理_facl权限+attr权限

    ​ 主要用于精细化的权限控制(U 、G、O权限过大) ● getfacl:查询文件的ACL ● setacl : 配置文件的ACL -m 组 或 用户 对普通文件或目录进行ACL权限配置 -x 移除用户或组对文件的某权限 -b 移除文件的所有ACL授权 -d (继承)默认文件权限 作用于目录,使之目录新建文件添加默认权

    2023年04月08日
    浏览(16)
  • React styled-components(二)—— props、attrs属性

    styled-components 可以 props 穿透,把属性穿透到元素中。 通常,用 css 的 input 组件实现一个密码输入框写法如下: 接下来用 styled-components 来实现,首先生成一个 input 组件,新建 Demo.js 文件: App.js 中引入 Demo.js 文件: 页面效果: 接下来,给生成的 ContextP 组件添加 type=password

    2023年04月18日
    浏览(28)
  • Vue中v-bind=“$attrs”的使用方法

    主要用于组件之间的隔代传值。例如有 父组件A,子组件B,孙组件C 三个组件。 在A组件中传值给C,可直接在B中的C上设置v-bind=\\\"$attrs\\\",然后在C组件中用prop接收,此时就直接把值传给了C。 用法如下: 组件A 组件B 组件C 组件隔代通讯其它相关用法: Vue中v-on=“$listeners“的使用

    2024年02月14日
    浏览(27)
  • 解决uniapp编译的微信小程序不支持v-bind=“$attrs“

    原生组件无法支持v-bind;用户自定义组件以及第三方扩展组件才支持v-bind v-model属性 在高版本的vue3+vite中使用父组件传递下来的props中的某一个属性,作为当前组件的子组件的v-model入参,那么将会报错 [vite] [plugin:vite:vue] v-model cannot be used on a prop, because local prop bindings are not wr

    2024年02月08日
    浏览(34)
  • vue多层组件监听 v-bind=“$attrs“,v-on=“$listeners“

    高层级向低层级传值 v-bind=“$attrs” v-bind=\\\"$attrs\\\" 主要用于高层组件向低层组件隔代传值。 假如有 父组件A,子组件B,孙组件C 三个组件。 A组件中的值需要直接传给C组件,那么就需要在B组件中设置v-bind=“$attrs”,然后在A组件中传值,在C组件中用prop接收,这样就可以把值从

    2024年01月23日
    浏览(36)
  • 在SVG.js中设置元素大小很简单,调用resize()、size()、width()、height()和attr()的方法

    SVG.js是一款基于JavaScript的强大的图形库,可以创建和操作SVG元素。SVG是可伸缩矢量图形的缩写,即矢量图像,它由矢量图形对象组成,可以无损放大或缩小而不失真。在SVG.js中设置元素大小是非常重要的一部分,因为这样可以使您的图形适应不同屏幕分辨率和大小。本文将探

    2024年02月03日
    浏览(34)
  • linux_设置线程属性-pthread_attr_t结构体-设置线程分离态-修改线程栈的大小-NPTL

    接上一篇:linux_线程分离pthread_detach函数-线程取消pthread_cancel函数-线程相等pthread_equal函数   本次来分享linux线程的属性设置,线程属性主要是一个结构体 pthread_attr_t ,这个结构体中的成员就是线程的属性了,需要通过一系列的函数来修改,话不多说,上菜: 此博主在CSD

    2024年02月02日
    浏览(31)
  • Android studio的报错提示:AAPT: error: ‘‘ is incompatible with attribute background (attr) reference|color

    Android studio的报错提示: 解决问题,看如下图: 其他学习资料: 1、付费专栏《Android kotlin入门到进阶系列讲解》:https://blog.csdn.net/qq_35091074/category_11036895.html 2、免费专栏《Android kotlin开源项目-功能》(可提供源码):https://blog.csdn.net/qq_35091074/category_12005202.html

    2024年02月08日
    浏览(30)
  • vue3中setup的两个参数 props,context (attrs,emit,slots),vue3中的双向数据绑定自定义事件emit和v-model

    目录 setup函数 props参数 案例 第一种写法(用setup函数的方式):  第二种方法(语法糖形式即setup写入script标签中)也可以传值,  context (attrs,emit,slots) vue3中的双向数据绑定自定义事件emit和v-model emit自定义事件 v-model 有两个参数分别是 props,context 即 props参数是一个 对象 ,

    2024年02月10日
    浏览(32)
  • 初学Vue(全家桶)-第n天(vue2):关于v-bind=“$attrs“、v-bind=“$props“ 和v-on=“$listeners“的使用

    1、 v-bind=\\\"$props\\\" : 可以将父组件的所有props下发给它的子组件,子组件需要在其props:{} 中定义要接受的props。 2、 v-bind=\\\"$attrs\\\" : 将调用组件时的组件标签上绑定的 非props 的属性(class和style除外)向下传递。在 子组件中应当添加inheritAttrs: false (避免父作用域的不被认作props的特性绑

    2024年02月04日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包