2016-03-10 1 views
1
def obcandidate(inputvgg,outputmodel): 

    graph = Graph() 

    graph.add_input(name = 'input1', input_shape = (512, 14, 14)) 

    graph.add_node(Convolution2D(512, 1, 1), name = 'conv11', input = 'input1') 

    graph.add_node(Convolution2D(512, 14, 14), name = 'conv112', input = 'conv11') 

    graph.add_node(Flatten(), name = 'flatten11', input = 'conv112') 

    graph.add_node(Dense(3136), name = 'dense1', input = 'flatten11') 

    graph.add_node((Activation('relu')), name = 'relu', input = 'dense1') 

    graph.add_node(Reshape((56,56)), name = 'reshape', input = 'relu') 

    sgd = SGD(lr = 0.001, decay = .00005, momentum = 0.9, nesterov = True) 

    graph.add_output(name = 'output1', input = 'reshape') 

    graph.compile(optimizer = sgd, loss = { 

    'output1': 'binary_crossentropy'}) 

    print 'compile success' 

    history = graph.fit({'input1':inputvgg, 'output1':outputmodel}, nb_epoch=1) 

    predictions = graph.predict({'input1':inputvgg}) 

    return graph 







"" 

"main function" 

"" 

if __name__ == "__main__": 

    model = VGG_16('vgg16_weights.h5') 

    sgdvgg = SGD(lr = 0.1, decay = 1e-6, momentum = 0.9, nesterov = True) 

    model.compile(optimizer = sgdvgg, loss = 'categorical_crossentropy') 

    finaloutputmodel = outputofconvlayer(model) 

    finaloutputmodel.compile(optimizer = sgdvgg, loss = 'categorical_crossentropy') 

    img = cv2.resize(cv2.imread('000032.jpg'), (224, 224)) 

    mean_pixel = [103.939, 116.779, 123.68] 

    img = img.astype(np.float32, copy = False) 

    for c in range(3): 

    img[: , : , c] = img[: , : , c] - mean_pixel[c] 

    img = img.transpose((2, 0, 1)) 

    img = np.expand_dims(img, axis = 0) 

    imgout = np.asarray(cv2.resize(cv2.imread('000032seg.png',0), (56, 56))) 

    imgout[imgout!=0]=1 

    out=imgout 

    inputvgg = np.asarray(finaloutputmodel.predict(img)) 

    obcandidate(inputvgg,out) 

Salut, ci-dessus est mon code où je suis en train de segmenter candidat objet à travers le graphique modèle,Tous les tableaux d'entrée et des réseaux cibles doivent avoir le même nombre d'échantillons. »- formation sur une seule image pour vérifier si le modèle fonctionne dans keras

je veux vérifier une entrée si le code fonctionne ou pas si je le donne une image d'entrée et l'image de sortie,

Mais keras me donne une erreur - « Tous les tableaux d'entrée et des réseaux cibles doit avoir le même nombre d'échantillons. "

Quelqu'un peut-il dire moi qu'est-ce que je fais pour voir si mon modèle fonctionne. Je m'entraîne sur une entrée afin que je puisse vérifier que mon modèle est correct et commencer la formation, y at-il une autre manière de le faire?

Répondre

1

Dans la partie où vous faites ceci - history = graph.fit({'input1':inputvgg, 'output1':outputmodel}, nb_epoch=1) inputvgg et outputmodel doivent avoir le même nombre de dimensions.