Todas as matrizes de entrada e matrizes de destino devem ter o mesmo número de amostras. "- Formação em uma única imagem para verificar se o modelo funciona em keras

votos
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)

Oi, acima é o meu código onde eu estou tentando segmento objeto candidato através do modelo gráfico,

eu quero verificar se há uma entrada se o código funciona ou não, então eu estou dando-lhe uma imagem de saída da imagem de entrada e,

Mas keras me dá um erro - Todas as matrizes de entrada e matrizes de destino devem ter o mesmo número de amostras.

Alguém pode me dizer o que eu faço para ver se o meu modelo é executado .i estou treinando em uma entrada para que eu possa verificar se o meu modelo é correto e iniciar o treinamento, existe alguma outra maneira de fazê-lo?

Publicado 10/03/2016 em 11:19
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

Na parte onde você fazer isso - history = graph.fit({'input1':inputvgg, 'output1':outputmodel}, nb_epoch=1)inputvgg e outputmodel deve ter mesmo número de dimensões.

Respondeu 27/07/2016 em 11:17
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more