【发布时间】:2018-12-29 03:14:38
【问题描述】:
我想创建一个带有 Tensorflow 背景的 Keras 模型,它返回一个范数为 1 的向量。为此,模型以下一层结束:
main_network = Lambda(lambda t: K.l2_normalize(t, axis=1))(x)
我还创建了一个测试,其中我只创建模型,并且在没有训练的情况下进行随机预测以检查输出是否具有范数 1。但测试失败:
AssertionError: 0.37070954 != 1 within 0.1 delta
因此 Lambda 层无法正常工作,因为它没有对输出进行标准化。我为轴参数尝试了不同的值,并且使用所有可能的值,测试失败。但我失踪了吗?
【问题讨论】:
-
你是怎么做出这个断言的?
-
self.assertAlmostEqual(np.linalg.norm(vector), 1, delta=0.1) 其中vector是预测的结果。
-
@RodrigoSernaPérez np.linalg.norm 返回 l2-norm 而不是“l2-normalize”。根据我在答案中的示例,对于列表 [3, 1, 4, 3, 1] np.linalg.norm reutrn 6.
-
linalg.norm应该返回batch_size。所以出了点问题,但它可能在代码中的其他地方。
标签: python keras neural-network