首页 > 解决方案 > 级联向量的 Keras L2 归一化

问题描述

我正在尝试在 Keras 中构建一个网络,该网络应分别输出两个维度为 3 和 4 的单位长度向量,并且目前正在使用维度为 7 的最终密集层来实现这一点。我现在的问题是,我现在知道如何在此之后添加一个图层,分别标准化两个向量的长度。据我了解,通常可以使用类似的东西来规范化矢量输出

l2_norm = Lambda(lambda  x: K.l2_normalize(x,axis=1))(prevDense)

但不清楚如何改变这两个分别对待两个“半”。有任何想法吗?

标签: tensorflowmachine-learningkeraskeras-layer

解决方案


似乎您想使用Lambda层先对张量进行切片,然后再进行规范化。在这种情况下,您可以执行以下操作:

# slicing the tensors
slice1 = Lambda(lambda x: x[:,:4])(prevDense)
slice2 = Lambda(lambda x: x[:,:3])(prevDense)

l2_norm_slice1 = Lambda(lambda  x: K.l2_normalize(slice1,axis=1))(slice1)
l2_norm_slice2 = Lambda(lambda  x: K.l2_normalize(slice2,axis=1))(slice2)

希望这可以帮助!


推荐阅读