代码系列——keras.layers.Dot()解析

本文详细解析了Keras中的Dot层,介绍了其在模型融合中的作用。Dot层用于计算两个张量中对应样本的点乘,输出形状为(batch_size, 1)。参数axes指定点乘的轴,normalize选项可实现样本间余弦相似度计算。文章通过代码分析解释了Dot层的工作原理,包括张量的shape处理和实际的点乘操作,并给出了示例来说明计算过程。" 121597259,11617510,ASP.NET MVC初学者教程:构建首个项目,"['ASP.NET', 'MVC框架', 'C#语言', '后端开发', 'Microsoft技术']
摘要由CSDN通过智能技术生成

Dot类在keras的Merge中,根据Keras中文文档:https://keras-cn.readthedocs.io/en/latest/layers/merge/

Merge层提供了一系列用于融合两个层或张量的层对象或方法,以大写首字母开头的是Layer类,以小写字母开头的是张量的函数,张量函数内部其实调用了大写字母开头的层。Dot类源代码如下:

https://github.com/keras-team/keras/blob/61052bc1f1c141c5dba9f83a4af14322ec4e6d7c/keras/layers/merge.py#L494

先注意一点:keras中在一个Model中对张量操作时不考虑batch,都是基于单个样本的,比如定义输入张量时input=Input(H, W, C)并没有batch_size。

首先看一下类的定义:Dot层是计算两个张量中的样本间的点乘,因此两个基于batch的shape为(bacth_size, n)的张量a和b经过Dot层后输出的shape为(batch_size, 1),说明是batch中每一组对应的样本(也就是a[i]和b[i]这两个长度为n的向量)之间进行点乘。

class Dot(_Merge):

    """Layer that computes a dot product between samples in two tensors.


    E.g. if applied to a list of two tensors `a` and `b` of shape `(batch_size, n)`,

    the output will be a tensor of shape `(batch_size, 1)`

    where each entry `i` will be the dot product between

    `a[i]` and `b[i]`.

再看一下构造器内容:输入参数axes表示进行点乘的轴,可以是一个整数(两个样本要进行点乘的是同一个轴)也可以是整数的tuple/list(两个样本要进行点乘的轴不同);normalize表示是否在点乘前对axes进行L2-normalize,如果进行正则化(也就是样本在该轴上的向量元素平方和为1也就是单位向量),结果可以表示两样本间的余弦相似性。构造器中对axes进行了判断:是否为整数,是否为tuple或list。

   # Arguments

        axes: Integer or tuple of integers,

            axis or axes along whic
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值