1

Я обучил классификатор, и теперь я хочу передать любое изображение.Tensorflow Image Shape Error

Я использую библиотеку keras с Tensorflow в качестве бэкэнд.

Я получаю ошибку я не могу пройти

img_path = '/path/to/my/image.jpg' 

import numpy as np 
from keras.preprocessing import image 
x = image.load_img(img_path, target_size=(250, 250)) 

x = image.img_to_array(x) 
x = np.expand_dims(x, axis=0) 

preds = model.predict(x) 

Мне нужно, чтобы изменить свои данные, чтобы иметь None как первое измерение делать? Я смущен, почему Tensorflow ожидал бы None в качестве первого измерения?

Error when checking : expected convolution2d_input_1 to have shape (None, 250, 250, 3) but got array with shape (1, 3, 250, 250) 

Мне интересно, была ли проблема с архитектурой моей обученной модели?

редактировать: если я называю model.summary() отдавания convolution2d_input_1, как ...

enter image description here

Edit: я поиграться с предложением ниже, но используется NumPy транспонировать вместо ТФ - до сих пор, кажется, попав в такой же вопрос!

enter image description here

ответ

2

None совпадает с любым количеством. Обычно, когда вы передаете некоторые данные модели, ожидается, что вы пройдете тензор размеров: None x data_size, что означает, что первое измерение - это любое измерение и обозначает размер партии. В вашем случае проблема заключается в том, что вы проходите 250 x 250 x 3, и ожидается 3 x 250 x 250. Попробуйте:

x = image.load_img(img_path, target_size=(250, 250)) 
x_trans = tf.transpose(x, perm=[2, 0, 1]) 
x_expanded = np.expand_dims(x_trans, axis=0) 
preds = model.predict(x_expanded) 
+0

благодарности @sygi , Я дал это вихрь, но im поразил новую ошибку сейчас ... ValueError: Аргумент должен быть плотным тензором: - получил форму [250, 250, 3], но хотел [] - ok понял на партии размер, я предположил, потому что это было Нет, что вы могли бы дать ему размер партии (немного глупое предположение). Мне также интересно, стоит ли использовать numpy для изменения данных, а не tf? – YesIndeedy

+0

'ValueError: Аргумент должен быть плотным тензором: - получил форму [250, 250, 3], но хотел [] ' извините, чтобы сделать более читаемым – YesIndeedy

0

enter image description here

ИТАК с помощью обратной связи ром Sygi я думаю, что у меня есть половина ее решил,

Ошибка была на самом деле говорит, что мне нужно передать в моих измерениях, как [1, 250 , 250, 3], так что это было простое исправление; я должен сказать им, что не уверен, почему TF ожидает измерения в этом порядке, глядя на документы, которые не кажутся правильными, поэтому требуются дополнительные исследования.

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

Вместо транспонированного я, вероятно, пытаясь т вызова x_reshape = img.reshape ((1, 250, 250, 3)), в зависимости от того, что я узнать о порядке измерения в изменении для TS

спасибо за подсказки Sygi :)

 Смежные вопросы

  • Нет связанных вопросов^_^