2016-03-10 7 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) 

Привет, выше мой код, где я пытаюсь сегментировать кандидата объекта по графику модель,Все входные массивы и целевые массивы должны иметь одинаковое количество выборок ». - Обучение по одному изображению, чтобы проверить, работает ли модель в keras

я хочу, чтобы проверить на один вход, если код работает или не так, я даю ему один входной файл и выходному изображение,

Но keras дает мне ошибку - «Все входные массивы и целевые массивы должно иметь одинаковое количество образцов ».

Может кто-нибудь сказать мне, что я делаю, чтобы увидеть, работает ли моя модель. Я тренируюсь на одном входе, чтобы я мог проверить, что моя модель правильная и начать обучение, есть ли другой способ сделать это?

ответ

1

В той части, где вы это делаете - history = graph.fit({'input1':inputvgg, 'output1':outputmodel}, nb_epoch=1) inputvgg и outputmodel должны иметь одинаковое количество измерений.