私はケラスのリポジトリでexampleとして与えられたシャムネットワークを理解しようとしています。ラーダレイヤーがケラスでどのように機能するのか理解できませんか?
ネットワークは、次の行で、モデルへの出力としてラムダを追加する距離を
distance = Lambda(euclidean_distance, output_shape=eucl_dist_output_shape)([processed_a, processed_b])
他の二つの関数としてのλとして定義される
model = Model(input=[input_a, input_b], output=distance)
が定義される:
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)
今、私はこのラムダ層が次の層に何を伝えるのか理解できません。
Kerasがので、私は前の層からの入力関数によって処理され、所望の形状に出力として返される推測ラムダ
Lambda(function,output_shape,arguments)
として定義しています。 私によれば、関数euclidean distanceを適用すると、現在のバッチ内の各ペアの距離を表す行ベクトルが返されます。だから、このような結果は、今機能eucl_dist_output_shape
は、その形状を変えるだろう
batch_size * 1
ようなものになるだろうの寸法を、私は理解することができないのですが、この関数は、ここでやっているとそれが計算され、正確に何で、何ですかreturn (shape1[0],1)
この機能で達成できますか?