私はkerasでラムダレイヤーを使って2つのベクトルのユークリッド距離を返そうとしています。コードは次のとおりkeras/theano-λの定数を返す方法
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はバッチです。出力は理論上は定数です。私は、これはラムダ層のoutput_shapeによって引き起こされると考え
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)]]
:私はこのモデルを実行すると、エラーが発生します
model = Model(inputs=[probe_input_car,probe_input_sign,gallary_input_car,gallary_input_sign], outputs=dist, name='fcn')`
:そして、私は次のように、このモデルの出力としてdistのを使用したいです。レイヤのoutput_shapeをどのように設定すればよいですか?私はtheanoをバックエンドとして使用するので、output_shape自体を計算することはできません。 それがoutput_shapeによって引き起こされていない場合。エラーはどこですか?
このモデルを「実行する」行を投稿できますか? –