Все входные массивы и целевые массивы должны иметь одинаковое количество образцов."- Обучение на одном изображении, чтобы проверить, работает ли модель в кератах
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 дает мне ошибку - "Все входные массивы и целевые массивы должны иметь одинаковое количество выборок".
Может кто-нибудь сказать мне, что я должен сделать, чтобы увидеть, работает ли моя модель. Я тренируюсь на одном входе, чтобы я мог проверить, правильна ли моя модель, и начать обучение, есть ли другой способ сделать это?
1 ответ
В той части, где вы делаете это - history = graph.fit({'input1':inputvgg, 'output1':outputmodel}, nb_epoch=1)
inputvgg и outputmodel должны иметь одинаковое количество измерений.