我想在keras中使用lambda層來返回兩個向量的歐幾里得距離。代碼是:keras/theano-如何在lambda中返回常量
def distance(x):
a=x[0]
b=x[1]
dist=np.linalg.norm(a-b)
return dist
dist=Lambda(distance,output_shape=(1,1)name='dist')([x,y])
該圖層的輸入是兩個向量(100,1,8192)。 100是批次。理論上輸出是一個常數。我想用DIST因爲這種模式類似的輸出:
model = Model(inputs=[probe_input_car,probe_input_sign,gallary_input_car,gallary_input_sign], outputs=dist, name='fcn')`
當我運行這個模型中,會出現一個錯誤:
ValueError: Input dimension mis-match. (input[0].shape[2] = 1, input[1].shape[2] = 8192)
Apply node that caused the error: Elemwise{Composite{EQ(i0, RoundHalfToEven(i1))}}(/dist_target, Elemwise{Composite{sqrt(sqr(i0))}}.0)
Toposort index: 92
Inputs types: [TensorType(float32, 3D), TensorType(float32, 3D)]
Inputs shapes: [(100, 1, 1), (100, 1, 8192)]
Inputs strides: [(4, 4, 4), (32768, 32768, 4)]
Inputs values: ['not shown', 'not shown']
Outputs clients: [[Sum{acc_dtype=int64}(Elemwise{Composite{EQ(i0, RoundHalfToEven(i1))}}.0)]]
我認爲這是由拉姆達層的output_shape引起。我應該如何設置圖層的output_shape。因爲我使用theano作爲後端,它不能計算output_shape本身。 如果它不是由output_shape引起的。錯誤在哪裏?
你可以發佈你「運行」這個模型的路線嗎? –