论文阅读:A2-Nets: Double Attention Networks

A2-Nets: Double Attention Networks(NIPS 2018)

文章
  论文的名字很好,反映了本文的核心想法:首先使用second-order attention pooling将整幅图的所有关键的特征搜集到了一个集合里,然后用另一种attention机制将这些特征分别图像的每个location。
在这里插入图片描述
从上图看到,模型先会计算出一堆global descriptors,然后每个位置会根据自己本身的特征来计算对每个global descriptor的权重,从而能对自己的特征是一个补充,比如图上的红框处是一个baseball,所以它对baseball的权重就小,对其他的权重就大一些。然后又从上图(b)中又可以看出,得到了第二步的所有位置的attention vectors之后,组成的矩阵与global descriptors相乘便恢复到最开始的大小,其实输入输出就很卷积很像。写成数学形式就是下面这样,其中i代表location:
在这里插入图片描述
  首先来看看第一步,Feature Gathering。这步中使用了Bilinear CNN,其实就是用两个CNN模型,将得到的特征做外积(outer product&

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 用 Java 实现根据 cp-nets 图生成 cp-nets 导出图的方法如下: 1. 读取 cp-nets 图的数据结构,包括点和边的信息。 2. 建立一个新图,用于存储 cp-nets 导出图。 3. 根据 cp-nets 图的点和边的信息,在新图中创建点和边。 4. 应用 cp-nets 导出算法,在新图中生成 cp-nets 导出图。 5. 输出 cp-nets 导出图的数据结构。 下面是一个简单的实现示例: ``` import java.util.ArrayList; import java.util.List; public class CPNet { private List<Node> nodes; private List<Edge> edges; public CPNet(List<Node> nodes, List<Edge> edges) { this.nodes = nodes; this.edges = edges; } public List<Node> getNodes() { return nodes; } public List<Edge> getEdges() { return edges; } public static class Node { private String name; public Node(String name) { this.name = name; } public String getName() { return name; } } public static class Edge { private Node source; private Node target; public Edge(Node source, Node target) { this.source = source; this.target = target; } public Node getSource() { return source; } public Node getTarget() { return target; } } public CPNet export() { List<Node> exportedNodes = new ArrayList<>(); List<Edge> exportedEdges = new ArrayList<>(); // Apply export algorithm to generate exported graph return new CPNet(exportedNodes, exportedEdges); } public static void main(String[] args) { List<Node> nodes = new ArrayList<>(); nodes.add(new Node("A")); nodes.add(new Node("B")); nodes.add(new Node("C")); List<Edge> edges = new ArrayList<>(); edges.add(new Edge(nodes.get(0), nodes.get(1))); edges.add(new Edge(nodes.get(1), nodes.get(2))); CPNet cpNet = new CPNet(nodes, edges); ### 回答2: CP-nets(条件偏好网络)是一种用于表示个体偏好关系的图形模型。根据CP-nets图生成CP-nets导出图,可以使用Java编程语言实现。 首先,我们需要定义一个CP-nets图的数据结构,可以使用邻接矩阵表示法或邻接链表表示法。假设我们使用邻接链表来表示CP-nets图,其中每个节点表示一个条件偏好关系。 接下来,我们可以使用Java的图形化库(比如JavaFX或Swing)来绘制CP-nets导出图。我们可以根据CP-nets图的数据结构,在图形界面上绘制节点和边,以表示条件偏好关系。 具体步骤如下: 1. 创建一个Java项目,并引入图形化库所需的依赖。 2. 设计CP-nets图的数据结构,可以包括节点类和边类。节点类应包含节点的属性,如名称、偏好值等。边类应包含边的属性,如起始节点、结束节点等。 3. 实现CP-nets图的读取功能,可以从文件中读取CP-nets图的数据,或者通过用户输入获取。 4. 使用图形化库创建一个窗口,作为CP-nets导出图的界面。 5. 将CP-nets图的节点和边在界面上绘制出来。可以根据节点的位置、大小和偏好值等属性来绘制节点,使用合适的线条来连接相邻节点。 6. 添加交互功能,比如点击节点展开或关闭其下级节点。 7. 运行程序,根据输入的CP-nets图数据,显示出CP-nets导出图。 通过上述步骤,我们可以使用Java实现根据CP-nets图得到CP-nets导出图的功能。编写并运行程序后,我们可以在图形界面上直观地观察和分析CP-nets图的结构和偏好关系。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值