def build_net(img_shape):? ? """? ? :type img_shape: tuple. Shape of input image. Here is(1,height, width). 1 because pgm file only has one channel.? ? :rtype:tensorflow Sequential? ? """? ? model = tf.keras.Sequential()? ? # convolution layer 1? ? model.add(tf.keras.layers.Conv2D(filters = 16, kernel_size = 3, strides = 1, activation = "relu", input_shape = img_shape, data_format = "channels_first"))? ? model.add(tf.keras.layers.MaxPool2D(pool_size = 2))? ? model.add(tf.keras.layers.Dropout(0.1))? ? # convolution layer 2? ? model.add(tf.keras.layers.Conv2D(filters = 32, kernel_size = 3, strides = 1))? ? model.add(tf.keras.layers.MaxPool2D(pool_size = 2))? ? model.add(tf.keras.layers.Dropout(0.1))? ? model.add(tf.keras.layers.Flatten())? ? model.add(tf.keras.layers.Dense(1024))? ? model.add(tf.keras.layers.Dropout(0.25))? ? model.add(tf.keras.layers.Dense(512, activation='relu'))? ? # deep face mentioned that there are 67 points to detect on a human face, so use 70 features.? ? model.add(tf.keras.layers.Dense(70, activation='relu'))? ? print(model.summary())? ? return model并定義 adist來計算兩個輸出向量之間的距離。im1_features = build_net(input_dim)im2_features = build_net(input_dim)dist = tf.keras.layers.Lambda(lambda tensors: tf.keras.backend.abs[tensors[0] - tensors[1]])([im1_features, im2_features])錯誤發生在dist? File "e:\School\AIAS\proj\build_model.py", line 102, in <lambda>? ? dist = tf.keras.layers.Lambda(lambda tensors: tf.keras.backend.abs[tensors[0] - tensors[1]])([im1_features, im2_features])TypeError: unsupported operand type(s) for -: 'Sequential' and 'Sequential'如何使函數build_net返回向量而不是 Sequential 對象?
1 回答

交互式愛情
TA貢獻1712條經驗 獲得超3個贊
嘗試tf.keras.abs
這樣調用:
tf.keras.backend.abs( x )
不是
tf.keras.backend.abs[ x ]
它是一個函數,而不是一個數組。這是否解決了您的問題?
添加回答
舉報
0/150
提交
取消