Как исправить ошибку «не удается преобразовать массив размером 30233088 в форму (1,64,64,3)» в python?

#python #image #reshape

#python #изображение #изменить

Вопрос:

Я преобразовываю изображение в формат rgb, после чего хочу изменить его размер до интересующего меня размера, но появляется ошибка ниже. Я попробовал следующую функцию:

 def predict(graph):
    im = Image.open("image.jpeg")
    mat = np.asarray(im.convert('RGB'))  
    mat = mat.reshape(1,64,64,3)
    mat = mat / 255.
    x = graph.get_tensor_by_name("input_x:0")
    outlayer = graph.get_tensor_by_name("outlayer:0")
    prob = graph.get_tensor_by_name("probability:0")
    predict = graph.get_tensor_by_name("predict:0")

    with tf.Session(graph=graph) as sess:
        np.set_printoptions(suppress=True)
        out, prob, pred = sess.run([outlayer, prob,predict],feed_dict={x:mat})
        print(out)
        print(prob)
        print(pred)

if __name__=="__main__":
    graph = load_model()
    predict(graph)
  

но я не могу избавиться от этой ошибки

 ---> 18         mat = mat.reshape(1,64,64,3)
     19         mat = mat / 255.
     20         x = graph.get_tensor_by_name("input_x:0")

ValueError: cannot reshape array of size 30233088 into shape (1,64,64,3)

  

Комментарии:

1. размеры изменения формы должны иметь то же количество элементов, что и исходное измерение. В вашем случае — 64*64*3 != 30233088 и, следовательно, ошибка. В вашем случае вам может потребоваться обрезать изображение, а затем изменить его форму.