CuDNNGRU的参数个数

Keras中CuDNNGRU(128),是说隐藏层有128个神经元,input层是67个神经元,那么这个时候的参数个数应该是(67*128+128 + 128*128+128) * 3 = 75648。这里confuse的地方就是有两个bias,两个bias是1406.1078v1的写法,CuDNNGRU实现的就是这个版本的GRU,公式是
it = σ(Wixt + Riht-1 + bWi + bRu)
rt = σ(Wrxt + Rrht-1 + bWr + bRr)
h't = tanh(Whxt + rt◦(Rhht-1 + bRh) + bWh)
ht = (1 - it)◦h't + it◦ht-1
相当于说为了写清楚整个结构,每个线性部分都会有一个偏置项,虽然这些偏置项是线性可加的,化简后就等于是训练一个偏置项,也就等价于1406.1078v3
Rt=σ(XtWxr+Ht1Whr+br),Zt=σ(XtWxz+Ht1Whz+bz),Rt=σ(XtWxr+Ht1Whr+br),Zt=σ(XtWxz+Ht1Whz+bz),
Rt=σ(XtWxr+Ht1Whr+br),Zt=σ(XtWxz+Ht1Whz+bz),Rt=σ(XtWxr+Ht1Whr+br),Zt=σ(XtWxz+Ht1Whz+bz),
Rt=σ(XtWxr+Ht1Whr+br),Zt=σ(XtWxz+Ht1Whz+bz),
Rt=σ(XtWxr+Ht1Whr+br),Zt=σ(XtWxz+Ht1Whz+bz),
这个就相当于是合并化简的,用上面的例子来说,会少3*128个参数

参考资料:











留言

熱門文章