hc
hc
论文attention中的out product是外积的意思吗? 论文中attention是将 [hist, target_expand, out product(hist,target_expand)]做了个拼接。而paddle中代码实现却是concat = fluid.layers.concat( [hist, target_expand, hist - target_expand, hist * target_expand], axis=2) 请问out product(hist,target_expand)和hist - target_expand, hist * target_expand之间存在什么关联?谢谢
rank目录下涉及到DNN组装的模型全部存在一个bug,在dnn组网中激活函数没有加入到网络中,如下所示: ```python acts = ["relu" for _ in range(len(self.layer_sizes))] + [None] self._mlp_layers = [] for i in range(len(self.layer_sizes)): # + 1): linear = paddle.nn.Linear( in_features=sizes[i], out_features=sizes[i + 1], weight_attr=paddle.ParamAttr( initializer=paddle.nn.initializer.Normal(...
1. 当前现状 paddle在实现MMoe时,在每个expert权重初始化时用了常量初始化,weight_attr=nn.initializer.Constant(value=0.1), bias_attr=nn.initializer.Constant(value=0.1), 详情参见https://github.com/PaddlePaddle/PaddleRec/blob/master/models/multitask/mmoe/net.py#L37 2. 存在的问题 因为在mmoe中每个expert喂入的样本(特征)是一样的,之所以每个expert可以学到不同的东西,核心原因在于数据存在multi-view,但这是有前提条件的,即每个expert的权重初始化是要不一样的,可以随机可以其他,总之不能相同。而paddle在实现时恰恰犯了这个致命错误,paddle把每个expert权重都初始化成了1,这样会导致每个expert最终学到的网络参数趋向一样,也就意味着每个expert失去了difference,导致最终失去了ensemble的意义,gate的初始化也有问题,但问题没有expert严重。 3. 验证 我基于paddle公布的代码和数据,训练完成后,把每个expert的权重打出来,结果证实了2中陈述的问题,详情参见: ('net.state_dict(): ', OrderedDict([('expert_0.weight', Parameter containing: Tensor(shape=[499, 16], dtype=float32, place=CPUPlace, stop_gradient=False, [[0.08814958, 0.08814958, 0.08814958, ..., 0.08814958, 0.08814958, 0.08814958], [0.09953024, 0.09953024,...
hi, xdeepfm代码在实现CIN网络结构(代码:https://github.com/PaddlePaddle/PaddleRec/blob/master/models/rank/xdeepfm/net.py#L130) 时,卷积部分Conv2D中的in_channels参数设置是否和原论文不太一致? 原论文如下图所示:  以下为个人对原论文中(b)部分的示意图理解,经过(a)得到的Z^{k+1}的维度为m * H_k * D,在(b)中为了压缩,使用了H_{k+1}个大小为H_k*m的向量(矩阵)做了一波点乘内积,此时得到是H_{k+1}个向量的第一个元素,因为Z^{k+1}的channel为D,因此最终得到的x^{k+1}为H_{k+1}个D维向量。 如上所述,卷积in_channels应该为D,即embedding维度,而不是paddle版本实现xdeepfm中的last_s * self.num_field,请确认。
DCN代码中的cross网络部分:https://github.com/PaddlePaddle/PaddleRec/blob/master/models/rank/dcn/net.py#L112 def _cross_layer(self, input_0, input_x): input_w = paddle.multiply(input_x, self.layer_w) input_w1 = paddle.sum(input_w, axis=1, keepdim=True) input_ww = paddle.multiply(input_0, input_w1) input_layer_0 = paddle.add(input_ww, self.layer_b) input_layer = paddle.add(input_layer_0, input_x) return input_layer, input_w 这段代码,每一层cross的参数w都是共享的self.layer_w,是否与原论文中不一致?看愿论文中的公式...