我刚开始使用Sklearn(MLPRegressor)和Keras(顺序,带有密集层)。
今天我读了this论文,描述了如何使用余弦相似度而不是点积来提高性能。这基本上说,如果我们用f(w^Tx)
替换f((w^Tx)/(|x||w|))
,即我们不仅仅将点积提供给激活函数,但我们将其标准化,我们会获得更好更快的性能。
有没有办法在Python中执行此操作,特别是在SKlearn(或其他)的MLPRegressor或Keras中? (也许是TensorFlow?)
答案 0 :(得分:1)
Sklearn使用预建网络,所以没有。我也不认为它在Keras中是可能的,因为它有预先构建的层。
确实可以在Tensorflow中实现。请注意,在TF中,您可以显式定义图层。
例如在this snippet中,您需要在第25行添加规范化,即您可以通过适当的输入行规范划分输出行tf.nn.sigmoid(tf.matmul(X, w_1))
(您可以使用tf.nn.l2_normalize
获取它们与dim=1
)