2021-10-24

[软件工程应用与实践]lingvo代码阅读

2021SC@SDUSC

lingvo.core.ops包

assert_kernels.cc

lingvo.core.ops.assert_shape_match(x, y, msg='', name=None)

在这里插入图片描述

断言shape向量x和y是否匹配
x[i] == y[i] 或 x[i] == -1 或 y[i] == -1时, xy 第 i 维匹配

参数:

  • xy 都是数据类型为int32的张量(tensor), 形状向量
  • msg 可选字符串, 默认为空. 为断言失败时的提示信息
  • name 操作名称

该操作返回创建好的operations

语法explicit的工程启示 :
explicit关键字的cpp手册中有如下解释

指定构造函数或转换函数 (C++11起)为显式, 即它不能用于隐式转换复制初始化.

explicit 指定符可以与常量表达式一同使用. 函数若且唯若该常量表达式求值为 true 才为显式. (C++20起)

构造函数被explicit修饰后, 就不能再被隐式调用了. 即当参数类型需要隐式转换时, explicit修饰后, 就不能通过编译.
该修饰应能用就用——当我们写代码时, 提前预料到, 某种参数类型转化或许会出问题, 就不要再把这种问题交给编译器了.

lingvo.core.ops.assert_same_dim0(x, msg='', name=None)

在这里插入图片描述
断言所有输入张量都是非标量且具有相同的第0次dim大小.

参数

  • x: 张量对象的列表。张量的列表。
  • msg name与lingvo.core.ops.assert_shape_match(x, y, msg='', name=None)中的相同

该操作返回创建好的operations

random_ops_kernels.cc

lingvo.core.ops.random_permutation_sequence(num=1, batch=1, repeat=False, seed=0, name=None)

生成随机向量
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
参数

  • num: int默认为1. 表示id的数量
  • batch: int默认为1. 每个输出都是大小为batch的向量. 只有当前时点的batch值可以小于full batch.
  • repeat: bool默认为false.如果为true,则该操作在一个时间周期之后继续生成随机样本. 若为false, 会以tf.errors.OutOfRangeError终止.
  • seed: int默认为0. 随机种子.
  • name: 同上. 操作名

返回值
int32类型的张量. 每个输出都是一个大小为batch的向量.

tf.errors.OutOfRangeError成因: 在执行训练的时候, 队列会被后台的线程填充好. 如果设置了最大训练迭代数(epoch), 在某些时候, 样本出队的操作可能会抛出一个tf.OutOfRangeError的错误. 这是因为tensorflow的队列已经到达了最大实际的最大迭代数, 没有更多可用的样本了. 当写代码出现不确定情况时, 可用try..except ..finally结构处理该error.

best_step_op_kernels.cc

lingvo.core.ops.best_step(hist_file, tol=0, minimize=True, metric='', name=None)

从数据中确定最佳全局步骤。

在这里插入图片描述
从Tensorflow一次事件中抽取数值
在这里插入图片描述
从文档hist_file中抽取数据
在这里插入图片描述
在这里插入图片描述
参数

  • hist_filestring: 记录每一步分值的文档. 或者匹配/path_to_file/events.out.tfevents*格式的tf事件文件的文件模式。
  • tolfloat: 默认为0. 之前的最佳分数和当前分数之间的差值必须大于此值才能触发更新. 触发阈值.
  • minimizebool: 默认为true. 如果metric被最小化。在hist_file中记录, 如果为True, 分数越小越好, 如果为False, 分数越大越好.
  • metricstring: 默认为空. 被跟踪的度量的名称.
  • name: 同上.

返回值
int64类型的张量.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值