ValueError:“连接”层需要具有匹配形状的输入

时间:2018-11-16 18:17:37

标签: python keras

{right-click} > Properties

此代码中显示的错误如下

输入了形状:%s'%(input_shape))

ValueError: from fr_utils import * from inception_blocks_v2 import * def triplet_loss(y_true, y_pred, alpha=0.3): """ Implementation of the triplet loss as defined by formula (3) Arguments: y_pred -- python list containing three objects: anchor -- the encodings for the anchor images, of shape (None, 128) positive -- the encodings for the positive images, of shape (None, 128) negative -- the encodings for the negative images, of shape (None, 128) Returns: loss -- real number, value of the loss """ anchor, positive, negative = y_pred[0], y_pred[1], y_pred[2] # Step 1: Compute the (encoding) distance between the anchor and the positive, you will need to sum over axis=-1 pos_dist = tf.reduce_sum(tf.square(tf.subtract(anchor, positive)), axis=-1) # Step 2: Compute the (encoding) distance between the anchor and the negative, you will need to sum over axis=-1 neg_dist = tf.reduce_sum(tf.square(tf.subtract(anchor, negative)), axis=-1) # Step 3: subtract the two previous distances and add alpha. basic_loss = tf.add(tf.subtract(pos_dist, neg_dist), alpha) # Step 4: Take the maximum of basic_loss and 0.0. Sum over the training examples. loss = tf.reduce_sum(tf.maximum(basic_loss, 0.0)) return loss def main(): FRmodel = faceRecoModel(input_shape=(3, 96, 96)) FRmodel.compile(optimizer='adam', loss=triplet_loss, metrics=['accuracy']) FRmodel.save('face-rec_Google.h5') print_summary(model) main() 层需要输入(除了concat轴以外)具有匹配的形状。输入了以下形状:[[无,128、12、192),(无,32、12、192),(无,32、12、102),(无,64、12、192)]

我尝试在互联网上查找他的错误,但没有找到解决方法

1 个答案:

答案 0 :(得分:0)

您只需要更改图像的表示形式。我猜想,您的图像表示为3维数组 [行] [cols] [通道] ,其中颜色通道位于最后一维。这段代码会将颜色通道移至第一维 [channels] [rows] [cols]

from keras import backend as K
K.set_image_data_format('channels_first')