我想了解keras倉庫中作爲example給出的連體網絡。無法理解lambda層如何在keras中工作?
的網絡添加lambda作爲輸出該模型,通過下面的行
model = Model(input=[input_a, input_b], output=distance)
其中距離被定義爲lambda作爲
distance = Lambda(euclidean_distance, output_shape=eucl_dist_output_shape)([processed_a, processed_b])
另外兩個函數定義爲:
def euclidean_distance(vects):
x, y = vects
return K.sqrt(K.sum(K.square(x - y), axis=1, keepdims=True))
def eucl_dist_output_shape(shapes):
shape1, shape2 = shapes
return (shape1[0], 1)
現在我無法理解這個lambda層傳遞到下一層。
Keras定義lambda作爲
Lambda(function,output_shape,arguments)
所以我想從前面的層來的輸入由功能處理並返回,如所希望的形狀的輸出。 現在根據我應用的歐幾里得距離函數將返回一個行向量,表示當前批次中每對的距離。所以,這樣的結果的尺寸會是這樣的
batch_size * 1
現在的功能eucl_dist_output_shape
將改變它的形狀,我所無法理解到底是什麼是這個功能在這裏做什麼它是計算,什麼是return (shape1[0],1)
實現這個功能嗎?