【胶囊网络论文解读】EFFICIENT-CAPSNET: CAPSULE NETWORK WITH SELF-ATTENTION ROUTING

EFFICIENT-CAPSNET:

CAPSULE NETWORK WITHSELF-ATTENTION ROUTING

作者:Vittorio Mazzia, Francesco Salvetti, Marcello Chiaberge

一、Background

  • 度卷积神经网络是依靠大量的数据和具有大量特征映射的层来完成学习和更新的,这个过程并不是非常高效,对于大型数据集来说,这意味着有大量冗余的特征检测器。
  • 针对这一问题,胶囊网络是一个有发展潜力的解决方案——它可以扩展当前的卷积网络,并可以令人工视觉感知到高效编码所有特征仿射变换的过程。
  • 由于内在具有更好的概括能力,一个胶囊网络理论上可以使用相当少的参数数量,并获得更好的结果。

二、Motivation

  • 然而,很少有人关注胶囊网络的效率问题以及表示知识转换的内在能力。事实上,目前提出的所有模型解决方案都需要大量的参数,这些参数不可避免地隐藏了胶囊应该提供的内在泛化能力。
  • 注意机制允许动态地更加重视那些被认为与所分析的问题更相关的特定特征。这种想法在许多深度学习应用程序中获得了广泛的应用。
  • 研究者用一个新颖的非迭代的路由算法替代了动态路由,利用自我注意机制,这种新颖的算法可以很容易地对小数量的胶囊进行处理。

三、Model

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
", &tol); // allocate memory for solution ocp_nlp_out* out = ocp_nlp_out_create(solver_caps你可以使用 awk 命令来计算两个日期时间之间的时间差。 假设你有两个日期时间字符串 "ule->dims); ocp_nlp_solver_memory* solver_mem = ocp_nlp_solver_memory_create(solver_capsule->dims); 2023-05-29 15:22:10.845" 和 "2023-05-30 15:12:11 // set up simulation loop int sim_time = 1000; double x_current[NX]; double u_current[NU.747",你可以使用以下 awk 命令计算它们之间的时间差: ``` awk 'BEGIN { start]; double x_reference[NX]; double u_reference[NU]; double x_traj[(NN+1)*NX]; double u = mktime("2023 05 29 15 22 10.845"); end = mktime("2023 05 30_traj[NN*NU]; double t_current = 0.0; double t_next; // run simulation loop for 15 12 11.747"); diff = end - start; days = int(diff / 86400); hours = int((diff % 86400) / 3600); minutes = int((diff % 3600) / 60); (int i = 0; i < sim_time; i++) { // get current state for (int j = seconds = diff % 60; printf("Time difference: %d days %02d:%02d:%02d\n", days,0; j < NX; j++) { x_current[j] = ocp_nlp_out_get(out, i, "x", hours, minutes, seconds); }' ``` 这个命令将会输出 "Time difference: 1 days 23:50:00 j); } // calculate reference trajectory t_next = t_current + T; x_reference[0] = cos(",表示两个日期时间之间相差了 1 天 23 小时 50 分钟 0 秒。 解释2*PI*t_next); x_reference[1] = sin(2*PI*t_next); x_reference[2] = -一下这个命令: - `mktime("2023 05 29 15 22 10.845")` 和2*PI*sin(2*PI*t_next); x_reference[3] = 2*PI*cos(2*PI*t_next `mktime("2023 05 30 15 12 11.747")` 用于将日期时间字符串转换); // update reference trajectory for (int j = 0; j < NN; j++) { for (int k为秒数。 - `end - start` 用于计算两个日期时间之间的时间差(单位为秒) = 0; k < NX; k++) { x_traj[j*NX+k] = ocp_nlp_out_get(out,。 - `int(diff / 86400)` 用于计算时间差中包含的天数。 - `int((diff j+i, "x", k); } for (int k = 0; k < NU; k++) { u % 86400) / 3600)` 用于计算时间差中不足一天的小时数。 - `int_traj[j*NU+k] = ocp_nlp_out_get(out, j+i, "u", k); } } for((diff % 3600) / 60)` 用于计算时间差中不足一小时的分钟数。 - `diff % 60` 用于计算时间差中不足一分钟的秒数。 - `printf("Time difference: % (int j = 0; j < NX; j++) { x_traj[NN*NX+j] = x_reference[j]; d days %02d:%02d:%02d\n", days, hours, minutes, seconds)` 用于输出时间差。 你 } // update solver parameters status = ocp_nlp_solver_set_parameter(solver_capsule, "x0", x可以根据自己的需求修改日期时间字符串和输出格式。如果你想计算更为复杂的时间差,_current); status = ocp_nlp_solver_set_parameter(solver_capsule, "p", u_reference); status = ocp_n比如跨越多个月或多年的时间差,可以使用更为高级的方式来处理日期时间。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值