teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

Carelessミスが重なりが重なり 入力のdimの設定を間違っていました。 今回修正にあたり、少しだけ見やすくしてみました。

2019/04/06 16:20

投稿

kuma1957
kuma1957

スコア12

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,4 @@
1
- [リンク内容](http://)大きなモデル一部を切り出して、load_weightsをby_nameで行ってす。
1
+ siame_resnet()の入力Dimが4096なのですが、入力データDim(4069,)にしていたのが大きな要因でした。夜遅くのDebugは禁で
2
- そこにLambdaで求めた値を入れたいのですが、ValueErrorがでてしまいます。
3
- 記述を変えてみたのですが、結果は同じで 力尽きて 皆さんの知恵を借りることにしました。よろしくお願いします。
4
2
 
5
3
  from keras import backend as K
6
4
  import tensorflow as tf
@@ -13,21 +11,22 @@
13
11
  x, y = vects
14
12
  return K.abs(x - y)
15
13
 
14
+ def model_lambda(x,y):
15
+ x_=tf.convert_to_tensor(x)
16
+ y_=tf.convert_to_tensor(y)
17
+ _xy_result=Lambda(euclidean_distance2)([x_,y_])
18
+ _xy_result = tf.reshape(_xy_result,((1,4096)))
19
+ result=seq_model(_xy_result)
20
+ return result
21
+
16
22
  def siame_resnet_():
17
23
  seq = models.Sequential()
18
- seq.add(Dense(1024, activation='sigmoid', input_shape=(4069,)))
24
+ seq.add(Dense(1024, activation='sigmoid', input_shape=(4096,)))
19
25
  seq.add(Dropout(0.20))
20
26
  seq.add(Dense(1024, activation='sigmoid', input_shape=(1024,)))
21
27
  seq.add(Dense(1, activation='sigmoid'))
22
28
  return seq
23
29
 
24
- x=tf.convert_to_tensor(feature_4096[j])
25
- y=tf.convert_to_tensor(pred[i])
30
+ 本体の関数読み出し
26
- xy_result=Lambda(euclidean_distance2)([x,y])
31
+ result=model_lambda(A,B)
27
-
28
- result = seq_model(xy_result)
32
+ _result=K.get_value(result)
29
-
30
- ValueError: Shape must be rank 2 but is rank 1 for 'sequential_1/dense_1/MatMul' (op: 'MatMul') with input shapes: [4096], [4069,1024].
31
-
32
- ちなみに
33
- xy_result.shape → (4096,)になっています。