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类型的张量.

本研究基于扩展卡尔曼滤波(EKF)方法,构建了一套用于航天器姿态与轨道协同控制的仿真系统。该系统采用参数化编程设计,具备清晰的逻辑结构和详细的代码注释,便于用户根据具体需求调整参数。所提供的案例数据可直接在MATLAB环境中运行,无需额外预处理步骤,适用于计算机科学、电子信息工程及数学等相关专业学生的课程设计、综合实践或毕业课题。 在航天工程实践中,精确的姿态与轨道控制是保障深空探测、卫星组网及空间设施建设等任务成功实施的基础。扩展卡尔曼滤波作为一种适用于非线性动态系统的状态估计算法,能够有效处理系统模型中的不确定性与测量噪声,因此在航天器耦合控制领域具有重要应用价值。本研究实现的系统通过模块化设计,支持用户针对不同航天器平台或任务场景进行灵活配置,例如卫星轨道维持、飞行器交会对接或地外天体定点着陆等控制问题。 为提升系统的易用性与教学适用性,代码中关键算法步骤均附有说明性注释,有助于用户理解滤波器的初始化、状态预测、观测更新等核心流程。同时,系统兼容多个MATLAB版本(包括2014a、2019b及2024b),可适应不同的软件环境。通过实际操作该仿真系统,学生不仅能够深化对航天动力学与控制理论的认识,还可培养工程编程能力与实际问题分析技能,为后续从事相关技术研究或工程开发奠定基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值